JAVA提高阶段:RMI一步一步来(二)

2014-11-24 01:08:55 · 作者: · 浏览: 1
on murle) {
   System.out.println();
   System.out.println(
   "MalformedURLException");
   System.out.println(murle);
   }
   catch (RemoteException re) {
   System.out.println();
   System.out.println(
   "RemoteException");
   System.out.println(re);
   }
   catch (NotBoundException nbe) {
   System.out.println();
   System.out.println(
   "NotBoundException");
   System.out.println(nbe);
   }
   catch (
   java.lang.ArithmeticException
   ae) {
   System.out.println();
   System.out.println(
   "java.lang.ArithmeticException");
   System.out.println(ae);
   }
   }
  }
  保存这个客户端程序到你的目录下(注意这个目录是一开始建立那个,所有的我们的文件都在那个目录下),并且编译他。
 6、 运行RMI系统

  现在我们建立了所有运行这个简单RMI系统所需的文件,现在我们终于可以运行这个RMI系统啦!来享受吧。

  我们是在命令控制台下运行这个系统的,你必须开启三个控制台窗口,一个运行服务器,一个运行客户端,还有一个运行RMIRegistry。

  首先运行注册程序RMIRegistry,你必须在包含你刚写的类的那么目录下运行这个注册程序。

  >rmiregistry

  好,这个命令成功的话,注册程序已经开始运行了,不要管他,现在切换到另外一个控制台,在第二个控制台里,我们运行服务器CalculatorService,因为RMI的安全机制将在服务端发生作用,所以你必须增加一条安全策略。以下是对应安全策略的例子
  grant {
  permission java.security.AllPermission "", "";
  };
  注意:这是一条最简单的安全策略,它允许任何人做任何事,对于你的更加关键性的应用,你必须指定更加详细安全策略。
  现在为了运行服务端,你需要除客户类(CalculatorClient.class)之外的所有的类文件。确认安全策略在policy.txt文件之后,使用如下命令来运行服务器。

  > java -Djava.security.policy=policy.txt CalculatorServer

  这个服务器就开始工作了,把接口的实现加载到内存等待客户端的联接。好现在切换到第三个控制台,启动我们的客户端。
  为了在其他的机器运行客户端程序你需要一个远程接口(Calculator.class) 和一个stub(CalculatorImpl_Stub.class)。 使用如下命令运行客户端

   prompt> java -Djava.security.policy=policy.txt CalculatorClient

  如果所有的这些都成功运行,你应该看到下面的输出:
  1
  9
  18
  3
  如果你看到了上面的输出,恭喜你,你成功了,你已经成功的创建了一个RMI系统,并且使他正确工作了。即使你运行在同一个计算机上,RMI还是使用了你的网络堆栈和TCP/IP去进行通讯,并且是运行在三个不同的Java虚拟机上。这已经是一个完整的RMI系统