0
当按钮单击时,我需要在我的后台运行的东西,所以我有一个异步Servlet。从我的托管bean中,如果我重定向,它的效果很好(这意味着它会在我的课程中正确执行我的run()
方法,即extends Runnable
)。像这样从托管bean调度请求到异步Servlet生成异常
String url = externalContext.getRequestContextPath() + "/ReportExecutionServlet";
externalContext.redirect(url);
但是,如果我转派遣,这样
externalContext.redirect("/ReportExecutionServlet");
当我尝试获得AsyncContext
AsyncContext aCtx = request.startAsync(request, response);
误差低于
它失败Caused By: java.lang.IllegalStateException: The async-support is disabled on this request: weblogic.servlet.internal.ServletRequestImpl
任何想法如何解决这个请吗?
注意:这是如何执行我的异步的servlet,以防万一:
AsyncContext aCtx = request.startAsync(request, response);
//delegate long running process to an "async" thread
aCtx.addListener(new AsyncListener() {
@Override
public void onComplete(AsyncEvent event) throws IOException {
logger.log(Level.INFO, "ReportExecutionServlet handle async request - onComplete");
}
@Override
public void onTimeout(AsyncEvent event) throws IOException {
logger.log(Level.WARNING, "ReportExecutionServlet handle async request - onTimeout");
}
@Override
public void onError(AsyncEvent event) throws IOException {
logger.log(Level.SEVERE, "ReportExecutionServlet handle async request - onError");
}
@Override
public void onStartAsync(AsyncEvent event) throws IOException {
logger.log(Level.INFO, "ReportExecutionServlet handle async request - onStartAsync");
}
});
// Start another service
ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(10);
executor.execute(new AsyncRequestReportProcessor(aCtx));
找到解决的:我是指你这篇文章: http://stackoverflow.com/questions/7855712/how-to-avoid-request-set-async-supported-true -to-使能异步-servlet的3-0-PROCES?RQ = 1 –