java8的rmi_Java中的RMI

个人理解:

RMI就是RMI 是不是就是向客户端隐藏了实现类。

但是客户端要有与server端同样的接口。

接口:

/**

* Created by IntelliJ IDEA.

* User: leizhimin

* Date: 2008-8-7 21:50:02

* 定义一个远程接口,必须继承Remote接口,其中需要远程调用的方法必须抛出RemoteException异常

*/

public interface IHello extends Remote {

/**

* 简单的返回“Hello World!"字样

* @return 返回“Hello World!"字样

* @throws java.rmi.RemoteException

*/

public String helloWorld() throws RemoteException;

/**

* 一个简单的业务方法,根据传入的人名返回相应的问候语

* @param someBodyName  人名

* @return 返回相应的问候语

* @throws java.rmi.RemoteException

*/

public String sayHelloToSomeBody(String someBodyName) throws RemoteException;

}

客户端、服务器端都要有。

实现类:

/**

* Created by IntelliJ IDEA.

* User: leizhimin

* Date: 2008-8-7 21:56:47

* 远程的接口的实现

*/

public class HelloImpl extends UnicastRemoteObject implements IHello {

/**

* 因为UnicastRemoteObject的构造方法抛出了RemoteException异常,因此这里默认的构造方法必须写,必须声明抛出RemoteException异常

*

* @throws RemoteException

*/

public HelloImpl() throws RemoteException {

}

/**

* 简单的返回“Hello World!"字样

*

* @return 返回“Hello World!"字样

* @throws java.rmi.RemoteException

*/

public String helloWorld() throws RemoteException {

return "Hello World!";

}

/**

* 一个简单的业务方法,根据传入的人名返回相应的问候语

*

* @param someBodyName 人名

* @return 返回相应的问候语

* @throws java.rmi.RemoteException

*/

public String sayHelloToSomeBody(String someBodyName) throws RemoteException {

return "你好," + someBodyName + "!";

}

}

只要在服务器端有。

服务器的服务程序:

/**

* Created by IntelliJ IDEA.

* User: leizhimin

* Date: 2008-8-7 22:03:35

* 创建RMI注册表,启动RMI服务,并将远程对象注册到RMI注册表中。

*/

public class HelloServer {

public static void main(String args[]) {

try {

//创建一个远程对象

IHello rhello = new HelloImpl();

//本地主机上的远程对象注册表Registry的实例,并指定端口为8888,这一步必不可少(Java默认端口是1099),必不可缺的一步,缺少注册表创建,则无法绑定对象到远程注册表上

LocateRegistry.createRegistry(8888);

//把远程对象注册到RMI注册服务器上,并命名为RHello

//绑定的URL标准格式为:rmi://host:port/name(其中协议名可以省略,下面两种写法都是正确的)

Naming.bind("rmi://localhost:8888/RHello",rhello);

//            Naming.bind("//localhost:8888/RHello",rhello);

System.out.println(">>>>>INFO:远程IHello对象绑定成功!");

} catch (RemoteException e) {

System.out.println("创建远程对象发生异常!");

e.printStackTrace();

} catch (AlreadyBoundException e) {

System.out.println("发生重复绑定对象异常!");

e.printStackTrace();

} catch (MalformedURLException e) {

System.out.println("发生URL畸形异常!");

e.printStackTrace();

}

}

}

绑定服务端口。

客户端使用类:

/**

* Created by IntelliJ IDEA.

* User: leizhimin

* Date: 2008-8-7 22:03:35

* 创建RMI注册表,启动RMI服务,并将远程对象注册到RMI注册表中。

*/

public class HelloServer {

public static void main(String args[]) {

try {

//创建一个远程对象

IHello rhello = new HelloImpl();

//本地主机上的远程对象注册表Registry的实例,并指定端口为8888,这一步必不可少(Java默认端口是1099),必不可缺的一步,缺少注册表创建,则无法绑定对象到远程注册表上

LocateRegistry.createRegistry(8888);

//把远程对象注册到RMI注册服务器上,并命名为RHello

//绑定的URL标准格式为:rmi://host:port/name(其中协议名可以省略,下面两种写法都是正确的)

Naming.bind("rmi://localhost:8888/RHello",rhello);

//            Naming.bind("//localhost:8888/RHello",rhello);

System.out.println(">>>>>INFO:远程IHello对象绑定成功!");

} catch (RemoteException e) {

System.out.println("创建远程对象发生异常!");

e.printStackTrace();

} catch (AlreadyBoundException e) {

System.out.println("发生重复绑定对象异常!");

e.printStackTrace();

} catch (MalformedURLException e) {

System.out.println("发生URL畸形异常!");

e.printStackTrace();

}

}

}

指定服务器与指定端口。

感谢leizhimin。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值