・   「Java言語」実習 第18回

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

RMIを利用し複数の分散オブジェクトによってアプリケーションを構築します。


・ 準備1:
この後で必要となる RMIのネームサービスを提供する rmiregistryサーバを起動しておきます。 (今日の実習を終了する時に停止させるのを忘れないこと)


rmiregistry

・ 準備2:
今日も複数の端末のウィンドウが必要になります。 いずれも各自のJavaの作業用のディレクトリに移動して作業します。

・ 準備3:
今回のサンプルを実行するためにもセキュリティの方針を設定するためのファイル policyが必要です。 まだ作成していない人は作成しておいてください。


・ 基本課題1:「メッセージのクラス」
これから行う通信の内容を表すクラスを用意します。

  1. ソースファイル Message.java を作成しなさい。
  2. コンパイルできたら次の課題に進んでください。(まだ実行はできません。)

・ 基本課題2:「サーバのインターフェイス」
サーバの役割をする分散オブジェクトの機能を定義します。

  1. ソースファイル TalkServer.java を作成しなさい。
  2. コンパイルできたら次の課題に進んでください。(まだ実行はできません。)

・ 基本課題3:「受け手のインターフェイス」
メッセージの受け取り手の分散オブジェクトの機能を定義します。

  1. ソースファイル MessageReceiver.java を作成しなさい。
  2. コンパイルできたら次の課題に進んでください。(まだ実行はできません。)

・ 基本課題4:「サーバの機能を実装する」
TalkServerの機能を具体的に実装します。

  1. ソースファイル TalkServerImpl.java を作成しなさい。
  2. コンパイルできたら次の課題に進んでください。(まだ実行はできません。)

・ 基本課題5:「StubとSkelクラスの生成」
TalkServerのスタブとスケルトンと呼ばれる特別なクラスを用意します。

  1. rmic によるコンパイルで TalkServerImplクラスの スタブとスケルトンを自動生成します。 (まだ実行はできません。)

rmic  TalkServerImpl

・ 基本課題6:「受け取り手の機能を実装する」
MessageReceiverの機能を具体的に実装します。

  1. ソースファイル SimpleMessageReceiver.java を作成しなさい。
  2. コンパイルできたら次の課題に進んでください。(まだ実行はできません。)

・ 基本課題7:「StubとSkelクラスの生成」
MessageReceiverのスタブとスケルトンと呼ばれる特別なクラスを用意します。

  1. rmic によるコンパイルで SimpleMessageReceiverクラスの スタブとスケルトンを自動生成します。 (まだ実行はできません。)

rmic  SimpleMessageReceiver

・ 基本課題8:「メッセージ送信のクラス」

  1. ソースファイル MessageSender.javaSimpleMessageSender.java を作成しなさい。
  2. コンパイルできたら次の課題に進んでください。(まだ実行はできません。)

・ 基本課題9:「サーバの起動」
サーバの分散オブジェクトを生成し、サービスを開始します。

  1. ソースファイル ServerTest.java を作成しなさい。
  2. コンパイルできたら実行しますが、 その時に環境の情報として Stubファイルの存在する場所と セキュリティの方針を指定する必要があります(JDK1.2β4以降)。 次のようにして実行してください。(サーバが起動されるだけなので、 まだ通信は行われない。 この実習時間中は起動したままにしておくこと。)

java  -Djava.rmi.server.codebase="http://www.wakhok.ac.jp/~logname/java/"
-Djava.security.policy="policy"  ServerTest

・ 基本課題10:「チャットへの参加」
受け取り手の分散オブジェクトを生成し、チャットに参加します。

  1. ソースファイル ClientTest.java を作成しなさい。
  2. コンパイルできたら、たとえば次のようにして実行し、結果を確認しなさい。 (サーバの起動されているマシン名と調べたいキーの情報を コマンドライン引数から与える。)
    
    java  -Djava.rmi.server.codebase="http://www.wakhok.ac.jp/~logname/java/"
    -Djava.security.policy="policy"  ClientTest  pc4fg6
    
    

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

  1. 3人以上で適当なグループを作りなさい。
  2. そのうちの1人のサーバに他の人がアクセスしなさい。
  3. サーバのマシン名と、 参加した人全員の氏名とマシン名をメールで報告しなさい。

・ 応用課題:「GUIの構築」
クライアント側のアプリケーションを GUI対応にしてみましょう。

  1. ソースファイル MessageMonitor.javaMessageSendField.javaMessageClient.java を作成しなさい。
  2. コンパイルできたら、たとえば次のようにして実行し、結果を確認しなさい。 (サーバの起動されているマシン名と調べたいキーの情報を コマンドライン引数から与える。)
    
    java  -Djava.rmi.server.codebase="http://www.wakhok.ac.jp/~logname/java/"
    -Djava.security.policy="policy"  MessageClient  pc4fg6
    
    

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