Java実験室
コミュニケーションアプリケーションの構築

コンテキストアウェアマルティメディアコミュニケーション環境の構築

 1.の環境に、SIPレジストリサービス、SIPプロキシサービスを配置し、そこでユーザの位置情報や状態を管理します。

 
 

 

■JSLEEサーバ環境の構築

 必要なソフトウェア

  • Opencloud Rhino SDK
     JAIN SLEEアプリケーションサーバ
     Rhino SDKを動作させるためには、Linux、Solaris、HP-UX環境が必要になります。
  • JDK1.4以上
  • PostgreSQL
     フリーのRDB(リレーションナルデータベース)サーバ
     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」をダウンロードします。(ダウンロードファイルの圧縮形式は何でも結構です。)


 ダウンロード完了後、圧縮ファイルを展開します。
 

■Jakarta-antの設定

 OSに合った環境設定を行います。

  • Windows又はOS/2
    set ANT_HOME=c:\apache-ant-1.6.2
    set JAVA_HOME=c:\jdk1.4.2
    set PATH=%PATH%;%ANT_HOME%\bin

  • 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

  • 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の設定

●データベースユーザの作成

 PostgreSQLを起動後、Rhino SDKからPostgreSQL DBにアクセスするためのユーザを作成します。

 $ createuser
Enter name of user to add: postgres
Shall the new user be allowed to create databases? (y/n) y
Shall the new user be allowed to create more new users? (y/n) n
CREATE USE
R

●TCP接続の設定

 Rhino SDKとPostgreSQLサーバは、JDBCを用いて接続を行います。JDBCは、TCP/IP上で通信を行うため、PostgreSQLサーバに外部からアクセスするためのプロトコルとしてTCP/IPをサポートするように設定する必要があります。既に、設定されている場合には必要ありません。

設定ファイル:
 $PGDATA/postgresql.conf
tcpip_socket = True (or 1) 

●アクセスコントロールの設定

 この設定は、Rhino SDKとPostgreSQLを別のマシンにインストールした場合に必要になります。同一マシンにインストールしている場合には、必要ありません。

 リモートマシン上からPostgreSQLサーバにアクセスをする際に、アクセス元のマシン名、アクセスするDBやその際のユーザ名を設定する必要があります。

設定ファイル:
 $PGDATA/pg_hba.conf
デフォルト:
 #TYPE DATABASE USER IP-ADDRESS IP-MASK METHOD
local all all trust
host all all 127.0.0.1 255.255.255.255 trust
変更後:
#TYPE DATABASE USER IP-ADDRESS IP-MASK METHOD
local all all trust
host all all 127.0.0.1 255.255.255.255 trust
host rhino postgres 192.168.0.5 255.255.255.0 password

要素 概要
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
Open Cloud Rhino SDK Installation

The Rhino SDK install requires access to a PostgreSQL database server,
for storing persistent configuration and deployment information.
The database settings you enter here are required for the Rhino SLEE
config files. The install script can optionally configure the database
for you, you will be prompted for this later in the install process.

Postgres host [localhost]:      ←  PostgreSQLをインストールしたホスト名
Postgres port [5432]:  ← PostgreSQLをインストールしたポート
Postgres user [jain]: postgres ← PostgreSQLの起動ユーザ
Postgres password:  ← PostgreSQLの起動ユーザパスワード
Postgres password (again):

The SDK installation needs to use the PostgreSQL interactive client, psql.
Enter the full path to your local psql client here.

Location of psql client [/bin/psql]: /opt/OCpgsql/bin/psql
← PostgreSQL Client、psqlコマンドのフルパス

The database name you specify below will be created in your Postgres
server and configured with the default tables for Rhino SLEE support.

Database name [rhino_sdk]:  ← 任意のデータベース名


Enter the directory where you want to install the Rhino SDK.

Directory to install Rhino SDK [/home/jain/rhino]:  
← サーバのインストールディレクトリ

These two ports are used for accessing the Management MBeans from a
browser client.

Management Interface HTTP Dynamic Content Port [8055]:
Management Interface HTTP Static Content Port [8056]:
← 管理サーバのポート

These two ports are used for accessing the Management MBeans from a
Java RMI (Remote Method Invocation) client, such as the Rhino SLEE
command-line utilities.

Management Interface RMI Registry Port [1199]:
Management Interface RMI Object Port [1200]:
← 管理モジュールを操作するために必要なRMIポート

Enter the location of your Java J2SE/JDK installation.
This must be at least version 1.4.2.

JAVA_HOME directory []: /usr/j2sdk1.4.2_03  ← Java実行環境のフルパス
Found Java version 1.4.2_03.  

*** Confirm Settings ***

Postgres host:     localhost
Postgres port:     5432
Postgres user:     postgres
Postgres password: ** not shown **
Database name:     rhino_sdk

Directory to install Rhino SDK:  /home/jain/rhino
Management Interface HTTP Ports: 8055,8056
Management Interface RMI Ports:  1199,1200
JAVA_HOME directory:             /usr/j2sdk1.4.2_03

Are these settings correct (y/n)? y ← 設定の確認、「y」にてインストール開始
Creating Rhino SDK directory
Do you want me to create the rhino_sdk database? 
(y or n, n means you must do this manually) y
DROP DATABASE
CREATE DATABASE
You are now connected to database rhino_sdk.
NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index 
……
The Open Cloud Rhino SDK is now installed in /home/jain/rhino.

Next Steps:

