2012-09-27 36 views
0

所以這將是大部分代碼來說明問題,但問題如下:新澤西/ web.xml文件/ Servlet的路由問題

指着我的瀏覽器到localhost:8080/licsrv /項目將返回404

revelant的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

現在ItemsResource(一個接口)也有註釋和方法定義,這可能是問題嗎?我的印象是Jax-RS註釋不是繼承的。這是事實,我有兩個servlet,並錯過了一些東西?我有一個純粹的REST服務,只有一個servlet和相同的配置做同樣的事情。根據我如何更改配置,我也得到405方法不允許。有任何想法嗎?

回答

1

嘗試訪問http://localhost:8080/licsrv/items/items@Path批註定義了相對於應用程序根目錄的路徑(由web.xml中的servlet映射定義)。

+0

我上午。感謝您的指點。 – thatidiotguy

0

servlet映射對我來說是可疑的。我不熟悉的春天,但如果servlet映射是這樣的:

<servlet-mapping> 
    <servlet-name>licensingRestService</servlet-name> 
    <url-pattern>/orders/*</url-pattern> 
</servlet-mapping> 

URL應該想:localhost:8080/licsrv/orders/items,與同ItemsResourceImpl實現。

+0

有三個不同的休息類,ItemsResourceImpl,CustomersResourceImpl和OrdersResourceImpl,它們應該分別在/ orders/customers和/ items上響應。 – thatidiotguy

+0

問題和答案在'/ *'中有所不同。我認爲它們在OPs web.xml中缺失。 – Sponiro