Servlet API3.1は現在Early Draft Review
・JSR-000340 Java Servlet 3.1 – Early Draft Review
・Non-blocking IO APIをサポート
ServletInputStream, ServletOutputStreamに以下のメソッドを追加してノンブロッキングなアプリケーションが書けるように。
ServletInputStream
#setReadListener
#isFinished
#isReady
ServletOutputStream
#setWriteListener
#canWrite
コード例を見たけどなんだかゴチャゴチャ。既存のServlet APIに建て増しして難しくなってしまってる感じ。ノンブロッキングでスケーラブルなアプリケーションを作るならNettyでいいかな・・。(ポータビリティとかロックインとか気にしなくて良い場合)
・Protocol Upgrade
HTTPで接続後に同じコネクションを使ってプロトコルを変更することが出来るらしい。実はHTTP1.1(RFC2626)で規定されているとのこと。
現在のところWebSocketで使われているが、将来的には他のプロトコルもサポートできると。Servlet APIとしては HttpServletRequest#upgrade(ProtocolHandler handler) というメソッドを追加することで対応。
双方向、全二重通信が出来る・・・がプロキシは通りにくいと思う。
Servlet API3.0からの差分についてはJCP.orgでダウンロードできるPDFの193ページを見ればいい。