.NET Webサービス向けのサービスレジストリの実装
本稿では、SOAソリューションの実装を単純化するために利用できるサービスレジストリの.NET実装を説明します。
作者 中台 高宏 投稿日 2008年5月8日 午後10時55分
5月8日(3日目)の午後に開催されたセッション「Java Servlet 3.0 API: What's new and exciting(Rajiv Mordani, Sun Microsystems)」の報告を行う。
Java Servlet 3.0は、JSR-315でEarly Draftを公開し、6月4日までフィードバックを受け付けている。
3.0へのバージョンアップで、大きく改変、追加されるのは次の4点である。
それぞれについて、以降説明する。
プラグインの容易性(Pluggability)
プラグインの容易性としては、次の項目が説明された。
web.xmlのモジュール化(Modularization of web.xml)
web.xmlは現在1つしかなく、そのためフレームワーク毎の情報などを記述する事で、複雑化する。しかし3.0では、フレームワーク毎にweb.xmlを定義し、jarファイルのMETA-INFディレクトリに含める事ができる。その分割されたweb.xmlは、web-fragmentタグを持ち、servlets、filter、listenerタグが含まれる。
コードの例)
<web-fragment>
<servlet>
<servlet-name>welcome</servlet-name>
<servlet-class>
WelcomeServlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>welcome</servlet-name>
<url-pattern>/Welcome</url-pattern>
</servlet-mapping>
...
</web-fragment>
ServletContextにコンフィギュレーションメソッド(Configuration methods in ServletContext)
ServletContextにServletとFilterの宣言とマッピングを定義するメソッドが追加される。これらのメソッドは、Contextの初期化時にのみ実行する事ができる。これによりアプリケーションは、実行時に必要に応じてServletをロードする事ができる。
コードの例)
@ServletContextListener
public class MyListener {
public void contextInitialized(ServletContextEvent sce) {
ServletContext sc = sce.getServletContext();
sc.addServlet("myServlet",
"Sample servlet",
"foo.bar.MyServlet",
null, -1);
sc.addServletMapping("myServlet",
new String[]{"/urlpattern/*"});
}
}
開発の容易性(Ease of Development)
開発の容易性としては、アノテーションの利用が説明された。
まず、Servletは、@Servletにより定義できる。これにより大幅に記述量を減らす事ができる。また、@GET、@PUTを指定する事で、任意のメソッドをhttpのGETやPUT時のメソッドに指定する事ができる。
コードの例)
@Servlet(urlMapping={"/foo", "/bar"},name="MyServlet")
public class SampleUsingAnnotationAttributes {
@GET
public void handleGet(HttpServletRequest req,HttpServletResponse res){
}
}
FilterとFilterのマッピングについても、@ServletFilterと@FilterMappingのアノテーションで宣言する事ができる。
コードの例)
@ServletFilter
@FilterMapping(urlPattern="/foo")
public class SampleFilter {
public void doFilter(HttpServletRequest req,HttpServletResponse res){
}
}
Context Listnerについても、@ServletContextListnerアノテーションで宣言する事ができる。この例は前述のコンフィギュレーションメソッドの例を参照。
非同期Servletのサポート(Async servlet support)
非同期Servletは、Cometスタイルのアプリケーションや、非同期Webプロキシー、非同期Webサービスでの利用が想定されており、requestのsuspendやresumeを可能にする。
具体的には、次の通りである。
ServletRequestへのメソッドの追加
RequestListnerへのイベント発生時に実行されるメソッドの追加
ServletResponseへのメソッドの追加
セキュリティのエンハンス(Security enhancements)
セキュリティとして、ログイン、ログアウトを可能にするため、loginとlogoutのメソッドを次のクラスに追加する。
しかし、これについては、まだエキスパートグループで議論されている状況である。
その他
HttpOnlyCookieのサポート
HttpOnlyCookieとは、クライアントサイドスクリプティングからのcookieへのアクセスを防ぎ、また、クロスサイトスクリプティング攻撃を防ぐものである。
session tracking cookieの設定を可能
session tracking cookieの設定を可能にする。また、多数のsession trackingのサポートも行う。
検討が保留中の項目
以上が、Java Servlet 3.0の変更、追加内容である。
これからのステータスは、次の通りである。
以上がセッションの報告であるが、セッションの最後のSummaryにて、
「Lot of exciting things happening in the Java Servlet 3.0 API(Java Servlet 3.0 APIで多くのエキサイティングな事が起こる。)」
とあった通り、エキサイティングな内容でバージョンアップが期待される。
富士フイルム&F2M&NRI&トランスコスモス 主催 次世代ネットビジネスを勝ち抜くマーケティング戦略セミナー(5/23:東京)
InfoQは、独創的なRubyCLRの開発者であり、IronRubyを世に出すためにマイクロソフトが雇い入れたJohn Lam氏と話す機会を得た。Johnの正式な肩書きはDynamic Language Runtimeチームのプログラムマネジャーである。
テレカンファレンスとデスクトップを共有するツールを使いこなすことは、現在のビジネスにおいて重要なスキルになっています。本稿は、これらの情報と裏技を提供します。
Jeremy Deane takes a look at writing a Restful ESB. He explains how commercial ESB's were considered and NetKernel was ultimately used to provide the implementation.
アジャイルプラクティスは新チームメーンバーが知りたい情報を直接提供するものではありません。そこで私は、新しいチームメンバーの「セットアップ時間」の削減するために、新しいプラクティスを提案します。
このレポートでは複数のチームが動いているアジャイル環境において、どのようにバージョン管理を行えばいいかを説明します。このスキームは"Scrum and XP from the Trenches(InfoQのミニブック)に出てきた企業で私たちが新しく採用した方法です。
本稿では、Steve Vinoski氏が、プログラミング言語ErlangとWebサーバーYawsを使用したRESTful Webサービスを構築する方法を説明します。
この記事では、現在Gearsが提供している機能を学び直すとともに、Gearsが将来備える可能性のある機能を紹介することで、Gearsが目指すものを明らかにしていきたいと思います。そして最後に筆者の私見も交えつつ、Web技術の将来像について少し想像を巡らせたいと思います。
No comments
返信