2013-11-04 69 views
0

我的工作與新澤西寧靜的API與Atmosphere GET和POST方法。新澤西州的Servlet返回405甚至定義

這裏是我的web.xml

<servlet> 
     <description>AtmosphereServlet</description> 
     <servlet-name>AtmosphereServlet</servlet-name> 
     <servlet-class>org.atmosphere.cpr.AtmosphereServlet</servlet-class> 
     <init-param> 
      <param-name>com.sun.jersey.config.property.packages</param-name> 
      <param-value>com.example.p1</param-value> 
     </init-param> 
     <async-supported>true</async-supported> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet> 
     <servlet-name>AdminPanel</servlet-name> 
     <servlet-class>org.atmosphere.cpr.AtmosphereServlet</servlet-class> 
     <init-param> 
      <param-name>com.sun.jersey.config.property.packages</param-name> 
      <param-value>com.example.p2</param-value> 
     </init-param> 
     <init-param> 
      <param-name>com.sun.jersey.config.property.JSPTemplatesBasePath</param-name> 
      <param-value>/WEB-INF/admin/</param-value> 
     </init-param> 
     <load-on-startup>2</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>AdminPanel</servlet-name> 
     <url-pattern>/admin/*</url-pattern> 
    </servlet-mapping> 
    <servlet-mapping> 
     <servlet-name>AtmosphereServlet</servlet-name> 
     <url-pattern>/</url-pattern> 
    </servlet-mapping> 

現在,我有@Path("/register")資源類和我已經定義了兩個@GET@POST方法。沒有其他班級在我的整個項目中處理路徑/register

@Path("/register") 
public class Register{ 
    @POST 
    public String method1(){ 
     return "POST"; 
    } 
    @GET 
    public String method1(){ 
     return "GET"; 
    } 
} 

我使用的URL爲http://129.123.3.3/user/register,我用我的電話POST方法。

定義的Inspite GET和POST方法,我得到

HTTP狀態405 - 不允許的方法

但是,當我刪除我的serlvet映射AdminPanelAtmosphereServlet改變<url-pattern>/*代替/相應方法被調用。但這種方式我不能用它在我的AdminPanel的servlet定義的URL。我錯過了什麼?如果這是隻與Servlet Mapping問題什麼都可以映射,這樣的請求被正確地路由到/admin和其他請求不受阻礙?

+0

子資源定位器可以幫助你解決這個問題,看看這個:https://jersey.java.net /documentation/latest/jaxrs-resources.html – Forhad

+0

試圖在結果是,沒有任何變化。 –

回答

0

實現一個類

@javax.ws.rs.ApplicationPath("webresources") 
public class ApplicationConfig extends javax.ws.rs.core.Application { 
    @Override 
    public Set<Class<?>> getClasses() { 
     Set<Class<?>> resources = new java.util.HashSet<>(); 
     resources.add(Register.class); 
     return resources; 
    } 
} 

將您的網址將

GET /<context>/webresources/register 
+0

你能解釋一下代碼還是給一個有用的鏈接? –

+0

http://docs.oracle.com/javaee/7/api/javax/ws/rs/ApplicationPath.html和http://docs.oracle.com/javaee/7/api/javax/ws/rs/core /Application.html – 2013-11-04 12:44:37