後編 SIPアプリケーションを拡張する
高山義泉
2006/1/21
前編では、SIPアプリケーションの構築を試み、SIPの役割を理解しました。後編では、前編で構築した環境に、SIPレジストリサーバ、SIPプロキシサーバを配置し、そこでユーザーの位置情報や状態を管理します。相手のアドレスを知らなくても、相互に相手を見つけてコミュニケーションできるようシステムを拡張してみましょう。
図1 bob@abc.comがtom@abc.comと通話する場合、JSLEEサーバに対してtom@abc.comの呼び出しをリクエストする。tom@abc.comはJSLEEサーバからのリクエストに応答することでbob@abc.comとの間で通話が開始される |
環境の構築 |
本稿では、環境の構築を以下の順序で行います。
- JSLEEサーバ環境に必要なソフトウェアの準備
- Jakarta-antのインストールと設定
- PostgreSQLのインストールと設定
- JSLEEサーバのインストール
- アプリケーションの配布
なお、筆者はOS環境にRed Hat Enterprise Linux AS3を利用しました。
■JSLEEサーバ環境の構築
JSLEEサーバの環境を構築するには、下記のソフトウェアを用意します。
- Opencloud Rhino SDK
JSLEEアプリケーションサーバ(Rhino SDKを動作させるためには、Linux、Solaris、HP-UX環境が必要になります)
- JDK 1.4以上
- PostgreSQL
フリーのRDBMS(Rhino SDKの設定情報などを格納します)
- Jakarta Ant
アプリケーションのコンパイル、配備を容易に行うためのツール
- NIST SIP Communicator
SIP VoIPコミュニケーションクライアントツール
■Jakarta-antのインストール
これはOpenCloud Rhino SDKが提供しているSIPサンプルアプリケーションを容易に配備するために必要になります。
Apache Antは、Apacheプロジェクトが提供する、Javaベースのコマンドラインビルドツールです。 Antはアプリケーションプロジェクトの構造やコマンドの発行に関する定義をbuild.xmlに定義し、実行することになります。J2EEアプリケーションサーバやJSLEEアプリケーションサーバなどに付属しているサンプルアプリケーションの多くはApache Ant形式で提供されており、これらサンプルアプリケーションをコンパイル、配備する際には非常に役立ちます。
http://ant.apache.org/から「Download」をクリックし、「apache-ant-1.6.5-bin.X」をダウンロードします(ダウンロードファイルの圧縮形式は何でも結構です)。ダウンロード完了後、圧縮ファイルを展開します。本稿ではCドライブのルート上に下図のようなディレクトリ構成で展開されています。
■Jakarta-antの設定
下記を参考に、OSに合った環境設定を行ってください(それぞれの環境に応じて、ディレクトリ位置を読み替えてください)。
- Windowsの場合
set ANT_HOME=c:\apache-ant-1.6.2
set JAVA_HOME=c:\jdk1.4.2
set PATH=%PATH%;%ANT_HOME%\bin
- Linux/UNIX(bash)の場合
export ANT_HOME=/usr/local/apache-ant-1.6.2
export JAVA_HOME=/usr/local/jdk-1.4.2
export PATH=${PATH}:${ANT_HOME}/bin
- Linux/UNIX(csh)の場合
setenv ANT_HOME /usr/local/apache-ant-1.6.2
setenv JAVA_HOME /usr/local/jdk-1.4.2
set path=( $path $ANT_HOME/bin )
■PostgreSQLのインストール
Rhino SDKはコンテナの設定情報やアプリケーションの配備情報をすべてRDBに格納します。Rhino SDKは標準でPostgreSQLをサポートしています。PostgreSQLは、Rhino
SDKと同一マシンまたリモートマシン上にインストールすることができます。Rhino SDKとPostgreSQLはJDBCを用いて通信を行います。
PostgreSQLのダウンロード、インストールについては、次のサイトに関連する情報が記載されているので、そちらを参考にインストールを行ってください。
- PostgreSQLで作るLinuxデータベース(@IT Linux Square)
- 日本PostgreSQLユーザー会
■PostgreSQLの設定
・データベースユーザーの作成
PostgreSQLを起動後、Rhino SDKからPostgreSQL DBにアクセスするためのユーザーを作成します。下記のようにコマンドを実行します。
$ createuser R |
・TCP接続の設定
Rhino SDKとPostgreSQLサーバは、JDBCを用いて接続を行います。JDBCは、TCP/IP上で通信を行うため、PostgreSQLサーバに外部からアクセスするためのプロトコルとしてTCP/IPをサポートするように設定する必要があります。すでに設定されている場合には必要ありません。
設定ファイル |
$PGDATA/postgresql.conf |
・アクセスコントロールの設定
この設定は、Rhino SDKとPostgreSQLを別のマシンにインストールした場合に必要になります。同一マシンにインストールしている場合には、必要ありません。
リモートマシン上からPostgreSQLサーバにアクセスをする際に、アクセス元のマシン名、アクセスするDBやその際のユーザー名を設定する必要があります。
設定ファイル: |
$PGDATA/pg_hba.conf |
デフォルト: |
#TYPE DATABASE USER IP-ADDRESS IP-MASK METHOD |
変更後: |
#TYPE DATABASE USER IP-ADDRESS IP-MASK METHOD |
要素 | 概要 |
rhino: |
アクセスするデータベース名 |
postgres: |
データベースサーバへのアクセスユーザー名 |
192.168.0.5: |
アクセス元マシンIPアドレス |
255.255.255.0: |
アクセス元マシンネットマスク |
password: |
データベースサーバへのアクセスパスワード |
■JSLEEサーバのインストール
本稿ではJSLEEのアプリケーションサーバとして、OpenCloud Rhino SDKを用います。Rhino SDKは、Opencloud社が提供するJSLEEアプリケーションサーバ、Rhinoの開発、評価版バイナリです。Rhino
SDKは、評価版としてフリーでダウンロードすることができます。
Opencloud Rhinoは、JSLEE1.0に完全準拠かつフェイルオーバ機能やWeb管理インターフェイスを提供する製品です。加えてOpencloud社は、ここで紹介するSIPを操作するためのアダプタや、その他プロトコルを操作するための各種リソースアダプタを提供しています。それでは、まずバイナリをダウンロードしましょう(https://stampede.opencloud.com/public/)。
「RhinoSDK-1.4.0-ga.tar」をダウンロードします。併せて「RhinoSDK-1.4.0-admin-manual.pdf.gz」もダウンロードしておくとよいでしょう。ダウンロードしたバイナリを解凍します。次に、解凍したディレクトリ以下にあるインストーラを実行します。
% ./rhino-install.sh allation complete. |
■アプリケーションサーバの起動
JSLEEサーバを以下のコマンドを実行して起動します。
<JAIN SLEEサーバホームディレクトリ>/start-rhino.sh |
■アプリケーションのデプロイ
まず、環境に合わせ設定を行います。次のディレクトリに移動し、設定ファイルを変更します。
サンプルアプリケーションディレクトリ: |
<ドメイン名>および<サーバ名.ドメイン名>の2つのエントリをカンマ区切りで入力するドメイン名は、sipアドレス呼び出しに対して操作できるドメインを定義するものになります。ここにエントリされていないドメインを持つsipアドレスに対しての呼び出しがあっても、PROXYサービスは動作しません。
下記のコマンドを実行してアプリケーションのデプロイを行います。
実行 |
%cd <JAIN SLEEサーバホームディレクトリ>/examples/sip |
■動作確認
・JAIN SIPクライアントの設定を変更する
SIPアドレスを用い相手を呼び出すため、SIP Proxyサーバの指定を行います。
設定ファイル:<sip-communicatorホームディレクトリ>/sip-communicator.xml |
・JAIN SIPクライアントを起動する
前編と同様にJAIN SIPクライアントを起動します。
ログイン画面が表示されるので、sipアドレスのユーザー名(@より左)を入力し、「Login」ボタンをクリックします。SIPコミュニケータが設定のSIPアドレスおよびIPアドレスをSIPレジストラサーバに登録します。ログイン時、JSLEEサーバには以下のログが表示されます。
- sent request= REGISTER sip:server1.abc.com:15060; |
ログインが完了すると以下の画面が表示されます。
■通信する
いよいよ、通信を行ってみましょう。リストから相手を選び「Dial」をクリックします。
ダイアル時、JSLEEサーバには以下のログが表示されます。
Call-ID: 436445551eb78c863115d5d53d9755be@200.1.1.1 |
相手先への接続が確立されると、以下の画面が表示されます。
さて、それでは、JSLEEサーバ上にどのようなSIPメッセージが届いているのかを確認してみましょう。そこで、まずは、JSLEEサーバのロギング設定を変更します。
まず、管理サーバにアクセスします。ログインのページが表示されたら、次のデフォルトユーザー、パスワードでログインします。
アクセスURL |
https://hostname:
<ポート番号> |
ユーザー名/パスワード |
rhino/rhino |
ポート番号は、rhinoインストールディレクトリ/config/config_variablesファイルのWEB_CONSOLE_HTTPS_PORTエントリを確認してください。
メインページから「Container Configuration」の「View Logging MBean」をクリックします。次に、「setLogLevel」の項目にあるプルダウンメニューから「sip.transport.manager」を選択し、その下のテキストボックスに「DEBUG」と入力します。最後に、「setLogLevel」ボタンをクリックし完了です。
さて、それでは、もう1度、SIP Communicatorを用い、JSLEEサーバにアクセスしてみましょう。今度は、次のようなSIPメッセージが、JSLEEサーバ起動ウィンドウに表示されたでしょう。
2005-08-05 18:08:01.771 DEBUG [sip.transport.manager] incomingSipResponse: |
1/2 |
INDEX |
||
Javaで音声チャットアプリを作ろう(後編) | ||
Page1 環境の構築 |
||
Page2 SIP Communicatorを評価すると? 次世代コミュニケーションのかたちを考える |
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に関する基礎知識を解説する。
|
|