服務(wù)器端業(yè)務(wù)接口繼承自Remote
public interface Biz extends Remote {
public String aloha() throws RemoteException;
}
服務(wù)器端業(yè)務(wù)實(shí)現(xiàn)該接口
public class BizImpl extends UnicastRemoteObject implements Biz {
private static final long serialVersionUID = -8559392326593037120L;
public BizImpl() throws RemoteException {
super();
}
@Override
public String aloha() throws RemoteException {
return "Aloha Baby.";
}
}
服務(wù)器注冊(cè)遠(yuǎn)程實(shí)現(xiàn)名稱
public class Server {
public Server() {
try {
Biz bis = new BizImpl();
// style-1
Registry registry = LocateRegistry.createRegistry(RMIParameter.PORT);
registry.rebind(RMIParameter.NAME, bis); // replace existing binding name
// style-2
//java.rmi.Naming.rebind(RMIParameter.NAME, bis); // replace existing binding name
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String args[]) {
new Server();
}
}
style-2 需要指定一個(gè)Policy文件或者運(yùn)行rmiregistry
java -Djava.security.policy=folder_x/rmi/policy_file creative.fire.rmi.Server
Policy文件的內(nèi)容為:
grant{
permission java.net.SocketPermission "localhost:9527", "connect, resolve";
};
運(yùn)行rmiregistry是修改 JDK 目錄下的jre/lib/security/java.policy
rmiregistry(linux)
start rmiregistry(windows)
允許任何人(targets)作任何事情(actions):
grant{
permission java.security.AllPermission "","";
};
OR
grant {
permission java.security.AllPermission;
};
客戶端打樁調(diào)用
public class Client {
public static void main(String args[]) {
try {
Biz bis = (Biz) Naming.lookup(RMIPREFIX + PORT + NAME);
System.out.println(bis.aloha());
} catch (Exception e) {
e.printStackTrace();
}
}
}