java13种技术_Java技术分享七:JavaEE的13种核心技术规范-RMI(1)

首先新建一个工程,随便什么工程,为了方便,就Java Project吧。

1、创建一个接口,继承Remotepackage rmi.java;

import java.rmi.Remote;

import java.rmi.RemoteException;

/**

* 定义远程接口,必须继承Remote接口,

* 其中所有需要远程调用的方法都必须抛出RemoteException异常

*/

public interface IHello extends Remote {

public String sayHello(String name) throws RemoteException;

public int sum(int a, int b)throws RemoteException;

}

2、创建接口的实现类package rmi.java;

import java.rmi.RemoteException;

import java.rmi.server.UnicastRemoteObject;

public class HelloImpl extends UnicastRemoteObject implements IHello{

private static final long serialVersionUID = 1961558474342609777L;

public HelloImpl()throws RemoteException {

super();

}

@Override

public String sayHello(String name) {

return "Hello, " + name;

}

@Override

public int sum(int a, int b) {

return a+b;

}

}

说明:接口的实现类同时要实现Serializable接口,这里继承UnicastRemoteObject也是间接实现Serializable接口,同时,因为构造方法需要抛出RemoteException,所以不能缺省使用隐含的无参构造方法,而应该自己显式定义构造方法。

3、创建应用类,注册和启动服务端RMI,以被客户端调用package rmi.java;

import java.net.MalformedURLException;

import java.rmi.AlreadyBoundException;

import java.rmi.Naming;

import java.rmi.RemoteException;

import java.rmi.registry.LocateRegistry;

public class HelloServer {

public static void main(String args[]) {

try {

//创建一个远程对象

IHello rhello = new HelloImpl();

//生成远程对象注册表Registry的实例,并指定端口为8888(默认端口是1099)

LocateRegistry.createRegistry(8888);

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

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

Naming.bind("rmi://127.0.0.1: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();

}

}

}

说明:绑定的地址10.225.112.86是我的局域网地址可以在DOS命令行用ipconfig查看,如果你的机器没有任何联网,可以使用127.0.0.1或localhost。

运行HelloServer.java看到,红色方块显示正在运行:

>>INFO:远程IHello对象绑定成功!

好了,现在远程服务提供端建立完成,下面建立客户端。

新建一个新的工程,为了方便,也是Java Project吧,

1、 因为客户端需要有服务端那边提供的接口,才可以访问,所以要将服务端的IHello接口完全拷贝(连同包)到客户端,当然为了方便,你在客户端工程中新建一个完全一样的接口也可以。实际运用中通常是要服务端接口打成jar包来提供的。

2、 创建客户端调用类package rmi.java;

import java.rmi.Naming;

public class HelloClient {

public static void main(String args[]) {

try {

// 在RMI服务注册表中查找名称为RHello的对象,并调用其上的方法

IHello rhello = (IHello) Naming.lookup("rmi://127.0.0.1:8888/RHello");

System.out.println(rhello.sayHello("world"));

System.out.println(rhello.sum(454, 5457));

} catch (Exception e) {

e.printStackTrace();

}

}

}

运行,成功。

下面我们要使用Spring封装的Java RMI技术,也是很多项目都会用到的。后面我有个Spring RMI的例子。要看懂下面Spring的例子,你需要已经会用Spring,会配置Spring,否则怕你看不懂,所以如果还不懂Spring的,先学学Spring,入下门吧。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值