Vanessa

大前端的点滴生活

十分钟学会 Java RMI

RMI 是 Java 平台实现远程调用的规范,下面是一个小例子,本机测试通过


  一共有三个 java 类,远程接口,服务端程序,客户端程序


  远程接口:


import java.rmi.<em>;<br/><br/><br/><br/>public interface HelloIn extends java.rmi.Remote{<br/><br/> String sayHello() throws RemoteException;<br/><br/>}</em>


  服务端程序:


/**<br/> author by <a href="http://www.bt285.cn">http://www.bt285.cn</a>  <a href="http://www.5a520.cn">http://www.5a520.cn</a> <br/><br/><em>/<br/><br/>import java.rmi.</em>;<br/><br/>import java.net.<em>;<br/><br/>import java.rmi.registry.</em>;<br/><br/>import java.rmi.server.<em>;<br/><br/><br/><br/>public class Hello extends java.rmi.server.UnicastRemoteObject implements HelloIn{<br/><br/> public Hello() throws RemoteException{<br/><br/>  super();<br/><br/> }<br/><br/> public String sayHello() throws RemoteException{<br/><br/>  return "Hello,World!";<br/><br/> } <br/><br/> public static void main(String[] args){<br/><br/>  //System.setSecurityManager(new java.rmi.RMISecurityManager());<br/><br/>  try{<br/><br/>  <br/><br/>      Hello h=new Hello();<br/><br/>      java.rmi.Naming.rebind("hello",h);<br/><br/>      System.out.print("Ready......");<br/><br/>   }<br/><br/>   catch(Exception e){<br/><br/>    e.printStackTrace();<br/><br/>   }<br/><br/>  <br/><br/> }<br/><br/>}</em>


  执行服务端程序前在命令行方式下启动 rmi 的注册程序:  start rmiregistry


  客户端程序:


/**<br/> author by <a href="http://www.bt285.cn">http://www.bt285.cn</a>  <a href="http://www.5a520.cn">http://www.5a520.cn</a> <br/><br/><em>/<br/><br/><br/><br/><br/><br/>import java.rmi.</em>;<br/><br/>import java.rmi.registry.*; <br/><br/><br/><br/>public class Helloworld{<br/><br/> public static void main(String[] args){<br/><br/>  //System.setProperty( "java.security.policy", "client.policy" );<br/><br/>  //System.setSecurityManager(new java.rmi.RMISecurityManager());<br/><br/>  try{<br/><br/>   HelloIn hi=(HelloIn)Naming.lookup("//fengl/hello");<br/><br/>   for(int i=0;i<10;i++){<br/><br/>    System.out.println(hi.sayHello());<br/><br/>   }<br/><br/>  }<br/><br/>  catch(Exception e){<br/><br/>   e.printStackTrace();<br/><br/>  }<br/><br/>  }<br/><br/> }


  执行客户端程序前先用  rmic Hello  生成 Stub 和 Skeleton 的 class,它们


  实际上是远程调用的底层的实现。


  最后执行 java Helloworld 控制台打印出 Hello,World,成功调用.


欢迎注册黑客派社区,开启你的博客之旅。让学习和分享成为一种习惯!

留下你的脚步