Java2SE5.0のRMI使い方メモ

リモートインタフェース

  • Remoteをextends
  • メソッドはRemoteExceptionを投げる
public interface Messenger extends Remote{
    void putMessage(String msg) throws RemoteException;
}

実装

てきとうに

public class MessengerImpl implements Messenger{
    public void putMessage(String msg){
        System.out.println(msg);
    }
}

サーバー

オブジェクトをUnicastRemoteObject.exportObjectでリモートオブジェクトにする。
Registryにrebind

Messenger m = new MessengerImpl();
Messenger stub = (Messenger) UnicastRemoteObject.exportObject(m, 0);

Registry reg = LocateRegistry.createRegistry(Registry.REGISTRY_PORT);
reg.rebind("Messenger", stub);

クライアント

Namingからrebindした名前でlookup

Messenger msgr = (Messenger)Naming.lookup("//localhost/Messenger");
msgr.putMessage("テストよ");


rmicとかスタブとかスケルトンは不要。
簡単ヽ(・∀・ )ノ


注意:実際にはサーバー側の実装オブジェクトの参照を保持しておかないとNoSuchObjectExceptionが発生することがあります。
RMIでNoSuchObjectExceptionが出る件