本地Glassfish 5部署Java SOAP项目未暴露WSDL返回404问题求助
问题排查方案
- 首先确认应用部署状态和上下文路径
登录Glassfish默认管理控制台http://localhost:4848,在「应用程序」列表中查看该服务的运行状态是否为Running,同时确认应用配置的上下文路径是否和你访问的/service-1.0-SNAPSHOT一致。如果应用部署状态为失败,可查看domain/logs/server.log日志文件定位部署阶段的具体报错信息。 - 修正访问路径规则
直接访问应用根路径http://fullnames-macbook-pro.local:8080/service-1.0-SNAPSHOT返回404是正常情况,因为根路径没有配置对应的资源映射。标准JAX-WS服务的WSDL访问格式为:[应用上下文路径]/[服务映射路径]?wsdl,你需要先确认服务类上@WebService注解配置的路径,例如服务类注解为@WebService(serviceName = "UserService"),则默认WSDL地址为http://fullnames-macbook-pro.local:8080/service-1.0-SNAPSHOT/UserService?wsdl。 - 检查JDK版本兼容性
Glassfish 5 最低要求运行环境为JDK 8,你当前pom配置的编译版本为JDK 1.7,虽然理论上向下兼容,但建议将pom中的编译配置修改为1.8,避免版本兼容问题:<properties> <maven.compiler.source>8</maven.compiler.source> <maven.compiler.target>8</maven.compiler.target> </properties> - 检查WebService注解配置
确认你的服务实现类是否添加了@WebService注解,且类没有被错误标记为final、static,也不存在无参构造函数缺失的问题。如果是基于Servlet的JAX-WS服务,还需要确认是否在web.xml中配置了WSServlet的映射,或者是否启用了Servlet 3.0+的注解扫描。 - 修正依赖版本匹配问题
你pom中引入的glassfish-embedded-all版本为6.2.1,和你部署用的Glassfish 5版本不匹配,虽然该依赖仅作用于test范围,但如果需要做本地集成测试,建议将版本调整为和服务器一致的5.x版本,避免测试阶段出现兼容异常。
内容的提问来源于stack exchange,提问作者Stefano Maglione
相关产品推荐
相关产品推荐

