Java Servlet 3.0 API: What’s New and Exciting
Pluggability web.xmlに直接触れるAPIが追加される為、 ServletAPIを使うFrameworkは、それ専用の設定ファイルを持つ必要がなくなる。 今は、web.xmlにServletFilter書いて頑張ってるよねぇ…とか。 それについて、ドキュメント書くのダルくね?とか。 それぞれのFrameworkは、それぞれのjarにMETA-INF/web.xmlをおいて使う。 そのweb.xmlをWebコンテナが気合で探す。 ポイントは、タグ。まぁ、中身は既存のweb.xmlと同じ様な感じ ServletContextに、web.xmlへアクセスするためのメソッドを追加しる。 -Servletの追加 -Filterの追加 -URLマッピングの追加 何と言うか、JettyのAPIとほぼまんま一緒。addServletとか、addServletMappingとかある。 でも、ServletのライフサイクルをServletコンテナの外側で管理出来るのかな?… Ease of Development web.xmlの存在がオプションになる。JSPや静的リソースだけの場合には、web.xmlイラナイ。スバラシ。 convention over configurationらし。 annotationで、Servletとしての定義が出来るですだよ。 @Servlet @GET @PUT @HttpMethod @Servlet(urlMapping={"/foo"}) public class FooServlet { @GET public void exec(HttpServeltRequest req,HttpServletResponse res) { } } まぁ、Filterやそういうのも、大体一緒。 web.xmlで、annotationに記述された内容を上書き出来るですだよ。 でもさ、これって、ClassLoaderは、どうやってサーブレットクラスを探すんだろ… ディレクトリトラバーサルしないとダメなんじゃね? つまりは、特に仕様に記述されないだろうけど、 ServletContainerの起動処理が、やたら重くなる可能性はないかぇ? Async Servlet Support Commet Support StreamingやらLong pollingやら実装方法は、色々あるけど、そこには触れないよぅ、とか。 Request ca b suspended and resumed. ウゴゲ…、これはAPI叩くの難しくなるんじゃねぇかなぁ… 普通に、NIO使った、event dispatchモデルをガッツリ使いこなさないと、 すぐDeadLockしたりとか、メモリ不足になったりするんじゃねぇかなぁ… いや、メソッド並べると簡単だけどさ、それぞれをちゃんと呼ぶのはマジキツイぞ… ServletRequestListenerってのが増えるのか。これは、簡単に使えそう。 いや、簡単にRequestをSuspendとか言ってるけど、これって、別のスッドレに、処理をDispatchしないとダメじゃん。 JMSみたいなの使わない限りは、ここ自前実装だぞ。OH!Deadly! Security enhancements login and logout www-authenticat ヘッダを使う HttpSessionを使って、状態を維持しる 仕様の内容については、まだfixしている訳では無くて、 ExpertGroupで引き続きディスカッションしている。 HttpOnlyCookieをサポート んぁ?これどうやって実装すんだ?イミワカンネ。 CSS対策になる…とか。これって、XHRで、ヘッダ偽装したら結局Cookieを返さざるを得ないよね? Session tracking cookie を、設定可能にしる。 これって、今までは、サーバ依存な設定項目だったけど、標準になるのだに。 EJBをwarファイルの中に含められる様にするつもりがあるらしい。 まぁ、earファイルの中にある超絶jar構造は、マジメンドクセェ。 そうは言ってもEJBなんて、どうせ使わないから、いいけどねぇ…