2012-07-26 92 views
3

我試圖運行我的第一個HelloWorld Jersey項目,閱讀其中的一堆教程,我認爲理論上它應該可以工作,但當然我做錯了那個頁面給我的東西一個404錯誤。 這裏是我的:獲取404錯誤來運行Jersey REST

我開始在Eclise中使用DynamicWebProject並使用插件將它轉換爲Maven項目。而這些添加到POM文件:

<dependency> 
    <groupId>com.sun.jersey</groupId> 
    <artifactId>jersey-core</artifactId> 
    <version>1.8</version> 
</dependency> 
<dependency> 
    <groupId>com.sun.jersey</groupId> 
    <artifactId>jersey-server</artifactId> 
    <version>1.8</version> 
</dependency> 
<dependency> 
    <groupId>com.sun.jersey</groupId> 
    <artifactId>jersey-json</artifactId> 
    <version>1.8</version> 
</dependency> 
<dependency> 
    <groupId>com.sun.jersey</groupId> 
    <artifactId>jersey-client</artifactId> 
    <version>1.8</version> 
</dependency> 
</dependencies> 

然後我還添加了一個非常小的類像這樣有一些州註釋:

import javax.ws.rs.GET; 
import javax.ws.rs.Path; 
import javax.ws.rs.Produces; 

@Path("/hello") 
public class HelloWorldResource { 

    @GET 
    @Produces("application/plain") 
    public String getMessage() { 
     // Forward request to service layer. 
     return "Hello World"; 
    } 
} 

,我在網上也註冊澤西這些。 XML文件:

<servlet> 
    <servlet-name>Jersey REST Service</servlet-name> 
    <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class> 
    <init-param> 
     <param-name>com.sun.jersey.config.property.packages</param-name> 
     <param-value>JerseyREST</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
    <servlet-name>Jersey REST Service</servlet-name> 
    <url-pattern>/rest/*</url-pattern> 
    </servlet-mapping> 

注意:已經有一些創建在那裏,我還沒有觸及它們。他們仍然在那裏。

所以這個配置我做了一個運行在服務器和去

http://localhost:8080/JerseyREST/rest/hello

,但得到一個討厭的HTTP狀態404 - 上/ JerseyREST/jerseyrest/REST /你好錯誤。我無法想象我做錯了什麼。 任何建議或地方,我看看?

非常感謝。

+0

我會先轉到您的服務器管理器應用程序(如果有),並查看應用程序是否已真正部署。我的另一個猜測是@Produces註釋有問題。我從來沒有聽說過「application/plain」MIME類型。 – toniedzwiedz 2012-07-26 15:27:32

+0

是的,它沒有在Tomcat Manager中列出:( – Bohn 2012-07-26 16:07:43

+0

然後檢查你的編譯輸出,你的項目肯定有什麼問題 – toniedzwiedz 2012-07-26 16:13:09

回答

1

我跟着這個鏈接來實現我的第一個Jersey Web服務:REST in Java 我在Tomcat v7.0上運行它,它工作正常。你在Tomcat上試過了嗎?如果不是的話,我建議你嘗試一下。有時候我發現我永遠得到了404錯誤。爲了解決這個錯誤,我刪除了Tomcat並創建了一個新的服務器嚮導,然後它工作正常。

由於@Tom表示可能與"application/plain"有關。改爲使用MediaType.TEXT_PLAIN

您需要添加在/ WEB-INF/lib中/這些jar文件: asm-3.1jackson-core-asl-1.9.2jackson-jaxrs-1.9.2jackson-mapper-asl-1.9.2jackson-xc-1.9.2jersey-client-1.11jersey-core-1.11jersey-json-1.11jersey-server-1.11jersey-servlet-1.11jettison-1.1jsr311-api-1.1.1

+0

是的,我昨天試圖效仿他的例子......但他說要將Jersey文件複製到該Lib文件夾中,我這樣做了,但仍然是我的Jersey註釋未解決,無法修復它,所以我說哦,我們使用pom ...你怎麼修好它的? – Bohn 2012-07-26 16:09:19

+1

您需要從Jersey主頁下載jar文件。我將在我的項目中添加jar文件的名稱到這個問題的結尾。 – Ali 2012-07-26 16:16:39

+1

這些是我複製到該Lib文件夾的三個JAR文件:jersey-server-1.12 asm-3.3.1 jersey-core-1.12 – Bohn 2012-07-26 16:19:50

0
<param-name>com.sun.jersey.config.property.packages</param-name> 
    <param-value>JerseyREST</param-value> 

參數值應該指向您創建類的文件夾。