Posts tagged ‘Comet’
Servlet 3.0 の新機能概要
Servlet 3.0 の新機能をプレゼン形式でまとめてみました。個々の機能に関する詳細は別途記載する予定ですが、ここでかんたんに概要を説明します。
Servlet 3.0 は Servlet 2.5 からかなり多くの改良が施されています。
Java SE 5 から利用可能になった、アノテーションを利用し、今まで web.xml に記載していた Servlet や Filter 等の設定をアノテーションで記載できるようになり開発生産性が大幅に向上しました。
また、プラガビリティの向上として、外部のフレームワークやライブラリの設定を web.xml 以外のファイル (web-fragment.xml) に記載できるようになったため、web.xml の肥大化を抑制でき、またフレームワークの設定管理が容易になっています。
その他では Servlet API 自身でマルチパートを扱えるようになったため、Servlet API だけでファイルをアップロードすることができるようになっています。
さらに、Servlet 3.0 から非同期処理を実現できるようになっています。この非同期処理機能は、Comet/Reverse Ajax 等のアプリケーションを実装できる他、DB アクセス等とても処理に時間がかかるような処理を非同期で処理する事ができるようになります。例えば、HttpServlet のスレッドとは別のスレッドで非同期に実現する事で DB が高負荷時に HttpServlet の最大スレッド数に到達し Web のアクセスが不可になる状態を防ぐ事もできます。
その他では、HttpServletRequest に login/logout/authenticate のメソッドが含まれ、プログラムを利用しログイン/ログアウト処理を実装できるようになった他、@ServletSecurity を使用して web.xml に記載していた < security-constraint > の設定をプログラム中で宣言できるようになっています。
改良された、Servlet 3.0 を是非お試しください。
web.fragment.xml に関する詳細は 「Servlet 3.0 web-fragment.xml による設定」 のエントリをご参照ください。
マルチパートの詳細は 「Servlet 3.0 File Upload 機能」 のエントリをご参照ください。
POJO Comet Framework Atmosphere 0.3 Released
Grizzly の開発者の1人である Jean Francois は
Atmosphere 0.3 のリリースを発表しました。
Atmosphere は POJO ベースで Comet (Reverse Ajax) を
実装することのできるフレームワークなのですが、
今回のリリースではクラスター化されたシステムでも
利用できるようになったようです。
その他、RESTful,Scala 等への対応という事で、
以前のバージョンに比べて大幅に機能拡張がされているようです。
Atomosphere のフレームワークは Tomcat, Jetty, JBoss, WebLogic
WebSphere 等の環境でも動作させる事が可能ですので、Comet の
アプリケーションを実装されたい方は是非試してください。
Atmosphere 0.3 から追加された新機能
* Full REST based application using Atmosphere core module
* Scala support: Use Scala to write powerful asynchronous web application
* Bayeux Protocol: You like the Comed/Bayeux Protocol? Run it on of Atmosphere.
* Cluster supported: decide between Shoal or JGroups
* Annotations Injection: You can now write your own annotation and inject it as needed
* Use Atmosphere as a Filter instead of a Servlet
* Customize Broadcaster Scope and re-write Twitter.com
* Use Filters like Google Guice
* Run on Glassfish, Tomcat, Jetty, JBoss, WebLogic, WebSphere using Servlet 3.0 or native Comet implementation
* Execute synchronous broadcast or asynchronous broadcast using BroadcasterFuture
* Filter and transform broadcasted message using BroadcasterFilter
* Work with the new Grails Atmosphere plug-in
* Play tic-tac-toe using Atmosphere
Atmosphere 0.1 GA リリース
Grizzly プロジェクトより派生した Atmosphere プロジェクトの
初めての成果物 (0.1 GA) がリリースされました。
Atmosphere プロジェクトでは汎用的に使える Comet フレームワークとして
AtmosphereHandler インタフェースを実装して簡単に Comet アプリケーションを
作成することができるようになります。
チャットの実装例
今までは Comet のアプリケーションを作成する場合、サーバ側の実装は
各 Web コンテナの Comet Engine の実装に応じてばらばらに実装しなければ
なりませんでしたが、このフレームワークを利用することで、一度実装した
Comet のサーバ側の実装を様々な Web コンテナ上で動作させることができるようになります。
サポートされる Web コンテナ:
Tomcat,Jetty, GlassFish,Weblogic, Jersey,Grizzly
チャットアプリケーションの実装例:
Getting started with Atmosphere CPR part 1: Writing the HelloWord of Comet….a Chat application
Comet のアプリケーションに興味のある方は是非このフレームワークをお試しください。
ちょっと春らしく:
Grizzly/GlassFish Comet はスケールする?
今、Grizzly のメーリングリストでおそらく皆様が
もつ疑問について問い合わせされている人がいます。
概要を説明すると、Grizzly は 本番環境で耐えうるだけの Comet の接続を受け付け
レスポンスを返すことができるか?ということについてです。
これについて、開発者の Jean Francois は作成するアプリケーション
(long poll/streaming)によって違うが、ユニットテストを行った際には、
ちゃんとスケールしているとのことでした。
実際に、社内の IM で大量のユーザが利用しています。
ベンチマークで使用したユニットテスト:
https://grizzly.dev.java.net/nonav/xref-test/com/sun/grizzly/comet/CometUnitTest.html
また、今年の JavaOne で彼は、Grizzly のベンチマークに関連した
セッションを発表するようです。
(今年は是非行きたかったのですが、このご時世なので行けません。(T_T))
また、Jetty と比べても Grizzly(GlassFish) の方がスケールするようです。
(彼は Jetty も好きなようですが)
実際、Jetty のサスペンドの部分に若干問題がるようで、Jetty はスケールできないようです。
(例外が出力され、サーブレットが2度呼び出しされる)
また、Grizzly の場合、Comet の実装コードは CometContext.notify() と
NotificationHandler に実装すれば良いだけなので、開発者の皆様は、
Jetty で実装するよりも格段にかんたんに実装できるようになるとのことでした。
大規模環境で、GlassFish/Grizzly の Comet を検討されている方は今年のJavaOneの
Jean-Francois のプレゼンを楽しみにしていてください。
ICEfacesとGlassFishでCometアプリケーション
ICEfaces を使って Ajax Push(Comet) を実現するための、資料が公開されています。
例えば、ある人が Google Map で座標を動かした時に、他人の
Google Map の座標を動かすというようなことも紹介してました。
(Google Map は Liferey 上のポートレットとして動作)
現在のHTTPの仕様の制限上、単一のブラウザが同じサーバに対して2つのコネクション
しかはれないので、ポートレット内で Ajax Push を実現するためには色々と考える
必要があるかと思いますが、限定的に使う分には面白いかもしれません。
プレゼン資料:
From Ajax Push to JSF 2.0: ICEfaces on GlassFish
追記(2009/03/14)
Suhail Ahmed さんから参考情報を頂きました、上記で紹介した
ICEfaces Portlet を使ったサンプルを下記に公開されて
いるようですので、ご興味のある方は是非参照してください。
Webinar: Filthy Rich Portlets with ICEfaces and Liferay
その他参考情報
ブログ:
http://weblogs.java.net/blog/jfarcand/archive/2007/05/new_adventures.html
http://weblogs.java.net/blog/jfarcand/archive/2007/03/new_adventures_1.html
http://weblogs.java.net/blog/jfarcand/archive/2007/06/new_adventures_3.html
http://weblogs.java.net/blog/jfarcand/archive/2008/11/writing_a_twitt.html
http://cometdaily.com/2008/04/01/new-technology-new-problems-delayed-pushes-operations/
プレゼン資料:
http://weblogs.java.net/blog/jfarcand/archive/2008/10/applying_asynch.html
http://wikis.sun.com/display/TheAquarium/Comet
GlassFish で Comet のオンラインセミナー
今日の日本時間で明け方4時ころに、Grizzly の開発者である
Jeanfrancois がオンラインセミナーを開催しました。
その発表内容が下記にてストリーミングで提供されていますので、
もし、ご興味のある方は見てください。
http://www.ustream.tv/channel/theaquarium
その他にも、今日は注目の技術エントリを紹介します。
開発関連
● WS-Addressing と
ステートフル Web サービス
●
RESTful Web サービス と Jersey の Client API
MySQL関連
●
Sun and MySQL: How It Stacks Up for Developers
●
GlassFish と MySQL を連携した Web サービスの構築
● Using MySQL With Java Technology
SailFin 関連
● Adding Voice to Java EE With SIP Servlets
GlassFish でかんたん Comet (Reverse Ajax, Ajax Puxh)アプリケーション
以前、Cometのアプリケーションを POJO で作成できるフレームワークである
Atmosphere のプロジェクトについて紹介しましたが、このプロジェクトも
ずいぶんプロジェクトが進行したようです。
タイトルでは、GlassFish と書きましたが、このプロジェクトの成果物は
Tomcat, Jetty 等他の Servlet コンテナ上でも動作します。
この、Atomosphere のPOJO フレームワークである Grizzlet のサンプルが
下記で公開されましたので、Comet のアプリケーションにご興味のある方は
是非、一度御確認いただければと思います。
Grizzlet Flickr サンプルアプリケーション
ソースコードサンプル
Ajax Push(Comet)についてのセッション
Ajax Push(Comet)について、12月に開催されるSun Tech Days 2008 Tokyoでも
海外のエンジニアによって発表されるようです。
2-J-4 Developing Web Applications using Comet and Ajax
脚光を浴びるAjax Push, CometそしてHTTP ストリーミングはWebアプリケーションの
操作性を革新的に変え、参加の時代にWebを突入させました。
Ajaxをベースとするアプリケーションは Webアプリケーション設計のデファクト
スタンダードになっております。
Webアプリケーションはクライアントとサーバ両方のイベントによりリアルタイムあるいは
動的に動作が変化することがより一層重要になっています。
CometはWebクライアントとサーバが非同期にコミュニケーションを行う技術で、
リアルタイム操作や従来のWebアプリケーション、デスクトップアプリケーションなどでは
出来なかった機能が実現可能になります。
本セッションでは、非同期Webの簡単な紹介にて、プロトコルや実現しようと
考えていることについて解説します。
さらにCometとAjaxを用いて分散した二人用ゲームアプリケーションを順を追いながら解説します。
セッションの参加者はDojo, jMaki, Prototype を用いて開発していたり、アプリケーションを
Jetty, Tomcat, GlassFishに展開していても、複数のユーザがコラボレーションしたり
互いに通知したりする機能を付加するのに必要な方法を本セッションで得ることができるでしょう。
Sun Microsystems,Inc.
Michael Li
GlassFish & MySQL でCometアプリケーション
先日10/30(木)、31(金)に開催されたMySQLユーザカンファレンスで
使用したプレゼンテーションはMySQLのサイトからも入手できるように
なるかと思いますが、下記からも入手できるようにしました。
S-D2: GlassFish と MySQLで広がる新しい世界
GlassFishでCometアプリケーション
先日、MySQLカンファレンスにてGlassFishでCometのアプリケーションを
動作させましたが、サンプルのアプリケーションをアップします。
MySQLカンファレンスではGlassFishとMySQLとの連携をデモを行いましたが、
いきなりDB連携は難しいのでかんたんにCometを動かす方法について紹介します。
是非、ここで紹介するプログラムを改造したり参考にして色々と楽しいアプリケーションを
作成してください。
ここで紹介するアプリケーションはボタンを押下すると、サーバに接続する
全てのクライアントに対して同一の数値をサーバからPushし表示させる
Cometアプリケーションです。
1. まずはNetBeans6.1のGlassFIshバンドルをご入手ください。
2. NetBeans, GlassFishをインストールした後、GlassFish上でCometのアプリケーションを動作させる
設定を行ってください。
GlassFishの管理画面へはデフォルトで、http://[インストールマシンのIPアドレス]:4848/でアクセスします。
ログインユーザ名、パスワードはそれぞれ下記を入力しログインできます。
ユーザ名:admin
パスワード:adminadmin
ログインした後、管理画面中より「設定」→「HTTPサービス」→「HTTPリスナー」より
「http-listener-1」を選択し下記のように「追加プロパティ(1)」中に記載される、全ての項目を削除し、
「cometSupport」「true」を入力し保存してください。
これにより、GlassFishでCometのアプリケーションを動作させる事ができるようになります。
3. 次にNetBeansのCometサンプルアプリケーションのプロジェクトを入手してください。
ファイルを展開すると下記のファイルが含まれています。
> jar tvf sample-comet.jar 0 Sat Nov 01 13:40:48 JST 2008 META-INF/ 60 Sat Nov 01 13:40:48 JST 2008 META-INF/MANIFEST.MF 0 Sat Nov 01 13:21:02 JST 2008 sample-comet/ 0 Sat Nov 01 13:21:02 JST 2008 sample-comet/build/ 0 Sat Nov 01 13:21:04 JST 2008 sample-comet/build/web/ 189 Sat Nov 01 13:21:02 JST 2008 sample-comet/build/web/button.html 446 Sat Nov 01 13:21:02 JST 2008 sample-comet/build/web/count.html 438 Sat Nov 01 13:21:02 JST 2008 sample-comet/build/web/index.html 513 Sat Nov 01 13:21:04 JST 2008 sample-comet/build/web/J2EE.dpf 0 Sat Nov 01 13:21:02 JST 2008 sample-comet/build/web/META-INF/ 23 Sat Nov 01 13:21:02 JST 2008 sample-comet/build/web/META-INF/MANIFEST.MF 0 Sat Nov 01 13:21:02 JST 2008 sample-comet/build/web/WEB-INF/ 0 Sat Nov 01 13:21:02 JST 2008 sample-comet/build/web/WEB-INF/classes/ 205 Sat Nov 01 13:21:02 JST 2008 sample-comet/build/web/WEB-INF/classes/HiddenCometServlet$1.class 3473 Sat Nov 01 13:21:02 JST 2008 sample-comet/build/web/WEB-INF/classes/HiddenCometServlet$CounterHandler.class 3476 Sat Nov 01 13:21:02 JST 2008 sample-comet/build/web/WEB-INF/classes/HiddenCometServlet.class 0 Sat Nov 01 13:21:02 JST 2008 sample-comet/build/web/WEB-INF/lib/ 596144 Sat Nov 01 13:21:02 JST 2008 sample-comet/build/web/WEB-INF/lib/grizzly-1.0.21.jar 513 Sat Nov 01 13:21:02 JST 2008 sample-comet/build/web/WEB-INF/sun-web.xml 710 Sat Nov 01 13:21:02 JST 2008 sample-comet/build/web/WEB-INF/web.xml 3081 Sat Nov 01 13:17:06 JST 2008 sample-comet/build.xml 0 Sat Nov 01 13:21:02 JST 2008 sample-comet/dist/ 607377 Sat Nov 01 13:21:02 JST 2008 sample-comet/dist/sample-comet.war 0 Sat Nov 01 13:04:06 JST 2008 sample-comet/nbproject/ 3538 Sat Nov 01 13:04:08 JST 2008 sample-comet/nbproject/ant-deploy.xml 43350 Sat Nov 01 13:17:06 JST 2008 sample-comet/nbproject/build-impl.xml 447 Sat Nov 01 13:17:06 JST 2008 sample-comet/nbproject/genfiles.properties 0 Sat Nov 01 13:04:06 JST 2008 sample-comet/nbproject/private/ 2409 Sat Nov 01 13:04:08 JST 2008 sample-comet/nbproject/private/private.properties 2354 Sat Nov 01 13:17:04 JST 2008 sample-comet/nbproject/project.properties 932 Sat Nov 01 13:17:04 JST 2008 sample-comet/nbproject/project.xml 0 Sat Nov 01 13:04:06 JST 2008 sample-comet/src/ 0 Sat Nov 01 13:04:06 JST 2008 sample-comet/src/conf/ 23 Sat Nov 01 13:04:06 JST 2008 sample-comet/src/conf/MANIFEST.MF 0 Sat Nov 01 13:10:40 JST 2008 sample-comet/src/java/ 3458 Sat Nov 01 13:22:10 JST 2008 sample-comet/src/java/HiddenCometServlet.java 0 Sat Nov 01 13:04:06 JST 2008 sample-comet/test/ 0 Sat Nov 01 13:07:00 JST 2008 sample-comet/web/ 189 Sat Nov 01 13:06:38 JST 2008 sample-comet/web/button.html 446 Sat Nov 01 13:07:04 JST 2008 sample-comet/web/count.html 438 Sat Nov 01 13:05:54 JST 2008 sample-comet/web/index.html 0 Sat Nov 01 13:04:06 JST 2008 sample-comet/web/WEB-INF/ 513 Sat Nov 01 13:04:08 JST 2008 sample-comet/web/WEB-INF/sun-web.xml 710 Sat Nov 01 13:11:50 JST 2008 sample-comet/web/WEB-INF/web.xml |
上記には、サンプルアプリケーションのソースコードと実行ファイルである
「sample-comet.war」、またCometの開発に必要なGrizzlyのAPI(grizzly-1.0.21.jar)
が含まれています。
※ 最新のgrizzly-1.0.x.jarは下記より入手可能です。
https://maven-repository.dev.java.net/nonav/repository/grizzly/jars/
4. 入手したNetBeansのプロジェクトファイルをご自身の環境にインポートします。
NetBeansのメニューより、「プロジェクトを開く」を選択し上記で入手、展開した
ディレクトリを指定してください。

5. プロジェクトを開くと恐らくGlassFishのインストールパスやJDKのインストールパスが
異なるため、いくつか設定を修正して頂く必要があるかと思いますが、それらの参照先を
変更して頂ければNetBeans上でCometのアプリケーションを開発できるようになると
思います。