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