2016-02-26 195 views
-1

我正在尝试学习如何使用jersey & servlet创建REST服务器。 我参考this的例子。这是早些时候运行,但不再。早些时候,我用导出战争文件,然后使用命令行& starcat了tomcat。后者我在eclipse中添加了服务器,并开始直接运行,网址工作,然后突然停止工作。页未找到404 Apache Tomcat

我得到几乎每次和404错误,但昨天我重新启动服务器,常德一些settings.Not肯定我做了什么之后,再次网址工作。今天我打开了日食,我获得了404的收益。

我认为可能有一些与tomcat安装有关的问题。我是servlet和tomcat的新手。

的web.xml

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 
    id="WebApp_ID" version="3.0"> 
    <display-name>com.aarfid.restserver</display-name> 
    <servlet> 
     <servlet-name>Jersey RESTful Application</servlet-name> 
     <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class> 
     <init-param> 
      <param-name>jersey.config.server.provider.packages</param-name> 
      <param-value>com.aarfid.restserver</param-value> 
     </init-param> 
     </servlet> 
    <servlet-mapping> 
    <servlet-name>Jersey RESTful Application</servlet-name> 
     <url-pattern>/rest/*</url-pattern> 
    </servlet-mapping> 
</web-app> 

项目结构

enter image description here

服务器设置

enter image description here

我已经提到

Tomcat 7 keeps giving me a 404. What am I doing wrong?

HTTP Status 404 - The requested resource (/) is not available

编辑

而且http://localhost:8080也给予404错误,而日食表明服务器已启动。

EDIT 2 Tomcat的日志

Feb 26, 2016 2:17:33 AM org.apache.tomcat.util.digester.SetPropertiesRule begin 
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:WebProject' did not find a matching property. 
Feb 26, 2016 2:17:33 AM org.apache.catalina.startup.VersionLoggerListener log 
INFO: Server version:  Apache Tomcat/7.0.68 
Feb 26, 2016 2:17:33 AM org.apache.catalina.startup.VersionLoggerListener log 
INFO: Server built:   Feb 8 2016 20:25:54 UTC 
Feb 26, 2016 2:17:33 AM org.apache.catalina.startup.VersionLoggerListener log 
INFO: Server number:   7.0.68.0 
Feb 26, 2016 2:17:33 AM org.apache.catalina.startup.VersionLoggerListener log 
INFO: OS Name:    Windows 8.1 
Feb 26, 2016 2:17:33 AM org.apache.catalina.startup.VersionLoggerListener log 
INFO: OS Version:   6.3 
Feb 26, 2016 2:17:33 AM org.apache.catalina.startup.VersionLoggerListener log 
INFO: Architecture:   amd64 
Feb 26, 2016 2:17:33 AM org.apache.catalina.startup.VersionLoggerListener log 
INFO: Java Home:    C:\Program Files\Java\jre7 
Feb 26, 2016 2:17:33 AM org.apache.catalina.startup.VersionLoggerListener log 
INFO: JVM Version:   1.7.0_79-b15 
Feb 26, 2016 2:17:33 AM org.apache.catalina.startup.VersionLoggerListener log 
INFO: JVM Vendor:   Oracle Corporation 
Feb 26, 2016 2:17:33 AM org.apache.catalina.startup.VersionLoggerListener log 
INFO: CATALINA_BASE:   C:\RachitaData\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0 
Feb 26, 2016 2:17:33 AM org.apache.catalina.startup.VersionLoggerListener log 
INFO: CATALINA_HOME:   C:\RachitaData\apache-tomcat-7.0.68-windows-x64\apache-tomcat-7.0.68 
Feb 26, 2016 2:17:33 AM org.apache.catalina.startup.VersionLoggerListener log 
INFO: Command line argument: -Dcatalina.base=C:\RachitaData\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0 
Feb 26, 2016 2:17:33 AM org.apache.catalina.startup.VersionLoggerListener log 
INFO: Command line argument: -Dcatalina.home=C:\RachitaData\apache-tomcat-7.0.68-windows-x64\apache-tomcat-7.0.68 
Feb 26, 2016 2:17:33 AM org.apache.catalina.startup.VersionLoggerListener log 
INFO: Command line argument: -Dwtp.deploy=C:\RachitaData\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps 
Feb 26, 2016 2:17:33 AM org.apache.catalina.startup.VersionLoggerListener log 
INFO: Command line argument: -Djava.endorsed.dirs=C:\RachitaData\apache-tomcat-7.0.68-windows-x64\apache-tomcat-7.0.68\endorsed 
Feb 26, 2016 2:17:33 AM org.apache.catalina.startup.VersionLoggerListener log 
INFO: Command line argument: -Dfile.encoding=Cp1252 
Feb 26, 2016 2:17:33 AM org.apache.catalina.core.AprLifecycleListener lifecycleEvent 
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files\Java\jre7\bin;C:\WINDOWS\Sun\Java\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files\Intel\WiFi\bin\;C:\Program Files\Common Files\Intel\WirelessCommon\;C:\Program Files\Java\jdk1.7.0_79\bin;C:\Program Files\Git\cmd;. 
Feb 26, 2016 2:17:33 AM org.apache.coyote.AbstractProtocol init 
INFO: Initializing ProtocolHandler ["http-bio-8080"] 
Feb 26, 2016 2:17:33 AM org.apache.coyote.AbstractProtocol init 
INFO: Initializing ProtocolHandler ["ajp-bio-8009"] 
Feb 26, 2016 2:17:33 AM org.apache.catalina.startup.Catalina load 
INFO: Initialization processed in 756 ms 
Feb 26, 2016 2:17:33 AM org.apache.catalina.core.StandardService startInternal 
INFO: Starting service Catalina 
Feb 26, 2016 2:17:33 AM org.apache.catalina.core.StandardEngine startInternal 
INFO: Starting Servlet Engine: Apache Tomcat/7.0.68 
Feb 26, 2016 2:17:33 AM org.apache.catalina.loader.WebappClassLoaderBase validateJarFile 
INFO: validateJarFile(C:\RachitaData\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\WebProject\WEB-INF\lib\javax.servlet-api-3.0.1.jar) - jar not loaded. See Servlet Spec 3.0, section 10.7.2. Offending class: javax/servlet/Servlet.class 
Feb 26, 2016 2:17:34 AM org.apache.catalina.startup.TldConfig execute 
INFO: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time. 
Feb 26, 2016 2:17:34 AM org.apache.coyote.AbstractProtocol start 
INFO: Starting ProtocolHandler ["http-bio-8080"] 
Feb 26, 2016 2:17:34 AM org.apache.coyote.AbstractProtocol start 
INFO: Starting ProtocolHandler ["ajp-bio-8009"] 
Feb 26, 2016 2:17:34 AM org.apache.catalina.startup.Catalina start 
INFO: Server startup in 1353 ms 

回答

0

试试这个:

<listener> 
     <listener-class> 
      org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap</listener-class> 
    </listener> 
    <servlet> 
     <servlet-name>resteasy-servlet</servlet-name> 
     <servlet-class> 
      org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher</servlet-class> 
     <init-param> 
      <param-name>com.sun.jersey.config.property.packages</param-name> 
      <param-value>com.aarfid.restserver</param-value> 
     </init-param> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 

    <servlet-mapping> 
     <servlet-name>resteasy-servlet</servlet-name> 
     <url-pattern>/*</url-pattern> 
    </servlet-mapping> 

</web-app> 

,如果它不能正常工作添加到您的问题,这是库使用和服务类...

结构类似:

src 
----main 
-------java 
--------------packages 
-------resourses 
-------webapp 
----------WEB-INF 
--------------web.xml 
+0

请检查我的编辑 - 甚至http:// localhost:8080正在给404 –

+0

你可以在启动时添加tomcat的日志吗? – 3vge

+0

该结构引用了maven,而原始消息中显示的结构是基本的Eclipse动态Web应用程序项目。 – simar

0

当收到404即使http://localhost:8080
检查您的Tomcat。 - 8080端口选择 - 去安装路径,或者你的Tomcat - 文件夹“的conf” /文件服务器。XML

存在(约70行),你应该找一些像

<Connector port="8080" protocol="HTTP/1.1" 
      connectionTimeout="20000" 
      redirectPort="8443" /> 

检查,什么是写有在Eclipse

  • :你是怎么开始你的项目? - 您的项目:“右键关联菜单” - >运行AS“上运行服务器”
+0

同样写在server.xml中 –

0

实际上,你要明白是怎么回事,服务器以及它是如何工作。 让我们清楚您的消息的一些要点

我正在尝试学习使用jersey & servlet创建REST服务器。

不是,你已经有服务器(你的事业中的tomcat),你想为其他服务提供服务。

休息服务是特殊形式的http请求的一般概念。

当服务器收到请求时,它会尝试为它查找处理程序。 所有处理程序都在web.xml或web项目描述符文件中定义。你必须在web.xml中只有一个处理器

重要线

<servlet-name>Jersey RESTful Application</servlet-name> 

<url-pattern>/rest/*</url-pattern> 

假设来处理请求哪个URL对应的URL模式

例子的servlet名为新泽西RESTful应用程序

good url 
http://localhost:8080/rest/author/34 

bad url 
http://localhost:8080  not found 
http://localhost:8080/author/34   not found 
http://localhhost:8080/who-is-that-man  not found 

另一点值得一提的是,Eclipse动态WebProject将分配WebContext相同的一个除非你明确指定了另一条路径(在创建项目的过程中,或者你可以在项目设置中改变它)。

这将很好的URL更改为

good url 
http://localhost:8080/WebProjectName/rest/author/34 

另一个问题可能是服务器的配置缓存,由于Eclipse有单独的文件夹为Tomcat服务器卡塔利娜。在这种情况下,它有助于清理tomcat服务器(我认为右键单击服务器,服务器应该停止,选择清理)或者只是删除并重新创建服务器。

+0

我删除了服务器并试图通过创建战争文件并手动启动tomcat。我现在可以运行它。但是当在eclipse中再次创建服务器时 - 我再次获得404 –

+0

检查是否使用相同的URL访问休息服务? – simar

+0

尝试将localhost替换为127.0.0.1或cpu IP地址,默认情况下,Tomcat绑定到cpu上的所有可用接口。最好的办法是明确设置接口tomcat必须绑定到server.xml配置文件 – simar

0

当我从Eclipse启动servlet在本地主机上的Tomcat上运行时,该URL中包含项目名称。假设我的项目名为Foo,index.html的URL将是http://localhost:8080/Foo/index.htmlhttp://localhost:8080/index.html返回404.你有没有尝试把项目名称放在URL中?

+0

顺便说一句,如果项目的war文件被部署到Tomcat容器(比如Elastic Beanstalk)上,则项目名称是* not * URL的一部分。 –