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

JBoss AS7到WildFly 9迁移后无法访问我的JAX-RS资源:javax.ws.RS.NotFoundException,jboss,migration,jax-rs,wildfly,resteasy,Jboss,Migration,Jax Rs,Wildfly,Resteasy,从JBoss AS 7.1.1-Final升级到Wildfly 9.0.1-Final后,我在尝试访问servlet时遇到了这个异常。实际上,我们正在使用Resteasy for web services和一个servlet来处理GWT网页,JBoss AS 7.1.1-Final一切都很好,但是升级后没有任何效果,下面您将看到我的web.xml文件和JBoss web.xml的片段 web.xml <servlet> <servlet-name>admin<

从JBoss AS 7.1.1-Final升级到Wildfly 9.0.1-Final后,我在尝试访问servlet时遇到了这个异常。实际上,我们正在使用Resteasy for web services和一个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>
    <context-root>/components</context-root>
</jboss-web>
#编辑#

这就是我实现rest服务的方式

@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资源也是如此,这一问题的根源是什么,欢迎所有建议

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

另外,将
resteasy.scan
属性从
servlet
作为
init-param
扫描,并将其作为
context-param
放置

以下是需要进行的更改:

<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>

您是如何实现REST服务的?你能用代码更新你的问题吗?@aribeiro,我编辑了我的帖子,使其包含rest实现。仅供参考-检查。谢谢@OndraŽIžka,我不知道有这样的工具。谢谢你的回答@aribeiro,就我而言,如果resteasy servlet映射的url模式不是/*,我认为resteasy.servlet.mapping.prefix是不必要的,并且当我添加扫描选项作为上下文参数时,我得到了一个例外,对于侦听器,我已经在我的web.xml中有了它,但是为了简洁起见,我不想发布整个文件。你是对的,如果url模式为
/*
,则不需要
resteasy.servlet.mapping.prefix
。你有什么例外?
<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>
public class Main {

    public static void main(String[] args) throws Exception {
        try {
            HttpClient client = HttpClientBuilder.create().build();

            HttpPost request = new HttpPost("http://localhost:8080/components");

            request.setHeader("Accept", MediaType.APPLICATION_XML);
            request.setHeader("Content-type", MediaType.MULTIPART_FORM_DATA);

            HttpResponse response = client.execute(request);

            if (response.getStatusLine().getStatusCode() != 200) {
                throw new RuntimeException("Failed : HTTP error code : " + response.getStatusLine().getStatusCode());
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}