Tomcat 6で実現!
Ajaxを超える通信技術Comet
株式会社アメニクス
x-lab チーム
2007/12/12
Ajaxを超える? Tomcat 6で搭載されたCometとは?
今回の主な内容 |
前回はTomcatを“安全”に活用するために、ツールを使った運用の仕方やTomcatの設定について解説しました。
今回はTomcatの安全性から少し離れて、Tomcat 6の新機能の利用方法について解説します。Tomcat 6では、いくつかの大きな拡張がありましたが、今回はJ2SE 1.5で実装されたNew I/O API(java.nioパッケージ)を用いたComet(コメット)通信について解説します。
おさらい 「通常のHTTPでの通信」 |
通常のHTTPでの通信はクライアントのWebブラウザなどからサーバへリクエストを送信し、サーバはリクエストを解釈してレスポンスを返します。つまり、通信のタイミングはクライアント側が握っており、サーバ側から見ると好きなタイミングで通信ができないので、クライアントのWebブラウザから発信されるリクエストに対してレスポンスを返す、という処理を1サイクルとして行っている「プル型の通信」といえます。 |
■ 疑似的なリアルタイム通信
プル型の通信では、サーバ側で情報の更新があった場合などにリアルタイムにデータを取得できません。現在のWebアプリケーションで「疑似的なリアルタイム」のデータ更新を行うためには、クライアント側から定期的にリクエストを送信するなどの対応を取っています。
しかし、このような処理はクライアント・サーバに掛かる負荷が大きいという問題に併せて、通信負荷が非常に大きくなりクライアント数が増えれば増えるほど処理するトラフィックが増えてしまうという問題があります。
■ クライアント側だけでなくサーバ側からも非同期処理を実現するComet
このような問題を解決するために開発された技術がCometです。Cometは、HTTPの通信をそのまま利用しつつ、疑似的な「プッシュ型通信」を行う仕組みになっています。
Cometでは、まずクライアントから発行されたリクエストをサーバ側で受けた後に、HTTPコネクションをサーバで開きっぱなしにするため、クライアントに対して送信するはずのサーバからのレスポンスを待たせます。こうすることで、データ送信のタイミングをサーバ側へ委譲します。こうして、自分が送信したリクエストの内容を反映させる場合や、ほかの人が送信したリクエストに対してサーバが処理したいときに、レスポンスを返します。
サーバがクライアントへレスポンスを返した直後に、またクライアントからリクエストを送信させることでまた先の状態に戻り、疑似リアルタイム通信ができるようになり、チャットのようなリアルタイム更新アプリケーションの実装ができるようになります。
図1 コメットのアーキテクチャ(@IT「リバースAjax機能はAjax+Javaをもっとやさしくする?」より再掲載) |
Ajaxは、クライアント側からの非同期処理を実現する技術ですが、Cometはそれに加えて、サーバ側からの非同期処理も実現できる技術なのです。詳細は@ITの記事「リバースAjax機能はAjax+Javaをもっとやさしくする?」をご参照ください。
Tomcatを用いてCometを実装するには?
Tomcat 6では、Cometを実装できるコネクタは2つあります。
■ APRコネクタは専用ライブラリが必要
1つはNIO(New I/O)のコネクタを用いる方法で、もう1つはAPR(Apache Portable Runtime)コネクタを用いて実装する方法です。
図2 APRのぺージ |
APRを用いる方法は、2007年12月現在では導入に専用ライブラリの導入など必要なので、今回はNIOコネクタを用いてCometを実装してみましょう。
■ NIOコネクタを使用するためのTomcatの設定
まず、NIOコネクタが利用できるようにTomcatの設定を変更します。server.xmlをエディタで開いて次のように編集してください。server.xmlの中身の詳細は前回の「Tomcatの主要な設定はserver.xmlで」以降をご参照ください。
server.xmlを開いたら、connectorのprotocolを「org.apache.coyote.http11.Http11Protocol」から「org.apache.coyote.http11.Http11NioProtocol」へと変更します。
server.xmlの変更 |
<Server port="8005" shutdown="SHUTDOWN"> |
ファイルの編集が終わったら保存し、Tomcatを再起動することでNIOコネクタが有効になります。後からweb.xmlの修正で再起動が必要になるので、取りあえずこのまま次に移りましょう。
Tomcat 6でCometを使うための設定はこれで終わりです。次ページではCometを使ったチャットアプリケーションの実装方法を解説します。
1-2-3 |
INDEX | ||
第3回 Tomcat 6で実現! Ajaxを超える通信技術Comet | ||
Page1 Ajaxを超える? Tomcat 6で搭載されたCometとは? Tomcatを用いてCometを実装するには? |
||
Page2 Cometを使ったチャットアプリケーション |
||
Page3 Cometでチャットをしてみよう! 次回はTomcatが持つセキュリティリスクについて |
Tomcatはどこまで“安全”にできるのか? バックナンバー 連載インデックスへ»
- 第1回 “安全”のためにTomcatを理解し、構築し、動作させる
- 第2回 Tomcatをツールで運用し、設定の基礎を知る
- 第3回 Tomcat 6で実現! Ajaxを超える通信技術Comet
- 第4回 Tomcatのセキュリティとリスクの基本分かってる?
- 第5回 無料でWebアプリにありがちな脆弱性を調べて治す
- 最終回 Tomcatを安全にするセキュリティマネージャとは?
Java Solution全記事一覧 |
- Webアプリにおけるサーバとクライアントの常識 (2008/9/1)
Webアプリの常識として、サーバとは何か? クライアントとは何か? そして、その関係性をあらためて教えましょう - Webの上のポジョをステートフルにつなぐJBoss Seam (2008/8/28)
アノテーションでDIやO/RマッピングのXML地獄から解放してくれたり、双方向DIやEJBの簡素化など利点がいっぱい - 例外とキー操作、ゲームの「判定」、コンテキストを知る (2008/8/21)
携帯電話のキー操作やゲームの「当たり判定」に加え、例外やコンテキストなどJava開発全般に通じる文法の基礎も解説 - 最新ExcelフォーマットをJavaで操作するための基礎 (2008/8/18)
Office Open XMLフォーマットのExcelデータをDOM操作用のJava標準APIで作成・参照・更新・削除してみよう
|
|
スポンサーからのお知らせ
- - PR -
お勧め求人情報
**先週の人気講座ランキング**
〜eラーニング編〜
◆ | New! それはスペックで、導入が目的ではない 導入の「先」を見据えた、ITIL運用とは? |
◆ | New! 見れば必ず気に入る“机の上”PCサーバ 小さくて静か。ユーザー目線で考えた自信作 |
◆ | New! あなたの会社の将来は本当に大丈夫? 屋台骨を支えるIT人材、育成できてますか? |
◆ | New! いま、SaaSエンジニアがおもしろい! 〜エンジニア・キャリア進化論(第10回)〜 |
◆ | このご時勢、数年後の計画は分からない 迷った時のミッドレンジストレージはコレ |
◆ | 複数のストレージを“1つ”にできる、 ストレージ管理の「魔法の箱」を徹底解剖 |
◆ | シンプル・簡単 iSCSI仮想化ストレージ ITインフラ全体の“正しい仮想化”実現! |
◆ | ソフトウェアで、できることとは? ビジネス直結「リカバリ・マネジメント」 |
◆ |
そのサーバに統合して安心ですか? 「現実的なサーバ統合」の3つの要件とは |
◆ | ――品質は上げてコストは半減―― ロボットが見せるPC管理の新しい形 |
◆ | WebLogicとCoherenceが融合した グリッド型アプリケーションサーバを実現 |
◆ | 「偽装」も「疑わしい動き」も逃さない 1つのエージェントで徹底的にPCを守る! |
◆ | もはや、プライベートのツールではない! 企業・自治体も導入するSNSの効果とは? |
◆ |
「リポート機能は“すごい”のひとこと」 ある保険会社の“DB監査製品”導入事例 |
◆ |
新しい技術の導入 ⇒ また最初からやり直し の必要がなくなる「普遍性のあるノウハウ」 |
◆ | ユーザー任せのパスワード管理は危険! 法整備対策に有効な高効果・低コスト製品 |
◆ | 『フリーでやってみたいけど……』 そんなエンジニアの不安をすべて解決! |
◆ | 「だれも見たことがない、10年後の 『ソフトウェア産業』を一緒に創りたい」 |
◆ | 「ウチはUTMなんかいらない」ってホント? エンタープライズ市場でも選ばれる理由 |
◆ | 物理も仮想も効率的に運用・管理したい! 問題と解決策はこちら≫≫ |
◆ | 【工事進行基準】対策をチャンスに! プロジェクト「見える化」で効率アップ! |
◆ | 【工事進行基準】システム業界も導入! 新時代のプロジェクト管理はこれで決まり |
◆ | 看護休暇、時短勤務、育児フレックス……。 各種の支援で「柔軟な働き方が可能な環境」 |
◆ | 『こうあるべし』ではなく、全ての人が 力をフルに発揮できる職場環境を考える |
◆ | 宅急便もサーバも、止めない・止まらない これが、クロネコヤマトのデータセンター |
◆ | 高評価の技術採用で“いいところ取り” 低価格なのに機能は“フル”な次世代UTM |
◆ | “超高速”なのに“低価格”なUTM その性能の高さの秘密とメリットに迫る! |
◆ | 金融業界でのBPM適用<成功ケース>紹介 BPMシステムの導入のための5つのポイント |
◆ | 間違いだらけのセキュリティ対策から脱却 「脅威の見えない化」対抗する2つの特徴 |
◆ | “Windows”も“Linux”も“Solaris”も SAP運用に最適な【x64サーバ】とは? |
◆ | 転職した理由は「社風が合うと感じたから」 入社2カ月“勝ち組エンジニア”に話を聞く |