在Tomcat 8.5上部署Jersey应用程序

时间:2017-09-05 13:07:05

标签: java rest tomcat jersey

我正在开发一个简单的应用程序,它使用Jersey作为框架来构建API,使用Jackson来处理JSON。

当我部署应用程序时,通过复制&粘贴在webapps / ,我可以看到我的index.jsp。虽然我创建的资源不可访问,但它始终显示404页面。没有显示错误,而不是catalina的事件。*日志文件。

我非常确定问题不在于java代码,因为它曾经使用* .jar包含方法。但我已经厌倦了这一点,并希望将其迁移到maven架构。

我不会发布我的整个代码,但you can see it here

为了简化操作,下面是我使用的依赖项列表:

  • jersey-json v1.19
  • jersey-server v2.25.1
  • jersey-media-json-jackson v2.25.1
  • jackson-core v2.9.0
  • jackson-module-jaxb-annotations v2.9.0
  • jackson-annotations v2.9.0
  • jackson-databind v2.9.0
  • jackson-jaxrs-base v2.9.0
  • ackson-jaxrs-json-provider v2.9.0

什么可能导致此错误?我没有什么可以遵循,没有堆栈跟踪,没有错误消息,没有。难道是缺乏一些依赖吗?

2 个答案:

答案 0 :(得分:1)

  1. 摆脱jersey-json。那是1.x而且会搞砸你
  2. 您需要的不仅仅是jersey-server。您还需要

    <dependency>
        <groupId>org.glassfish.jersey.containers</groupId>
        <artifactId>jersey-container-servlet</artifactId>
        <version>2.25.1</version>
    </dependency>
    
  3. 你应该摆脱你的web.xml。您的@ApplicationPath配置注释不需要它。您还在web.xml中使用了非常旧的架构版本。我不知道这是否会让你感到困惑。最好除了完全删除web.xml,除非你能找到更新的文件头。

答案 1 :(得分:0)

不太确定,但尝试将servlet添加到web.xml中, 自从我上次使用球衣后,我发现与服务器进行通信是必要的

例如,这是我添加到web.xml

的内容
 <servlet>
    <servlet-name>jersey-serlvet</servlet-name>
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
    <init-param>
        <param-name>jersey.config.server.provider.packages</param-name>
        <param-value>"PACKAGE WHERE DO YOU HAVE YOUR CLASS"</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
 </servlet>
 <servlet-mapping>
    <servlet-name>jersey-serlvet</servlet-name>
    <url-pattern>/rest/*</url-pattern>
 </servlet-mapping>

请注意我正在使用Glassfish服务器而不是Tomcat(在“servlet-class”中),但是这个migth给你和想法 我真的希望这可以帮到你:)