部署到 Tomcat 的 JAX-RS Web 应用程序返回 HTTP 404 错误,而它在 Eclipse 中工作正常

问题描述 投票:0回答:1

我正在尝试使用 Apache CXF 实现在 Tomcat 上部署 Jax-RS Web 应用程序。它是一个简单的网络应用程序,用于大学练习。当我使用 Eclipse 执行此操作时,一切正常,应用程序被识别,我可以使用 Web 浏览器访问它。如果我尝试发起一场战争并以任何其他方式部署它,它会被识别,但我无法以任何方式到达它,我错过了什么?

service implementation

service interface, application class 我的 webapps 目录中的目录结构是: structure

我尝试访问“localhost:8080/es4.3/eshop/items”的网络应用程序 但我收到此错误: error

我使用旧版本的 Tomcat,因为这是我们老师告诉我们的,因为 Apache CXF 和 jax-ws 之间由于迁移到 jakarta 而存在一些不兼容性

tomcat jax-rs http-status-code-404
1个回答
0
投票

我想我现在已经找到了这个问题的答案。

在另一个使用 Jersey 的实现中,我遇到了同样的问题,但是通过研究 tomcat 的工作原理,我设法解决了它。

我没有正确理解 Tomcat 是什么,所以对于那些分享这个问题的人,我会去寻求完整的解释。

基本上 Tomcat 只是一个 Servlet 容器,因此它根本不支持 JAX-RS,也不支持完整的 JavaEE 或 JakartaEE,而仅支持 Servlet 规范。

因此 Jersey 提供了一个所谓的“jersey-servlet”,这个 servlet(您可以将其添加到项目中,例如将其添加到项目依赖项中)它会自动从 Tomcat 中识别(因为我认为 Tomcat 的最新实现)从Tomcat 8开始,支持Servlet 3.0规范,该规范提供了一组注释来自动配置和启动任何容器中的servlet)。然后,这个 servlet 负责“管理应用程序的 jax-rs 部分”,管理 http 请求并将它们路由到使用 jax-rs 注释进行注释的正确服务。

所以,在之前的练习中,我认为我错过了 CXF 的“jersey-servlet”等效项。

© www.soinside.com 2019 - 2024. All rights reserved.