java远程方法调用(RMI)
Java远程方法调用(Java Remote Method Invocation,简称RMI)是实现RPC的一种机制。Java RMI实现过程可分为以下几个步骤:1. 创建远程接口及声明远程方法;2. 创建远程对象及实现远程方法;3. 服务器端启动RMI注册服务,注册远程对象;4. 客户端查找远程对象并调用远程方法。远程接口具有如下特点:1. 远程接口必须为public属性。如果不这样,除非客户端与远程接口在同一个包内,否则 当试图装入实现该远程接口的远程对象时,调用会得到错误结果。2. 远程接口必须扩展接口java.rmi.Remote。3. 除与应用程序本身特定的例外之外,远程接口中的每个方法都必须在自己的throws从句中 声明java.rmi.RemoteException。(或 RemoteException 的父类)。4. 作为参数或返回值传递的一个远程对象(不管是直接,还是本地对象中嵌入)必须声明为远 程接口,而不应声明为实施类。5. 参数或返回值若为对象,该对象必须实行序列号接口 Serializable其代码如下:1) 创建远程接口及声明远程方法package com.server;Java代码import java.rmi.Remote;import java.rmi.RemoteException;public inte易做图ce RmiSample extends Remote{public int sum(int a, int b) throws RemoteException;public void save(Student s) throws RemoteException;public Student get() throws RemoteException;}2) 创建远程对象及实现远程接口方法Java代码package com.server;import java.rmi.RemoteException;import java.rmi.server.UnicastRemoteObject;public class RmiSampleImpl extends UnicastRemoteObject implements RmiSample{/****/private static final long serialVersionUID = -7851182277085789517L;protected RmiSampleImpl() throws RemoteException {super();}@Overridepublic int sum(int a, int b) throws RemoteException {return a + b;}@Overridepublic void save(Student s) throws RemoteException {System.out.println("student id is :"+s.getId());System.out.println("student name is :"+s.getName());}@Overridepublic Student get() throws RemoteException {Student s = new Student();s.setId(2);s.setName("学生2");return s;}}3) 服务器端启动RMI注册服务,将远程对象进行注册Java代码package com.server;import java.net.MalformedURLException;import java.rmi.Naming;import java.rmi.RemoteException;import java.rmi.registry.LocateRegistry;public class RmiSampleServer {public static void main(String[] args) {try{LocateRegistry.createRegistry(8808);//LocateRegistry.createRegistry(1099);RmiSampleImpl server= new RmiSampleImpl();Naming.rebind("//localhost:8808/SAMPLE-SERVER" , server);//Naming.rebind("server" , server);}catch (MalformedURLException me){System.out.println("Malformed URL: " + me.toString());}catch(RemoteException re){System.out.println("Remote Exception: "+re.toString());}}}4) 客户端查找远程对象并调用远程方法Java代码package com.client;import java.rmi.RemoteException;import java.rmi.Naming;import com.server.RmiSample;import com.server.Student;public class RmiSampleClient {public static void main(String[] args) {try {String url = "//localhost:8808/SAMPLE-SERVER";//RmiSample RmiObject = (RmiSample) Naming.lookup("server");RmiSample RmiObject = (RmiSample) Naming.lookup(url);System.out.println(" 3 + 2 = " + RmiObject.sum(3, 2));Student s = new Student();s.setId(1);s.setName("学生1");RmiObject.save(s);Student student = RmiObject.get();System.out.println("student id is :"+student.getId());补充:软件开发 , Java ,
上一个:线性表
下一个:Hibernate 之 二级缓存
- 更多JAVA疑问解答:
- java怎么在线读取ftp服务器上的文件内容
- 关于程序员的职业规划
- HTML和JSP矛盾吗?
- java小程序如何打包?
- java怎么split路径文件名?
- jsp+javaBean中Column 'ordersPrice' specified twice的错误
- Java TCP/IP Socket网络编程系列
- 大家来讨论一下我到底该用什么好?Swing 还是 JavaFX
- 关于Hibernate实体自身多对一的抓取问题
- 关于apache2+tomcat群集出现的问题
- spring 获取上下文问题
- SSH 导入导出excel 谁有这块的资料吗?
- Ext TreePanel 刷新问题
- springmvc 加载一个jsp页面执行多个方法 报404
- checkbox数组action怎么向页面传值