2012-07-26 87 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> 

参数值应该指向您创建类的文件夹。