Java 实现RMI入门程序
来源:互联网 发布:网络流行字 编辑:程序博客网 时间:2024/06/06 00:53
因为是Java内置的功能,所以不需要引入任何额外的Jar包
首先我们定义一个接口,这个接口必须继承Remote
package cn.blueboz.rmi;import java.rmi.Remote;import java.rmi.RemoteException;/** * Created by Administrator on 2016/4/20. * 定义一个远程接口,这个远程接口务必实现Remote接口 */public interface IHelloRMI extends Remote { /** * 一个最简单的Hello实例 */ public String sayHelloToClient()throws RemoteException;}
接下来就是实现这个接口,注意,这个必须继承UnicastRemoteObject这个类
package cn.blueboz.rmi.impl;import cn.blueboz.rmi.IHelloRMI;import java.rmi.RemoteException;import java.rmi.server.UnicastRemoteObject;/** * Created by Administrator on 2016/4/20. */public class HelloRMIImpl extends UnicastRemoteObject implements IHelloRMI{ /*i * 这里必须是构造器抛出RemoteException * 因为继承父类UnicastRemoteObject构造器中抛出RemoteException * 同时这个类是必须继承UnicastRemoteObject这个类 */ public HelloRMIImpl()throws RemoteException{ } @Override public String sayHelloToClient()throws RemoteException { return "你好客户端,我是服务端"; }}接下来就是发布接口了
package cn.blueboz.rmi;import cn.blueboz.rmi.impl.HelloRMIImpl;import java.net.MalformedURLException;import java.rmi.AlreadyBoundException;import java.rmi.Naming;import java.rmi.RemoteException;import java.rmi.registry.LocateRegistry;import java.rmi.registry.Registry;/** * Created by Administrator on 2016/4/20. */public class RMIServer { /** * 发布接口 * @param args */ public static void main(String[] args) throws RemoteException, AlreadyBoundException, MalformedURLException { /** * 创建一个远程接口的实现类 */ IHelloRMI helloRMI=new HelloRMIImpl(); /** * 创建一个RMI端口,如果没有创建,RMI服务也就无法绑定到这个接口上面 */ System.out.println("正在创建接口"); LocateRegistry.createRegistry(8889); System.out.println("创建端口成功"); /** * 在这里声明一下三个异常 * RemoteException:创建远程对象异常 * AlreadyBoundException:重复绑定异常 * MalformedURLException:指定的URI发生错误的异常 */ System.out.println("正在绑定"); Naming.bind("rmi://localhost:8889/HelloRMI",helloRMI); System.out.println("绑定成功!"); //注意,何以省略掉协议前缀,即使rmi: //Naming.bind("//localhost:8889/HelloRMI",helloRMI); }}最后,我们可以看到
就说明我们的接口发布成功了,也可以使用终端内置工具netstat查看端口占用情况,发现存在8889端口,表示我们的端口发布成功
接下来就是测试我们的端口
新建另外的一个工程,从服务端赋值过来远程接口IHelloRemote,并且保持包路径不变
package cn.blueboz.rmiclient;import cn.blueboz.rmi.IHelloRMI;import java.net.MalformedURLException;import java.rmi.Naming;import java.rmi.NotBoundException;import java.rmi.RemoteException;/** * Created by Administrator on 2016/4/20. * Java RMI客户端 */public class RMIClient { public static void main(String[] args) throws RemoteException, NotBoundException, MalformedURLException { /** * IHelloRMI接口从服务端拷贝过来即可 * 这里必须注意的是IHelloRMI的包路径必须与服务端一致 * 如果不一致,会发生ClassNotFoundException * Naming.lookup是在指定地址插在rmi服务 */ IHelloRMI helloRMI = (IHelloRMI) Naming.lookup("rmi://localhost:8889/HelloRMI"); String s = helloRMI.sayHelloToClient(); System.out.println(s); }}下面是测试结果
到这里JavaRMI的HelloWorld程序已经完成。
1 0
- Java 实现RMI入门程序
- JAVA RMI 入门 原理与实现(一)
- Java RMI-IIOP 入门
- Java RMI入门
- Java RMI-IIOP 入门
- Java RMI 入门
- Java RMI 入门
- Java RMI-IIOP 入门
- Java RMI入门
- java rmi入门
- Eclipse Java RMI 入门
- Eclipse Java RMI 入门
- JAVA RMI 简单入门
- Java RMI入门
- Java RMI入门
- Java RMI 入门学习
- Java RMI入门
- Java RMI 入门指南
- Python学习笔记02
- 即时通讯(环信)-bug Implicit declaration of function 'NSEaseLocalizedString' is invalid in C99
- VS2015终极卸载方法(适用于VS各种版本)
- 深入 理解 Statement 和 PreparedStatement
- Java线程同步小陷阱,你掉进去过吗?
- Java 实现RMI入门程序
- iOS 实现Android Toast消息提示 效果
- spring Junit下的延迟加载问题(Hibernate)
- Scala class和case class的区别
- linux 添加开机自启动
- js常用运算符及用法
- openstack nova-api启动流程
- Oracle&SQL数据库参数异同
- 自定义View:关于Caused by: java.lang.NoSuchMethodException异常