Reputation: 288
I'm trying to get the servlet context of a Jersey resource deployed in Tomcat, but whenever I attempt this I get a null pointer exception. My code is as follows:
@Path("/resource")
public class MyResource {
@Context ServletContext context;
public MyResource(){
System.out.println("Context: "+context.getRealPath("/"));
}
}
My web.xml is configured like this:
<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>
Any clue what my issue could be? Using Tomcat 6.0.33 and Jersey 1.12.
Upvotes: 3
Views: 4224
Reputation: 18543
The injection doesn't happen until you use a service method to access a resource.
@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();
}
}
Upvotes: 11