我正在将一个应用程序从 Jboss 6.4/Java8 -> JBoss 7.2/Java11
我遇到了一个错误,我的端点注释似乎被应用程序忽略了,并返回错误代码。404.
你可以在日志中看到web上下文的注册位置和 web.xml
基于安全约束对路径进行验证,但请求仍然返回一个 404.
我已经更新了EE和REST库,但没有用。
该应用程序有2个 @ApplicationPath
注释。如何是 JAXRS
从EAP6到EAP7的注释不同?
RestApplication
package com.web;
import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;
@ApplicationPath("/rest")
public class RestApplication extends Application {
}
应用资源
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
@Path("/applications")
public class AppResource{
private static final Logger logger = LoggerFactory.getLogger(AppResource.class);
@Context
private HttpServletRequest httpRequest;
@GET
@Path("/")
@Produces(MediaType.APPLICATION_JSON)
public Response getApplications() {
...
}
...
}
jboss-deployment-structure
<?xml version="1.0"?>
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2">
<deployment>
<dependencies>
<module name="org.jboss.resteasy.resteasy-jaxrs"/>
<module name="com.fasterxml.jackson.core.jackson-core"/>
<module name="com.fasterxml.jackson.core.jackson-databind"/>
<module name="com.fasterxml.jackson.core.jackson-annotations"/>
</dependencies>
</deployment>
<sub-deployment name="WebApp.war">
<dependencies>
<module name="javax.api"/>
<module name="javaee.api"/>
<module name="org.jboss.msc"/>
<module name="org.jboss.as.server"/>
<module name="org.jboss.resteasy.resteasy-jaxrs"/>
<module name="com.fasterxml.jackson.core.jackson-core"/>
<module name="com.fasterxml.jackson.core.jackson-databind"/>
<module name="com.fasterxml.jackson.core.jackson-annotations"/>
</dependencies>
</sub-deployment>
</jboss-deployment-structure>
我的单机版中缺少Jaxrss子系统,所以我需要手动添加它。
SCR
#JAXRS
if (outcome != success) of /subsystem=jaxrs:read-resource()
/subsystem=jaxrs:add()
reload
end-if
独立
<subsystem xmlns="urn:jboss:domain:jaxrs:1.0"/>