サーブレットはHTTPだけじゃない!
NGN時代の有力な基盤技術? SIPサーブレット入門
ナレッジオンデマンド 宮下知起
2007/7/30
SIPサーブレットが必要とされる背景
■ そもそもSIPとは何か? − NGN時代の到来
今回の主な内容 ・ SIPサーブレットとは何か? ・ HTTPサーブレットとの類似点から見たSIPサーブレット ・ HTTPサーブレットとの相違点から見たSIPサーブレット ・ ソースコード・シーケンス図でSIPサーブレットをひも解く ・ SIPサーブレットも試してみよう |
IP電話による通話は、VoIP(Voice over IP)や、「シグナリング」と呼ばれる発信者と着信者の接続を確立・切断するための技術によって実現されています。従来、シグナリングにはH.323プロトコルやベンダの独自プロトコルが使われていましたが、ここ数年でSIP(Session Initiation Protocol)を採用するケースが増えてきました。
さらにSIPは、次世代のネットワークインフラであるNGN(Next Generation Network)において、標準プロトコルとして採用されています。SIPはIP電話の中核技術ですが、電話にとどまらず、チャットやプレゼンス(在席確認)やメディアシェアリング(通話をしながらファイル共有、動画共有)など通信系と情報系を融合した新しいコミュニケーションサービスを構築するためのプロトコルとして期待されています。
■ SIPはJavaの新しいトレンドの1つ
このような時代のニーズから、JavaにもSIPプロトコルを制御するAPIが標準化されています。その1つがSIPサーブレットです。
SIPサーブレットのコンテナ(アプリケーションサーバ)も各社が製品化しており、海外ベンダではBEAシステムズやオラクル、IBMなどが、国内ベンダでは富士通やNECなどがSIPに対応したJavaアプリケーションサーバを出荷しています。
最近では、サン・マイクロシステムズも、Java EEのオープンソースプロジェクトであるGlassFishを通じて、オープンソースのSIPアプリケーションサーバの共同開発を発表しました(参考:ITMedia News「SunとEricsson、GlassFishを通じて共同開発」)。いまJavaの世界では、SIPは新しいトレンドの1つです。
■ なぜJavaでSIPなのか
SIPは標準プロトコルでありながら、ベンダが独自に拡張を行うため、多くの場合において、異ベンダ間の接続ができない問題を抱えています。そこで、独自に拡張されたSIPシステム間を接続する取り組みが登場しています。オープンソースプロジェクト「SIProp」は、SIPの方言を吸収する仕組みをオープンソースとして公開し、あらゆるSIPシステム間の接続を実現しようとしています。
画面1 SIPropの開発者サイト |
JavaによるSIPのサポートは、さらにもう一歩進み、完全な標準化を目指した流れといえるでしょう。プロプライエタリな技術が占めていた通信の世界にJava標準がもたらすメリットは非常に大きいでしょう。具体的には、以下のように整理できます。
- 開発生産性が高い
デベロッパのノウハウが豊富なJavaで開発できる - 技術者の確保が容易
従来の通信系エンジニアだけでなく、Javaを習得したアプリケーションエンジニアを開発に投入できる - 拡張性がある
Javaアプリケーションは開発の自由度が高い
これらの特長によって、スピーディーなサービスデリバリ(ニーズに応えるサービスのタイムリーな提供)、アプリケーション(サービス)の拡張や既存サービスとの連携が容易といったメリットが享受でき、NGN時代の企業情報システムにおける通信系と情報系の融合に、さまざまなチャレンジを生み出す可能性を秘めています。
SIPサーブレットとは何か?
■ JAIN SIPとSIPサーブレット=Java SEとJava EE
Javaの仕様を策定するJCPでは、JSR32でJAIN SIPと呼ばれる、JavaでSIPを扱うためのAPIが策定されています。JAIN SIPとSIPサーブレットの関係は、JAIN SIPがJava SEだとすると、SIPサーブレットはJava EEという見方をすると理解しやすいでしょう。
すなわち、サーバサイドのサーブレットでSIPを制御するのがSIPサーブレットです。SIPサーブレットはJSR116として定義されています。その仕様は、JCPのページで確認できます。なお、2007年7月現在、最新仕様としてSIP Servlet v1.1(JSR289)が策定中です。
画面2 JCPのサイト(JSR116 SIP Servlet API) |
HTTPサーブレットとの類似点から見たSIPサーブレット
■ HTTPサーブレットとの類似点その1:リクエスト
SIPサーブレットの特長として、HTTPサーブレットと非常によく似ているという点が挙げられます。HTTPサーブレットがHTTPリクエストを受け付け、それに応じたアプリケーションが動作するのに対して、SIPサーブレットはSIPリクエストを受け付け、それに応じたアプリケーションが動作します(図1)。
図1 HTTPサーブレットとSIPサーブレットの類似点 |
また、SIPサーブレットでは、実行環境の仕様としてシグナリングの実装、アプリケーションのライフサイクル、トランザクション、セッション管理、セキュリティなどが定義されています。これらの仕様を満たしたものがSIPアプリケーションサーバです(図2)。
図2 SIPサーブレットとSIPアプリケーションサーバの関係 |
■ HTTPサーブレットとの類似点その2:継承
HTTPサーブレットによく似た点をもう少し見ていくと、例えば、HTTPサーブレットはjavax.servlet.http.HttpServletを継承しますが、SIPサーブレットはjavax.servlet.sip.SipServletを継承します。また、SIPサーブレットのライフサイクルは、基本的にHTTPサーブレットのそれと同様です。
■ HTTPサーブレットとの類似点その3:doXxxメソッド
また、HTTPサーブレットには、GET/POSTリクエストに対応するdoGet/doPostメソッドがあります。同様に、SIPサーブレットにはSIPリクエストに対応するdoXxxメソッドがあります。開発者は、リクエストに応じて必要なdoXxxメソッドをオーバーライドして実装を行います。ただし、SIPサーブレットのメソッドには引数が1つしかありません(表1)。
表1 SIPリクエストをハンドリングするためのメソッド例 | |||||||||||||||
|
■ HTTPサーブレットとの類似点その4:セッション管理
セッション管理の概念も、基本的にHTTPのHttpSessionと同じです。ただ、SIPサーブレットには、HTTPサーブレットには存在しない「SIPアプリケーションセッション」という概念があります。これは、SIPセッションとHTTPセッションを関連付けて管理するのに合わせ、アプリケーションデータを格納する機能も提供します。
それでは次に、HTTPサーブレットにないSIPサーブレットの特徴的な機能について見ていきましょう。
1/3 |
INDEX NGN時代の有力な基盤技術? SIPサーブレット入門 | ||
Page1 | ||
SIPサーブレットとは何か? HTTPサーブレットとの類似点から見たSIPサーブレット |
||
Page2 | ||
HTTPサーブレットとの相違点から見たSIPサーブレット | ||
Page3 | ||
ソースコード・シーケンス図でSIPサーブレットをひも解く SIPサーブレットも試してみよう |
Java Solution全記事一覧 |
- 実運用の障害対応時間比較に見る、ログ管理基盤の効果 (2017/5/9)
ログ基盤の構築方法や利用方法、実際の案件で使ったときの事例などを紹介する連載。今回は、実案件を事例とし、ログ管理基盤の有用性を、障害対応時間比較も交えて紹介 - Chatwork、LINE、Netflixが進めるリアクティブシステムとは何か (2017/4/27)
「リアクティブ」に関連する幾つかの用語について解説し、リアクティブシステムを実現するためのライブラリを紹介します - Fluentd+Elasticsearch+Kibanaで作るログ基盤の概要と構築方法 (2017/4/6)
ログ基盤を実現するFluentd+Elasticsearch+Kibanaについて、構築方法や利用方法、実際の案件で使ったときの事例などを紹介する連載。初回は、ログ基盤の構築、利用方法について - プログラミングとビルド、Androidアプリ開発、Javaの基礎知識 (2017/4/3)
初心者が、Java言語を使ったAndroidのスマホアプリ開発を通じてプログラミングとは何かを学ぶ連載。初回は、プログラミングとビルド、Androidアプリ開発、Javaに関する基礎知識を解説する。
|
|