Jax-RS url-pattern 导致 404 错误

Jax-RS url-pattern causes 404 error

我是 运行 JBOSS 6.4 EAP in eclipse oxygen.

我有一个简单且有效的网络服务,只有 returns 可用。

当我将 url 模式配置为“/*”时,它会按预期执行。当我在 url-pattern 中放置一个更实质的模式“/rws/*”时,我得到 404

我的URL是localhost:8080/mesh/rws/menu/isAlive

失败web.xml这个servlet没有对应的servlet块

<servlet-mapping>
    <servlet-name>javax.ws.rs.core.Application</servlet-name>
    <url-pattern>/rws/*</url-pattern>
</servlet-mapping>

Servlet Class

@Path("/rws/menu")
public class MenuService
{
    @GET
    @Path("/isAlive")
    public Response isAlive()
    {
        return Response.ok("I am alive").build();
    }
}

服务器出错

JBWEB000065:HTTP 状态 404 - RESTEASY001185:找不到相对资源:/menu/isAlive 完整路径:http://localhost:8080/mesh/rws/menu/isAlive

上下文参数 我已经尝试按照网上各个地方的建议将上下文参数添加到 web.xml,但它似乎已经设置好了,我不确定如何超越。

<context-param>
    <param-name>resteasy.servlet.mapping.prefix</param-name>
    <param-value>/rws</param-value>
</context-param >

产生错误:

错误[org.apache.catalina.core](服务器服务线程池——64)JBWEB001097:启动上下文/网格时出错:java.lang.IllegalArgumentException:JBWEB000280:重复的上下文初始化参数resteasy.servlet.mapping.prefix

这是我最后得到的。我无法完整解释为什么会这样,但这是我的推测。这使用 core.Application class 定义了一个新的 servlet,因此忽略了问题中使用的默认实现。因此,不需要像我在原始问题中尝试做的那样设置上下文参数。

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">

    <servlet>
        <servlet-name>EbigExtWS</servlet-name>
        <servlet-class>javax.ws.rs.core.Application</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>EbigExtWS</servlet-name>
        <url-pattern>/rws/*</url-pattern>
    </servlet-mapping>

</web-app>

当你在 url 模式中有 /rws/* 时,你 应该将 /rws 放在 @Path 还有。如果这样做,则 url 将是 /rws/rws。 url 模式是整个应用程序的前缀。所以只需从 @Path.

中删除 /rws