我正在尝试运行我的第一个HelloWorld Jersey项目,阅读一堆教程,我认为理论上它应该可以工作但当然我做错了,页面给了我404错误。 这就是我所拥有的:
我开始使用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>
然后我还添加了一个非常小的类来获得一些Jersey注释:
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";
}
}
我还在web.XML文件中注册了Jersey:
<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>
注意:那里已经创建了一些,我还没有碰过它们。他们还在那里。
因此,使用此配置,我执行了Run On Server并转到
http://localhost:8080/JerseyREST/rest/hello
但是得到了令人讨厌的HTTP状态404 - / JerseyREST / jerseyrest / rest / hello错误。我无法弄清楚我做错了什么。 我看过的任何建议或地点?
非常感谢。
答案 0 :(得分:1)
我按照此链接实施了我的第一个Jersey Web服务:REST in Java 我在Tomcat v7.0上运行它,它工作正常。你在Tomcat上试过吗?如果没有,我建议你尝试一下。有时我发生了永久性的404错误。为了修复错误,我删除了Tomcat并创建了一个新的服务器向导,然后它工作正常。
正如@Tom所说,它可能与"application/plain"
有关。请改用MediaType.TEXT_PLAIN
。
您需要在/ WEB-INF / lib /下添加这些jar文件:
asm-3.1
,jackson-core-asl-1.9.2
,jackson-jaxrs-1.9.2
,jackson-mapper-asl-1.9.2
,jackson-xc-1.9.2
,jersey-client-1.11
,jersey-core-1.11
,jersey-json-1.11
,{{ 1}},jersey-server-1.11
,jersey-servlet-1.11
和jettison-1.1
。
答案 1 :(得分:0)
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>JerseyREST</param-value>
param值应指向您创建类的文件夹。