歡迎您光臨本站 註冊首頁

Java遠程方法調用實踐

←手機掃碼閱讀     火星人 @ 2014-03-09 , reply:0
  伺服器端業務介面
  public interface Biz extends Remote {
  public String aloha() throws RemoteException;
  }
  伺服器端業務實現
  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.";
  }
  }
  伺服器註冊遠程實現名稱
  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 需要指定一個Policy文件或者運行rmiregistry
  java -Djava.security.policy=folder_x/rmi/policy_file creative.fire.rmi.Server
  Policy文件的內容為:
  grant{
  permission java.net.SocketPermission "localhost:9527", "connect, resolve";
  };
  運行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;
  };
  客戶端打樁調用
  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();
  }
  }
  }


[火星人 ] Java遠程方法調用實踐已經有474次圍觀

http://coctec.com/docs/java/show-post-59982.html