・   「Java言語」実習 第21回

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

CORBAの分散オブジェクトを利用してチャットルームのアプリケーションを 作成してみましょう。


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


cd  www
cd  java
cd  corba


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

  1. IDLファイル TalkServer.idl を作成しなさい。
  2. idltojavaコマンドによって Javaのソースコードに変換します。
  3. 
    idltojava  TalkServer.idl
    
    
  4. どんな名前のソースファイルが自動生成されたか確認しなさい。

・ 基本課題2:「転送されるオブジェクトの修正」
メッセージのクラス JMessageの内容を後の都合で一部修正しておきます。

  1. 前の課題で自動的に生成されたソースファイル JMessage.java の一部を追加修正しなさい。
  2. コンパイルの作業は後でまとめて行えばよいので、 次の課題に進みなさい。

*本来はこのような書き換えは無制限に行うべきものではありません。 ここでは現行の CORBAの中で日本語を取り扱うための便宜的な処置です。

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

  1. ソースファイル TalkServerImpl.java を作成しなさい。
  2. コンパイルできたら引数にサーバ名(自分でわかりやすく考えたもの、 他人と重複しないように注意)と オプションによってマシン名とポート番号を 指定して実行してください。 (実習中は実行した状態にしておくこと)

java  TalkServerImpl  ServerName  -ORBInitialHost ultra01  -ORBInitialPort 10005

*tnameservの起動と ネームノードの設定 は既に行われていると仮定しています。

・ 基本課題4:「登録されたサーバ名を調べる」

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

java  SearchServers  -ORBInitialHost ultra01  -ORBInitialPort 10005

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

  1. ソースファイル SimpleJMessageReceiver.java を作成しなさい。
  2. コンパイルは後でまとめて行うので次の課題に進みなさい。

・ 基本課題6:「メッセージの送信のクラス」
JMessageのオブジェクトを送信するプログラムも用意します。

  1. ソースファイル SimpleJMessageSender.java を作成しなさい。
  2. コンパイルは後でまとめて行うので次の課題に進みなさい。

・ 基本課題7:「クライアントのテスト」
通信の実験をしてみましょう。

  1. ソースファイル ClientTest.java を作成しなさい。
  2. コンパイルできたら引数に自分のサーバ名(先ほど指定したもの) とクライアントの名前(新しく適当に考えたもの)と オプションによってマシン名とポート番号を 指定して実行してください。 自分の送信したメッセージ(日本語可)が正しく表示されることを確認しなさい。 (実習中は実行した状態にしておくこと)

java  ClientTest  ServerName  ClientName  -ORBInitialHost ultra01
 -ORBInitialPort 10005

・ 基本課題8:「GUIの構築」
ウィンドウベースのツールとして実装してみましょう。

  1. ソースファイル JMessageMonitorArea.javaJMessageSendField.javaJMessagePanel.java と を作成しなさい。
  2. コンパイルできたら引数に相手のサーバ名(別の人の立ち上げたもの) とクライアントの名前(新しく適当に考えたもの、前の課題と変えること)と オプションによってマシン名とポート番号を 指定して実行してください。 メッセージの通信を行いなさい。 サーバ役を決めて、数名によるチャットを試してみなさい。

java  JMessagePanel  ServerName2  ClientName2  -ORBInitialHost ultra01
 -ORBInitialPort 10005


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

  1. 課題8:の通信プログラム(JMessagePanel)で、 通信した相手のサーバの名前。
  2. 自分が参加したサーバにメッセージを送ってきたクライアント全員の名前。

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