[英]Jersey/web.xml/Servlet Routing Issue
因此,這主要是用來說明問題的代碼,但問題如下:
將我的瀏覽器指向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(一個接口)還定義了注釋和方法,這可能是問題嗎? 我的印象是Jax-RS注釋沒有被繼承。 我有兩個servlet並缺少某些東西嗎? 我有一個純REST服務,只有一個servlet和相同的配置可以完成相同的事情。 根據我如何更改配置,我也會從中得到“ 405不允許的方法”。 有任何想法嗎?
嘗試訪問http://localhost:8080/licsrv/items/items
。 @Path
批注定義相對於應用程序根目錄的路徑(由web.xml中的servlet映射定義)。
servlet映射對我來說是可疑的。 我不熟悉spring,但是如果servlet映射是這樣的:
<servlet-mapping>
<servlet-name>licensingRestService</servlet-name>
<url-pattern>/orders/*</url-pattern>
</servlet-mapping>
網址應類似於: localhost:8080/licsrv/orders/items
,具有相同的ItemsResourceImpl
實現。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.