JAX-RS + JDK10 = WFLYRS0015:找不到JAX-RS应用程序的Servlet声明,而它与JDK8一起工作正常

时间:2018-04-09 05:17:56

标签: java-ee jax-rs wildfly

我想用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一起使用。

1 个答案:

答案 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根据您的需要,现在是可选的。