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
我是 运行 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