2012-05-29 37 views
3

我想獲取Tomcat中部署的澤西島資源的servlet上下文,但每當我嘗試這樣做,我都會得到一個空指針異常。我的代碼如下:JAX-RS/Jersey + Tomcat ServletContext爲null

@Path("/resource") 
public class MyResource { 

@Context ServletContext context; 

public MyResource(){ 

    System.out.println("Context: "+context.getRealPath("/")); 

} 

} 

我的web.xml配置是這樣的:

<servlet> 
    <servlet-name>MyResource</servlet-name> 
<servlet-class> 
    com.sun.jersey.spi.container.servlet.ServletContainer 
</servlet-class> 
    <init-param> 
    <param-name>com.sun.jersey.config.property.packages</param-name> 
    <param-value>com.mypackage</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
</servlet> 
<servlet-mapping> 
    <servlet-name>MyResource</servlet-name> 
    <url-pattern>/*</url-pattern> 
</servlet-mapping> 

任何線索什麼我的問題可能是?使用Tomcat 6.0.33和Jersey 1.12。

回答

7

直到使用服務方法訪問資源時纔會發生注入。

@Path("/resource") 
public class MyResource { 

    @Context ServletContext context; 

    public MyResource() { 
     System.out.println(context); //null 
    } 

    @GET 
    @Path("subresource") 
    public Response getASubResource() { 
     System.out.println(context); // not null 
     return Response.ok("OK").build(); 
    } 



} 
+0

謝謝,這有幫助。 – Ryan

+0

我有同樣的問題。我嘗試使用Tom的代碼(我複製並粘貼了它),但是我從構造函數和方法中都得到了null兩次。我從運行在同一服務器上的JSP頁面調用了該方法,只是簡單地執行'new MyResource()。getASubResource()' –

+0

@Krige在使用REST客戶端調用資源方法時會發生嗎? – toniedzwiedz

相關問題