リモートインタフェース
- 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が出る件