- Start the Rhino SDK SLEE by running "/home/jain/rhino/start-rhino.sh".
- Access the Rhino management console at http://Server1:8433/
- Deploy the example SIP services, see the file
  /home/jain/rhino/examples/sip/README for more information.

Open Cloud Rhino SDK 
inst
allation complete.

■アプリケーションサーバの起動

 <JAIN SLEEサーバホームディレクトリ>/start-rhino.sh
% ./start-rhino.sh
Starting Rhino SLEE
…..
INFO   [rhino.sleestate]  SLEE successfully started

■アプリケーションのディプロイ

 まず、環境に合わせ設定を行います。次のディレクトリに移動し、設定ファイルを変更します。

 サンプルアプリケーションディレクトリ: 
<JAIN SLEEサーバホームディレクトリ>/examples/sip
設定ファイル:sip.properties
PROXY_HOSTNAMES = server1.abc.com    ← 自ホスト名を入力する
PROXY_DOMAINS = server1.abc.com,abc.com
← <ドメイン名>および<サーバ名.ドメイン名>

 <ドメイン名>および<サーバ名.ドメイン名>の2つのエントリをカンマ区切りで入力するドメイン名は、sipアドレス呼び出しに対して操作できるドメインを定義するものになります。ここにエントリされていないドメインを持つsipアドレスに対しての呼び出しがあっても、PROXYサービスは動作しません。

実行
 %cd <JAIN SLEEサーバホームディレクトリ>/examples/sip
% ant deployexamples
Buildfile: build.xml

find-rhino-jar:

init:
     [copy] Copying 1 file to /home/jain/rhino/examples/sip
    [mkdir] Created dir: /home/jain/rhino/examples/sip/jars
    [mkdir] Created dir: /home/jain/rhino/examples/sip/classes

deployexamples:

BUILD SUCCESSFUL
Total time: 1 minute 49 seconds

■動作確認

■JAIN SIPクライアントの設定を変更する


 SIPアドレスを用い相手を呼び出すため、SIP Proxyサーバの指定を行います。

 設定ファイル:<sip-communicatorホームディレクトリ>/sip-communicator.xml
<OUTBOUND_PROXY value="server1.abc.com:5060/udp"/>
← JSLEEサーバを指定する
<DEFAULT_DOMAIN_NAME value="abc.com"/>
← sipアドレスのドメインを指定する
<DEFAULT_AUTHENTICATION_REALM value="abc.com"/>
← sipアドレスのドメインを指定する

■JAIN SIPクライアントを起動する

  前回同様JAIN SIPクライアントを起動します。

 ログイン画面が表示されます。sipアドレスのユーザ名(@より左)を入力し、「Login」ボタンをクリックします。

 SIPコミュニケータが設定のSIPアドレスおよびIPアドレスをSIPレジストラサーバに登録します。

 ---- レジストラ時のSIP メッセージ ----
- sent request= REGISTER sip:server1.abc.com:15060;transport=udp SIP/2.0
Call-ID: 8c83d6ce76c4abde3a666ecaf35f82c9@200.1.1.1
CSeq: 1 REGISTER
From: "Bob" <sip:bob@abc.com:5060;transport=udp>;tag=6848169
To: "Bob" <sip: bob@abc.com:5060;transport=udp>
Via: SIP/2.0/UDP 200.1.1.1:5060;
branch=z9hG4bK02dab2e49d4c57a223be398ebb72d110
Max-Forwards: 70
Expires: 3600
Contact: "Bob" <sip: 200.1.1.1:5060;transport=udp>
Content-Length: 0


■通信する


 Call-ID: 436445551eb78c863115d5d53d9755be@200.1.1.1
CSeq: 1 INVITE
From: "Bob" <sip:bob@abc.com:5060;transport=udp>;tag=18923308
To: <sip:tom@abc.com>;tag=22364723
Via: SIP/2.0/UDP 200.1.1.1:5060;branch=z9hG4bK1aceefebac830a4bafa34a4507bd5ebf
Max-Forwards: 69
Record-Route: <sip:Server1.abc.com:5060;lr;transport=UDP>
Content-Type: application/sdp
Contact: "Tom" <sip:200.1.1.6:5060;transport=udp>
Content-Length: 153

 さて、それでは、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」ボタンをクリックし完了です。

 さて、それでは、もう一度、SIP Comunicatorを用い、JSLEEサーバにアクセスしてみましょう。今度は、次のようなSIPメッセージが、JSLEEサーバ起動ウィンドウに表示されたでしょう。 

 2005-08-05 18:08:01.771  DEBUG  [sip.transport.manager]  incomingSipResponse:
SIP/2.0 200 OK
Call-ID: 436445551eb78c863115d5d53d9755be@200.1.1.1
CSeq: 1 INVITE
From: "Bob" <sip:bob@abc.com:5060;transport=udp>;tag=18923308
To: <sip:tom@abc.com>;tag=22364723
Via: SIP/2.0/UDP Server1.abc.com:5060;branch=
z9hG4bK9cbccc8064eb68fc7ea9b9fda40a9c22,SIP/2.0/UDP(実際には1行)200.1.1.1:5060;branch=z9hG4bK1aceefebac830a4bafa34a4507bd5ebf
Max-Forwards: 69
Record-Route: <sip:Server1.abc.com:5060;lr;transport=UDP>
Content-Type: application/sdp
Contact: "Tom" <sip:200.1.1.6:5060;transport=udp>
Content-Length: 153

2/3

 INDEX

JSLEE、JAIN SIPSを用いた新しいコミュニケーションアプリケーション構築
  Page1
  Page2
  Page3





「Strutsを使うWebアプリケーション構築術」