【问题标题】:Jersey 1.x to 2.x: simple web.xml change, failing miserablyJersey 1.x 到 2.x:简单的 web.xml 更改,惨遭失败
【发布时间】: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


【解决方案1】:

使用下面的依赖项应该会引入启动和运行所需的所有依赖项。

<dependency>
    <groupId>org.glassfish.jersey.containers</groupId>
    <artifactId>jersey-container-servlet</artifactId>
    <version>2.14</version>
</dependency>

【讨论】:

    猜你喜欢
    • 2018-04-25
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    • 2021-03-03
    • 2023-03-11
    • 2017-01-28
    • 1970-01-01
    相关资源
    最近更新 更多