我正在尝试获取部署在Tomcat中的Jersey资源的servlet上下文,但每当我尝试这个时,我都会得到一个空指针异常。我的代码如下:
@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。
答案 0 :(得分: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();
}
}