【发布时间】:2015-03-03 11:36:41
【问题描述】:
好吧,我真的不知道我可以使这个测试用例变得多么简单。我在所有方面都拥有最少的代码,但它在 Jersey 1.x 中工作并且在 Glassfish 版本中失败。谁能解释一下我做错了什么?
“失败”和“不工作”是指,当我将它放在 Tomcat 容器中并尝试在浏览器中点击它时,第一个版本成功,但第二个版本失败。
@Path("/service")
public class MyService {
@GET
@Path("/test")
public String test() {
return "Yay!";
}
}
... 在 Jersey 1.x 中使用 web.xml ...
<servlet>
<servlet-name>jersey-servlet</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>my.service.package</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>jersey-servlet</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
...只需为 Glassfish 替换两个字符串,整个事情就会中断。
<servlet>
<servlet-name>jersey-servlet</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>my.service.package</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>jersey-servlet</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
泽西岛 1.x 的 pom.xml
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-server</artifactId>
<version>1.18.3</version>
</dependency>
...对于 2.x ...
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-server</artifactId>
<version>2.14</version>
</dependency>
【问题讨论】:
-
也许您可以提供更多关于正在发生的事情的详细信息。 “整个事情都坏了”不是很具有描述性。
-
@Rob 是的,对不起。我的意思是用最简单的方式:使用第一个版本,我可以在浏览器中点击它(localhost:8080/project/rest/service/test),而使用第二个版本我不能。我会更新问题。
-
发布导致此问题的依赖开关
-
尝试使用依赖from this post
-
@peeskillet 哇,成功了!太感谢了!我有点担心,当我通过
Client调用其他服务时,它不会工作(因为它不是jersey-server工件),但这至少让我继续前进。
标签: java maven jersey web.xml jersey-2.0