【发布时间】:2015-07-15 15:44:52
【问题描述】:
我是 jersey 的 rest web 服务新手,(tomcat)
我有一个HelloWorld 来源:(在RestApp 包中)
package com.ss.hh;
...
@Path("/hello")
public class HelloWorld {
@GET
@Produces(MediaType.TEXT_PLAIN)
public String getMessage(){
return "Hello jersey";
}
}
这里是web.xml:
<servlet>
<servlet-name>jersey-serlvet</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>com.ss.hh</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>jersey-serlvet</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
在pom.xml:
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-server</artifactId>
<version>2.19</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-servlet</artifactId>
<version>1.19</version>
</dependency>
为什么我无法在http://localhost:8080/hello 中收到Hello jersey 消息?
更新
我将jersey-servlet 替换为jersey-container-servlet-core 文件并更改web.xml 配置如下:
<servlet>
<servlet-name>Jersey REST Service</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.ss.hh</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Jersey REST Service</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
但它没有显示任何内容:http://localhost:8080/FirstRestApp/hello
FirstRestApp 是项目名称。
【问题讨论】:
-
您的
jersey-servlet和jersey-serverJAR 版本不同。尝试使用属于glassfishgroupId 的jersey-servlet。 mvnrepository.com/artifact/org.glassfish.jersey.containers/… -
另外,如果你想使用上面提到的 URL (
http://localhost:8080/hello),部署到 Tomcat 服务器的 WAR 应该在 ROOT 上下文中。为此,您需要清除 Tomcat 的 webapp 文件夹(包括 ROOT),并使用名称ROOT部署您的 WAR 文件。 -
@Rakesh 我将 jar 文件替换为
jersey-server,并将web.xml内容更改为updated section并且没有显示任何内容。 -
好吧,我尝试部署一个简单的 Jersey webapp,发现需要 5 个不同的依赖项。
jersey-server、jersey-client、jersey-common、jersey-container-servlet-core和javax.ws.rs-api。你可以试试这些,看看它是否有效。
标签: java rest maven intellij-idea jersey