我想用Wildfly 12和Java 10进行POC。
我有一个JAX-RS应用程序配置和一个GET端点,但是,我面临以下问题:
WFLYRS0015: No Servlet declaration found for JAX-RS application. In blogservice.war either provide a class that extends javax.ws.rs.core.Application or declare a servlet class in web.xml.
当我使用JDK8运行相同的应用程序(和相同的服务器WF12)时工作正常,但JDK9和JDK10不起作用。
我一直在查找有关此错误的信息但没有结果。
有什么想法吗?
在我所做的项目的github回购下面,并且无法正常工作。
https://github.com/pablobastidasv/jee8_jdk10_poc
我发现了失败点,这是我放入pom.xml
的依赖,这种依赖是我处理异常的依赖,现在我不知道是...
为什么它在JDK10中失败但在JDK8中失败?
依赖关系github repo是https://github.com/pablobastidasv/exceptions
此依赖项有2个自定义异常和3个ExceptionMapper(cdi提供程序)。
删除此依赖项后,我不再有该错误(WFLYRS0015),但JaxRs子系统未加载JDK10 *但可与JDK8一起使用。
答案 0 :(得分:0)
您的应用程序中需要一个javax.ws.rs.core.Application
类:
import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;
@ApplicationPath("/rest")
public class RestApplicationConfig extends Application {
// intentionally empty
}
该软件包并不重要,但它必须是您的webapp的一部分。
@ApplicationPath
路径是您在服务器中对URL进行分区的方式。您可以将其设置为您想要的但是要小心将其设置为/
,因为Wildfly和/或Wildfly Swarm的某些版本在历史上遇到了从同一URL前缀提供JAX-RS内容和HTML类型内容的问题。这些问题可能已经很久了 - 我只是知道我刚刚遇到它。
您的服务的主要途径可能已经在您的web.xml
中以其他形式显示,并且在您创建Application
课程时应将其删除。 web.xml
根据您的需要,现在是可选的。