Jax-RS url-pattern导致404错误

时间:2018-05-21 17:55:03

标签: rest jax-rs web.xml

我在日食氧气中运行JBOSS 6.4 EAP。

我有一个简单而有效的网络服务,只是返回活着。

当我将url-pattern配置为" / *"它按预期执行。当我提出一个更实质的模式" / rws / *"在url-pattern中我得到了404

我的网址是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类

@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 of full path: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](ServerService线程池 - 64)JBWEB001097:启动上下文/网格时出错:java.lang.IllegalArgumentException:JBWEB000280:重复的上下文初始化参数resteasy.servlet.mapping.prefix

2 个答案:

答案 0 :(得分:0)

这是我最终的结果。我不能完整地解释为什么这样有效,但这是我的specuylation。这使用core.Application类定义了一个新的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>

答案 1 :(得分:0)

如果您在网址格式中有/rws/*,那么 /rws放入@Path。如果您这样做,那么网址将为/rws/rws。 url-pattern是整个应用程序的前缀。因此,只需从/rws中删除@Path