Apache Tomee 8.0.6部署REST Web服务访问返回404问题求助
Tomee部署REST服务404问题解决方案
1. 补全包声明
你提供的两个类都没有定义package,默认包下的类不会被JAX-RS扫描器识别,需要给类添加合法的包声明,比如:
package com.example.demo;
2. 验证请求方法与路径
- 浏览器地址栏直接访问默认发送GET请求,你的接口声明了
@POST,会直接返回404/405错误,Postman请求时需要明确选择POST方法 - 确认war包部署后的上下文路径:如果war包名称为
test.war,上下文路径默认为test,结合@ApplicationPath("/test")和@Path("/queuecontent"),完整路径应为http://localhost:8080/test/test/queuecontent,末尾斜杠一般不影响匹配,可尝试去掉后访问
3. 检查JDK版本兼容性
Apache Tomee 8.0.6官方兼容的JDK版本范围为8~11,JDK15属于更高版本,已经移除了默认的Java EE相关模块,可能出现类加载异常导致服务无法注册,建议降级到JDK11测试
4. 检查依赖冲突
如果是用Maven/Gradle构建项目,需要将JAX-RS相关依赖的scope设置为provided,避免打包时带入和Tomee自带的实现冲突:
<dependency> <groupId>javax.ws.rs</groupId> <artifactId>javax.ws.rs-api</artifactId> <version>2.1</version> <scope>provided</scope> </dependency>
5. 可选web.xml显式配置
如果上述步骤都无效,可以在WEB-INF/web.xml中显式声明JAX-RS应用,激活扫描:
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0"> <servlet> <servlet-name>com.example.demo.WebServiceApplication</servlet-name> </servlet> <servlet-mapping> <servlet-name>com.example.demo.WebServiceApplication</servlet-name> <url-pattern>/test/*</url-pattern> </servlet-mapping> </web-app>
内容的提问来源于stack exchange,提问作者Ignolito
相关产品推荐
相关产品推荐

