RMI
RMIを使用してみた。但しスタブを生成せずに利用してみる
インターフェースを作成
import java.rmi.Remote;
import java.rmi.RemoteException;
public interface Sample extends Remote {
String say() throws RemoteException;
}
実装クラスを作成
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
public class SampleImpl extends UnicastRemoteObject implements Sample {
public SampleImpl() throws Exception {
super();
}
public String say() throws RemoteException {
return "hoge";
}
}
RMIサーバークラスを作成
import java.rmi.RMISecurityManager;
import java.rmi.registry.Registry;
import java.rmi.registry.LocateRegistry;
public class Server {
public static void main(String[] args) throws Exception {
System.setSecurityManager(new RMISecurityManager());
Registry reg = LocateRegistry.createRegistry(9999);
reg.rebind("sample", new SampleImpl());
}
}
クライアントクラスを作成
import java.rmi.RMISecurityManager;
import java.rmi.Naming;
import java.rmi.registry.*;
public class Client {
public static void main(String[] args) throws Exception {
System.setSecurityManager(new RMISecurityManager());
Registry reg = LocateRegistry.getRegistry("localhost", 9999);
Sample smp = (Sample)reg.lookup("sample");
System.out.println(smp.say());
}
}
実行する前にセキュリティポリシーファイルを作成
grant {
permission java.security.AllPermission;
};
実行
# サーバー起動
java -Djava.security.policy=java.policy Server
# クライアント起動
java -Djava.security.policy=java.policy Client