我試圖使用servlet 3.0 API實現以下行爲:的Servlet 3.0包含HTML頁面
- 發送inital HTML頁面
- 發送更新頁面
後續響應除了唯一可以發送初始頁面而沒有得到響應的唯一方式是通過使用HttpResponse Writer進行手動書寫...
我很好如果有一種方法可以使用類似於RequestDispatcher#include和HTML頁面的方式,而不會遇到AsyncContext的問題。有些事情我試着到現在爲止,並沒有工作:
- 使用AsyncContext#調度:就像我在互聯網上閱讀時,就註定了以使其 發送最終響應的容器
- 使用RequestDispatcher#forward:由於嘗試在OutputStream中寫入更多內容而導致IllegalStateException
- use RequestDispatcher#include:如果我在調用此方法之前初始化AsyncContext,request.isAsyncSupported返回true,調用該方法後返回false 。我讀它調用flushBuffer(),並將提交標誌爲true的響應
而且,在Servlet 3.0規範也有一些線路提的是異步的servlet正常的servlet調度是可能的,但將提交回答。我相信一個靜態的HTML頁面屬於這個類別...
如果你有任何想法如何可以完成優雅包括而不影響仍然發送流回應客戶端的能力,請讓我知道。
感謝
感謝您的回答。我試圖專門使用Servlet 3.0 API來實現服務器推送。所以,我只能發送異步響應。這將是對servlet的一次調用,並且該servlet將返回多個響應(這是通過不提交響應來實現的,只是將其刷新)。 – fmoga 2010-06-24 08:36:10
我還沒有玩過異步API。但有https://atmosphere.dev.java.net/彗星實施!也許值得一看 – Redlab 2010-06-24 09:22:19