【发布时间】:2018-03-04 06:08:27
【问题描述】:
我需要访问 ServletContext 才能对我的 WEB-INF 目录中的某些文件使用 getRealPath() 方法。但是,我需要在其中完成这项工作的类是一个非 CDI 类,该类用于基于先前从 JAX-RS 发出的请求进行一些后端处理。如何在 JAX-RS 请求的生命周期之外获取 ServletContext?
我正在使用 Wildfly 10,如果这改变了我的处理方式
【问题讨论】:
-
后端处理是什么意思? Ejb?
-
我真的不知道。这对我来说很新鲜。请求进入队列,稍后由单独的线程处理,REST 调用仅返回 200 表示它将在队列中。但是我需要另一个线程上的 ServletContext,在 REST 调用返回后,执行从 WAR 的 WEB-INF 内的文件的请求中安排的操作。但是由于它在一个单独的线程上并且 JAX-RS 调用已经返回,所以 ServletContext,即使它也被放入了队列中,现在也是 null。
-
getRealPath()是不可移植的,你不能使用它。看到这个answer。