2012-09-04 62 views
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)); 
+0

找到解决的:我是指你这篇文章: http://stackoverflow.com/questions/7855712/how-to-avoid-request-set-async-supported-true -to-使能异步-servlet的3-0-PROCES?RQ = 1 –

回答