银色幻想

常用链接

统计

积分与排名

学习交流

最新评论

rmi的实现

RMI,远程方法调用(Remote Method Invocation)是Enterprise JavaBeans的支柱,是建立分布式Java应用程序的方便途径。RMI是非常容易使用的,但是它非常的强大。
  RMI的基础是接口,RMI构架基于一个重要的原理:定义接口和定义接口的具体实现是分开的。下面我们通过具体的例子,建立一个简单的远程计算服务和使用它的客户程序

  一个正常工作的RMI系统由下面几个部分组成:
  • 远程服务的接口定义
  • 远程服务接口的具体实现
  • 桩(Stub)和框架(Skeleton)文件
  • 一个运行远程服务的服务器
  • 一个RMI命名服务,它允许客户端去发现这个远程服务
  • 类文件的提供者(一个HTTP或者FTP服务器)
  • 一个需要这个远程服务的客户端程序

相关代码如下:
接口类
public interface RMI_Add extends java.rmi.Remote {
 public long add(long a, long b, long c) throws java.rmi.RemoteException;
}


实现类
import java.rmi.Naming;

public class RMI_AddImpl extends java.rmi.server.UnicastRemoteObject implements RMI_Add {
 public RMI_AddImpl() throws java.rmi.RemoteException {
  super();
 }

 public long add(long a, long b, long c) throws java.rmi.RemoteException {
  return a + b + c;
 }

 public static void main(String[] args) {
  try {
   RMI_Add d = new RMI_AddImpl();
   Naming.rebind("rmi://127.0.0.1:1099/RMI_AddService", d);
  } catch (Exception e) {
   e.printStackTrace();
  }
 }

}

客户端
import java.net.MalformedURLException;
import java.rmi.Naming;
import java.rmi.NotBoundException;
import java.rmi.RMISecurityManager;
import java.rmi.RemoteException;

public class Client {
 public static void main(String[] args) {
  System.setSecurityManager(new RMISecurityManager());

  try {
   RMI_Add t = (RMI_Add) Naming.lookup("rmi://127.0.0.1:1099/RMI_AddService");
   for (int i = 0; i < 10; i++)
    System.out.println("Perfect time =" + t.add(1, 2, 3));
  } catch (MalformedURLException e) {
   e.printStackTrace();
  } catch (RemoteException e) {
   e.printStackTrace();
  } catch (NotBoundException e) {
   e.printStackTrace();
  }
 }

}


一条最简单的安全策略,它允许任何人做任何事,对于你的更加关键性的应用,你必须指定更加详细安全策略。
grant {
  permission java.security.AllPermission "", "";
};

相关命令
rmic -classpath . -d . RMI_AddImpl
start rmiregistry 1099
java -Djava.rmi.server.codebase=file:///E:/workspace/rmi/ RMI_AddImpl
java -Djava.security.policy=policy.txt Client

posted on 2006-11-04 10:26 银色幻想 阅读(271) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航: