无法在Wildfly 12.0中的线程内注入HttpServletRequest

时间:2019-07-08 11:02:40

标签: java cdi jboss-weld wildfly-12

在带有RESTful WebService的Java Web应用程序中,我使用的是带有焊接2.2.6的Wildfly 8.2。我正在线程中注入HttpServletRequest对象,并从中读取参数。在使用焊接3.0.3升级到Wildfly 12.0之后,在线程中使用HttpServletRequest实例会产生以下错误:

org.jboss.weld.contexts.ContextNotActiveException:WELD-001303:作用域类型javax.enterprise.context.RequestScoped没有活动上下文

有什么办法可以解决此问题?

我尝试了Wildfly 12的焊接3.0.4补丁更新,并尝试使用AsyncContext。尝试注入为@context。该代码在Wildfly 12中可以正常工作,甚至在Wildfly 16中也无法工作。

@Path("test")
public class TestWildfly12 {

    @Inject
    private HttpServletRequest request1;

    @GET
    public Response testRequest() {

        request1.setAttribute("test", "test");
        ExecutorService executorService = Executors.newFixedThreadPool(1);
        executorService.execute(() -> {

            Object value = request1.getAttribute("test");
            System.out.println(value);
        });

        final Response response = Response.build().entity(true);
        response.setStatus(Status.OK.getStatusCode());

        return response;
    }
}

我希望代码从线程中的request参数获取数据。

0 个答案:

没有答案