2016-02-26 182 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的一部分。 –