RMIの使い方

Mac OS Xに関するヌマタメモ
2008年11月30日 01:05

JavaでRMIする際の手順と注意点をいくつか。

作成時の手順と注意

1. RMIインタフェースの作成

java.rmi.Remote のインタフェースを継承した独自インタフェースを作成する。呼び出す対象のメソッドは、java.rmi.RemoteException 例外のスローを宣言しなければならない。

2. サーバの作成

サーバ側では、java.rmi.server.UnicastRemoteObject クラスを継承したクラスを用意して、以下の2つのことを行う。適宜例外はキャッチすること。

2-1. セキュリティマネージャのセット

if (System.getSecurityManager() == null) { System.setSecurityManager(new java.rmi.RMISecurityManager()); }

2-2. ネーミングサービスへの登録

Naming.rebind("//アドレス/オブジェクト名", UnicastRemoteObjectの子クラスのインスタンス);

3. クライアントの作成

サーバ同様、以下の2つの手順を行う。

3-1. セキュリティマネージャのセット

if (System.getSecurityManager() == null) { System.setSecurityManager(new java.rmi.RMISecurityManager()); }

3-2. ネーミングサービスからの(スタブ)オブジェクトの取得

MyRMIInterface obj = (MyRMIInterface) Naming.lookup(Naming.rebind("//アドレス/オブジェクト名"); メソッドの呼び出しは、インタフェースに対して普通に行う。

4. コンパイルとスタブファイルの生成

javacでコンパイル後に、rmic でスタブファイルを生成する。ビルド先の設定はない場合にはなしで良い。

  • javac -d [ビルド先] [Javaソースファイル]
  • rmic -d [ビルド先] -cp [ビルド先] [パッケージ名を含めたクラス名]

実行時の手順と注意

1. セキュリティポリシーの設定

/Library/Java/Home/lib/security/java.policy を修正して、適切なポリシーを設定する。ローカルネットで簡単にテストしたいだけであれば、

grant { permission java.security.AllPermission; };

を最後に追加しておくだけで良い。なお、Windows 2000 では、C:\Documents and Settings[アカウント名].java.policy に(なければコマンドプロンプトから作成)同様の記述を行う。

2. rmiregistry の実行

rmiregistry 実行時にはクラスパスを指定してやる必要がある。

rmiregistry -J-cp -J[対象のパス]

として起動する。

3. サーバの起動

これはまあ普通に起動するだけ。

4. クライアントの起動

これもまあ普通に起動するだけ。

コメントを書く


トラックバックはありません。

トラックバックURL: http://numata.designed.jp/mt-tb.cgi/110