JBoss AS7到WildFly 9迁移后无法访问我的JAX-RS资源:javax.ws.rs.NotFoundException

时间:2016-04-01 16:01:31

标签: jboss migration jax-rs wildfly resteasy

从JBoss AS 7.1.1-Final升级到Wildfly 9.0.1-Final后,当我尝试访问我的servlet时出现此异常。实际上我们正在使用Resteasy进行Web服务,并使用servlet处理GWT网页,使用JBoss AS 7.1.1-Final一切正常,但升级后没有按预期工作,下面你会找到一个片段我的web.xml文件和jboss-web.xml

的web.xml

<servlet>
    <servlet-name>admin</servlet-name>
    <servlet-class>com.afp.iris.sr.sco.scom.servlet.ScomIHMServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>admin</servlet-name>
    <url-pattern>/admin/*</url-pattern>
</servlet-mapping>

<servlet>
    <servlet-name>Resteasy</servlet-name>
    <servlet-class>org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher</servlet-class>

    <init-param>
        <param-name>resteasy.scan</param-name>
        <param-value>true</param-value>
    </init-param>
</servlet>
<servlet-mapping>
            <servlet-name>Resteasy</servlet-name>
            <url-pattern>/*</url-pattern>
</servlet-mapping>

的JBoss-web.xml中

<jboss-web>
    <context-root>/components</context-root>
</jboss-web>

当我尝试以下网址时:http://mymachine:8080/components/admin我收到以下异常

failed to execute: javax.ws.rs.NotFoundException: Could not find resource for full path: http://mymachine:8080/components/admin

#EDIT#

这就是我实施休息服务的方式

@Stateless(name = "myServices")
@Path("/")
public class myServices {

    @POST
    @Consumes(MediaType.MULTIPART_FORM_DATA)
    @Produces(MediaType.APPLICATION_XML)
    public Response myFuntion(@Context final HttpServletRequest request) {
        return secondFunction(request, null);
    }
}

同样适用于resteasy资源,可能是这个问题的根源,欢迎所有建议!

1 个答案:

答案 0 :(得分:0)

您的 web.xml 文件缺少WildFly的RESTeasy引导类。

另外,将您的resteasy.scan财产从servlet移至[{1}},并将其作为init-param

以下是需要进行的更改:

context-param

也许您可以尝试使用Servlet 3.0 Annotations而不是使用servlet映射。

作为调用示例,您可以执行以下操作:

<context-param>
    <param-name>resteasy.scan</param-name>
    <param-value>true</param-value>
</context-param>

<listener>
    <listener-class>org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap</listener-class>
</listener>

<servlet>
    <servlet-name>Resteasy</servlet-name>
    <servlet-class>org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>Resteasy</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>