在带有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参数获取数据。