rmi初步1——一个rmi demo

rmi demo:

1、server和client共用接口的包名要一致(全路径名)

public interface IHello extends Remote{

public String helloWord() throws RemoteException;

public String sayHello(String name) throws RemoteException;
}

2、server:继承UnicastRemoteObject,用于网络传输,生成存根、骨架等,实现IHello远程接口生命此类可以远程调用

public class HelloImpl extends UnicastRemoteObject implements IHello{

private static final long serialVersionUID = 1L;

protected HelloImpl() throws RemoteException {
}
@Override
public String helloWord() throws RemoteException {
return "hello";
}
@Override
public String sayHello(String name) throws RemoteException {
return "hello,"+name;
}
}

启动类:使用两种方式

public class HelloServer {
public static void main(String[] args) {
init();
}
public static void init(){
try {
IHello hello = new HelloImpl();//创建远程对象

/*//本地主机上的远程对象注册表实例,如果缺少注册表的创建,则无法绑定对象到远程注册表上

LocateRegistry.createRegistry(8089);//用于远程查找
//把远程对象注册到RMI注册服务上,并命名为Rhello
Naming.bind("rmi://192.168.40.69:8089/Rhello", hello);*/

Context context = new InitialContext();
LocateRegistry.createRegistry(8089);
context.rebind("rmi://127.0.0.1:8089/Rhello", hello);
System.out.println("remote object bind successfully!!");
} catch (RemoteException e) {
e.printStackTrace();
}/* catch (MalformedURLException e) {
e.printStackTrace();
} catch (AlreadyBoundException e) {
e.printStackTrace();
} */catch (NamingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

3、client:

public class HelloClient {
public static void main(String[] args) {
callHello();
}
public static void callHello(){
//在RMI服务注册表中查找名称为RHello的对象,并调用其上的方法 
try {

IHello hello = (IHello) Naming.lookup("rmi://192.168.40.69:8089/Rhello");//存根,代理类

System.out.println("存根class:"+hello.getClass());
System.out.println(hello.helloWord());
System.out.println(hello.sayHello("张三"));

} catch (MalformedURLException e) {
e.printStackTrace();
} catch (RemoteException e) {
e.printStackTrace();
} catch (NotBoundException e) {
e.printStackTrace();
}
}
}



转载于:https://my.oschina.net/mutianya/blog/165346

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值