2010-04-15 58 views
3

編輯:重新標記爲tomcat/jboss,因爲這可能是一個有關嵌入內部的JBoss 6 Tomcat的問題,而不是JBoss的本身異步處理中的JBoss 6(「彗星」)

我有一個非常簡單的servlet,它適用於Glassfish v3。它使用Servlet 3.0異步處理。下面是一個簡化版本(這並沒有做太多):

@WebServlet(asyncSupported=true) 
public class SimpleServlet extends HttpServlet { 

    @Override 
    protected void doGet(HttpServletRequest request, 
      HttpServletResponse response) 
      throws ServletException, IOException { 

     final AsyncContext ac = request.startAsync(); 
     ac.setTimeout(3000); 
    } 
} 

在Jboss應用服務器6.0.0 里程碑2,我得到以下異常:

java.lang.IllegalStateException: The servlet or filters that are being used 
      by this request do not support async operation 
    at org.apache.catalina.connector.Request.startAsync(Request.java:3096) 
    at org.apache.catalina.connector.Request.startAsync(Request.java:3090) 
    at org.apache.catalina.connector.RequestFacade.startAsync(RequestFacade.java:990) 
    at playcomet.SimpleServlet.doGet(SimpleServlet.java:18) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:734) 
    ... 

我必須做什麼特別的在JBoss 6中啓用異步處理?還是我需要一個額外的部署描述符? ...

+0

@skaffman:感謝提示與Tomcat!然而,JBoss 6.0.0 Milestone 2包含一種全新的異步處理方法(基於Servlet 3.0)和AFAIK,這在Tomcat版本中並不是有效的 - 但我不是100%確定的。 – 2010-05-03 15:10:45

回答

2

如果你有web.xml部署它..只要把它拿出來。 結構應該是

test.war

  • WEB-INF/
  • WEB-INF /類/ *。類

  • WEB-INF/lib中/ *。罐子


您的web.xml重寫爲yncSupported =真正的註釋,因此錯誤

+0

感謝您挖掘我的舊問題並尋求答案!我通常不能移除web.xml,因爲我通常需要它 - 所以有辦法通過修改web.xml來實現'asyncSupported = true'嗎?我不記得在web.xml中將它明確地設置爲「false」。 (我沒有舊的項目設置了,但我仍然對此感興趣。) – 2010-10-05 12:46:25

+0

@Chris:你仍然可以擁有web.xml,但不要定義它的異步servlet,並讓這個servlet註釋。不過,我還沒有探討web.xml中asyncSupported = true屬性的可能性 – 2010-11-24 01:16:31