tomcat - JAX-RS/Jersey + Tomcat ServletContext 为空

标签 tomcat servlets jersey jax-rs

我正在尝试获取部署在 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。

最佳答案

在您使用服务方法访问资源之前,不会发生注入(inject)。

@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();
   }



}  

关于tomcat - JAX-RS/Jersey + Tomcat ServletContext 为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10804541/

相关文章:

java - 保持持久的http连接

java - 如何使用 Java Servlets 和 Jsp 将数据库查询显示到表中?

java - 使用 jsp 表单将字符串发送到 servlet - 在 jsp 中使用 setAttribute 并在 servlet 中使用 getAttribute

java - 与 Jersey 客户端的 POST 请求

java - 如何使用 Jersey (REST) 读取 GET 请求的输入 XML?

java - Tomcat 并行部署 - 转到旧版本

jsp - 如何重命名 SpagoBI 服务器?

java - Tomcat & Spring Web - 找不到类异常 org.springframework.web.context.ContextLoaderListener

java - Spring 工具套件中未显示关键服务器日志消息

java - 使用 Grizzly : How do you enable http2 的嵌入式 Java 服务器