RMI J 2 EE I 2006 02 25

  • Slides: 46
Download presentation
RMI J 2 EE I 補講 / 2006 -02 -25

RMI J 2 EE I 補講 / 2006 -02 -25

参考URL n Java. TM Remote Method Invocation (RMI) n n http: //java. sun. com/j

参考URL n Java. TM Remote Method Invocation (RMI) n n http: //java. sun. com/j 2 se/1. 5. 0/ja/docs/ja/g uide/rmi/index. html Sun Microsystems による RMI の解説です。

分散オブジェクト技術 n n n CORBA DCOM RPC ? Java RMI Peer to Peer (P

分散オブジェクト技術 n n n CORBA DCOM RPC ? Java RMI Peer to Peer (P 2 P) ? などなど

Remoteインタフェース (1) import java. rmi. Remote; import java. rmi. Remote. Exception; public interface Hello

Remoteインタフェース (1) import java. rmi. Remote; import java. rmi. Remote. Exception; public interface Hello extends Remote { public String say. Hello() throws Remote. Exception; }

サーバ側のプログラム (1) クラスの定義 public class Server implements Hello {. . . }

サーバ側のプログラム (1) クラスの定義 public class Server implements Hello {. . . }

サーバ側のプログラム (3) メソッド public String say. Hello() { return "Hello world!"; }

サーバ側のプログラム (3) メソッド public String say. Hello() { return "Hello world!"; }

サーバ側のプログラム (6) mainメソッド (1) // インスタンスを生成 Server obj = new Server(); // スタブを取得 Hello

サーバ側のプログラム (6) mainメソッド (1) // インスタンスを生成 Server obj = new Server(); // スタブを取得 Hello stub = (Hello) Unicast. Remote. Object. export. Object(obj, 0);

サーバ側のプログラム (7) mainメソッド (2) // rmiregistry にスタブを登録する Registry registry = Locate. Registry. get. Registry();

サーバ側のプログラム (7) mainメソッド (2) // rmiregistry にスタブを登録する Registry registry = Locate. Registry. get. Registry(); registry. bind("Hello", stub);

クライアント側のプログラム (1) // rmiregistry から目的のスタブを探す Registry registry = Locate. Registry. get. Registry(host); Hello stub

クライアント側のプログラム (1) // rmiregistry から目的のスタブを探す Registry registry = Locate. Registry. get. Registry(host); Hello stub = (Hello) registry. lookup("Hello");

プログラムのコンパイル n n n javac Hello. javac Server. javac Client. java

プログラムのコンパイル n n n javac Hello. javac Server. javac Client. java

サーバの起動 n java Server

サーバの起動 n java Server

サーバ側のプログラム mainメソッドの冒頭に // 許可されてない操作を行わないために if (System. get. Security. Manager() == null) { System. set.

サーバ側のプログラム mainメソッドの冒頭に // 許可されてない操作を行わないために if (System. get. Security. Manager() == null) { System. set. Security. Manager(        new RMISecurity. Manager() ); }

サーバの起動 (1) コマンドライン java -Djava. rmi. server. codebase= file: ///C: Homermi -Djava. security. policy=policy.

サーバの起動 (1) コマンドライン java -Djava. rmi. server. codebase= file: ///C: Homermi -Djava. security. policy=policy. txt Server localhost

サーバの起動 (6) policy. txt の内容 grant { // Allow everything for now permission java.

サーバの起動 (6) policy. txt の内容 grant { // Allow everything for now permission java. security. All. Permission; }; n すべての人にすべてのアクセス権を与える

クライアントの起動 n java -Djava. security. policy=policy. txt Client localhost

クライアントの起動 n java -Djava. security. policy=policy. txt Client localhost