・   「Java言語」実習 第20回

分散オブジェクト(CORBA)その2

CORBAのネームサービスの利用、オブジェクトの転送について練習します。


・ 準備:
今日も複数の端末のウィンドウが必要になります。 また、作業は前回のようにサブディレクトリの中で行ってください。 (前回の課題をやっていない人は新しいディレクトリを作成すること。)


cd  www
cd  java
cd  corba


・ 基本課題1:「ORBのサービスを調べる」
ORBと通信して提供されているサービスの確認をします。

  1. ソースファイル PrintServiceName.java を作成しなさい。
  2. コンパイルしなさい。
  3. 今回は全員が共通の ORB(tnameserv)にアクセスします。次のようにして マシン名とポート番号をオプションで指定して実行してください。
  4. ネームサービスが利用できる状態であることを確認しなさい。

java  PrintServiceName  -ORBInitialHost ultra02  -ORBInitialPort 10005

・ 基本課題2:「IDLで分散オブジェクトの機能を定義する」
今回の課題で用いる分散オブジェクトと転送されるオブジェクトを記述する IDLのファイルを作成します。

  1. IDLファイル MessageReceiver.idl を作成しなさい。
  2. idltojavaコマンドによって、Javaのソースコードに変換します。

idltojava  MessageReceiver.idl

・ 基本課題3:「分散オブジェクトを実装する」
分散オブジェクトの機能を具体的に実装します。

  1. ソースファイル MessageReceiveTest.java を作成しなさい。
    ただしオブジェクトの ORBへの登録名を "Test@logname" として、 他の人のオブジェクトと名前が重複しないようにしてください。
  2. コンパイルできたらオプションによってマシン名とポート番号を 指定して実行してください。 (実習中は実行した状態にしておくこと)

java  MessageReceiveTest  -ORBInitialHost ultra02  -ORBInitialPort 10005

・ 基本課題4:「登録されたオブジェクト名を調べる」

  1. 新しい端末のウィンドウを開き、 corbaの作業用のディレクトリに移動しないさい。 ソースファイル PrintBinding.java を作成しなさい。
  2. コンパイルできたら実行します。 上の課題と同様、オプションで ORBのマシン名とポート番号を指定しなさい。
  3. 自分のオブジェクトを含め、何という名前のオブジェクトが登録されているか 確認しなさい。 また、この出力結果は次の課題で通信相手を捜すために必要となります。

java  PrintBinding  -ORBInitialHost ultra02  -ORBInitialPort 10005

・ 基本課題5:「Messageの送信」
MessageReceiverに Messageのオブジェクトを送信するプログラムを用意します。

  1. ソースファイル MessageSendTest.java を作成しなさい。
    ただし、誰からのメッセージかわかるように、 ヘッダーの情報(header)を自分のユーザー名にしておくこと。 メッセージの内容(content)も自分で適当なものに変更しなさい。
  2. コンパイルできたら、たとえば次のようにして送信相手のオブジェクト名と オプションによって ORBのマシン名とポート番号を指定して 何回か通信を繰り返しなさい。 (自分自身と "Test@tatsuo" も含め、5人以上の人に送信すること)

java  MessageSendTest  "Test@logname"  -ORBInitialHost ultra02  -ORBInitialPort 10005


・ 今週のレポート課題(学内用):
ここまでの課題が終わった人は、下記の項目を tatsuo宛のメール で報告しなさい。(Subjectは java20)

  1. 課題5:の通信プログラム(MessageSendTest)で、 メッセージを送った相手(自分と tatsuo を除く3人以上)の名前。
  2. 実習時間中に自分の Receiverへ送られてきた メッセージの内容をすべて報告しなさい。

実習の目次   今週の講義の内容