因此,这主要是说明问题的代码,但问题如下:
将我的浏览器指向 localhost:8080/licsrv/items 返回 404。
相关的web.xml
<!-- Java Remoting Servlet -->
<servlet>
<servlet-name>licenseGenService</servlet-name>
<servlet-class>org.springframework.web.context.support.HttpRequestHandlerServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>licenseGenService</servlet-name>
<url-pattern>/remoting/licensing</url-pattern>
</servlet-mapping>
<!-- Restful API Servlet-->
<servlet>
<servlet-name>licensingRestService</servlet-name>
<servlet-class>
com.sun.jersey.spi.spring.container.servlet.SpringServlet
</servlet-class>
<init-param>
<param-name>
com.sun.jersey.config.property.packages
</param-name>
<param-value>
mypackage.rest
</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>licensingRestService</servlet-name>
<url-pattern>/orders</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>licensingRestService</servlet-name>
<url-pattern>/items</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>licensingRestService</servlet-name>
<url-pattern>/customers</url-pattern>
</servlet-mapping>
ItemsResourceImpl.java
@Path("/items")
public class ItemsResourceImpl implements ItemsResource
{
@GET
@Produces("text/html")
public String testItems()
{
return "<html><body><h1>Items Resource Tester</h1><p>Items Resource is available.</p></body></html>";
}
.....
}
然后我的 applicationContext.xml 中有这个 bean
现在 ItemsResource(一个接口(interface))也定义了注释和方法,这可能是问题所在吗?我的印象是 Jax-RS 注释不是继承的。是因为我有两个 servlet 并且缺少某些内容吗?我有一个纯 REST 服务,只有一个 servlet 和相同的配置来做同样的事情。根据我更改配置的方式,我也会得到 405 Method Not allowed 的信息。有什么想法吗?
最佳答案
尝试访问http://localhost:8080/licsrv/items/items
。 @Path
注释定义相对于应用程序根目录的路径(由 web.xml 中的 servlet 映射定义)。
关于java - Jersey/web.xml/Servlet 路由问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12628112/