在 Tomcat 8.5 上部署 Jersey 应用程序
Deploy Jersey application on Tomcat 8.5
我正在开发一个简单的应用程序,它使用 Jersey as framework to build the API and Jackson 来处理 JSON。
当我部署应用程序时,通过复制粘贴到 webapps/,我可以看到我的 index.jsp。尽管无法访问我创建的资源,但它始终显示 404 页面。没有显示错误,catalina 中没有事件。* 日志文件。
我很确定问题不在 java 代码中,因为它曾经使用 *.jar 包含方法。但我对此感到厌倦,想将其迁移到 maven 架构。
我不会 post 我的整个代码,但是 you can see it here。
为了让事情更简单,下面是我正在使用的依赖项列表:
- 球衣-json v1.19
- 球衣服务器 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
什么会导致此错误?我没有什么可遵循的,没有堆栈跟踪,没有错误消息,什么都没有。会不会是缺少某种依赖?
对此不太确定,但请尝试将 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 给你和想法
我真的希望这可以帮助你 :)
- 干掉
jersey-json
。那是 1.x,它会把你搞得一团糟
您需要的不仅仅是 jersey-server
。您还需要
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet</artifactId>
<version>2.25.1</version>
</dependency>
你应该摆脱你的 web.xml。您的 @ApplicationPath
配置注释不需要它。另外,您在 web.xml 中使用了非常旧的架构版本。我也不知道那会不会给你添麻烦。最好完全去掉 web.xml,除非你能找到更新的文件头。
我正在开发一个简单的应用程序,它使用 Jersey as framework to build the API and Jackson 来处理 JSON。
当我部署应用程序时,通过复制粘贴到 webapps/,我可以看到我的 index.jsp。尽管无法访问我创建的资源,但它始终显示 404 页面。没有显示错误,catalina 中没有事件。* 日志文件。
我很确定问题不在 java 代码中,因为它曾经使用 *.jar 包含方法。但我对此感到厌倦,想将其迁移到 maven 架构。
我不会 post 我的整个代码,但是 you can see it here。
为了让事情更简单,下面是我正在使用的依赖项列表:
- 球衣-json v1.19
- 球衣服务器 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
什么会导致此错误?我没有什么可遵循的,没有堆栈跟踪,没有错误消息,什么都没有。会不会是缺少某种依赖?
对此不太确定,但请尝试将 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 给你和想法 我真的希望这可以帮助你 :)
- 干掉
jersey-json
。那是 1.x,它会把你搞得一团糟 您需要的不仅仅是
jersey-server
。您还需要<dependency> <groupId>org.glassfish.jersey.containers</groupId> <artifactId>jersey-container-servlet</artifactId> <version>2.25.1</version> </dependency>
你应该摆脱你的 web.xml。您的
@ApplicationPath
配置注释不需要它。另外,您在 web.xml 中使用了非常旧的架构版本。我也不知道那会不会给你添麻烦。最好完全去掉 web.xml,除非你能找到更新的文件头。