java RMI简单入门

1.Java RMI:java远程方法调用(Rmote Method Invocation)。简单的说,RMI是指Java虚拟机上的对象调用另外一个Java虚拟机上的对象的方法。

RMI实现步骤:

1.编写服务端接口,该接口需继承Remote类

public interface IHello extends Remote 
{
	public String sayHello() throws RemoteException;
}

2.服务端实现该接口的实现类,该类需继承UnicastRemoteObject类。

public class HelloImp extends UnicastRemoteObject implements IHello{

	protected HelloImp() throws RemoteException {
	}

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	@Override
	public String sayHello() {
		return "hello";
	}

}

3.服务端注册远程方法

public class Test {

	public static void main(String[] args) throws RemoteException 
	{
		IHello rhello = new HelloImp();
		try 
		{
			//本地注册到8888端口
			LocateRegistry.createRegistry(8888);
			try {
				//将接口绑定到url
				Naming.bind("rmi://localhost:8888/RHello",rhello); 
				System.out.println("绑定成功");
			} catch (MalformedURLException e) {
				e.printStackTrace();
			} catch (AlreadyBoundException e) {
				e.printStackTrace();
			}
		} 
		catch (RemoteException e) 
		{
			e.printStackTrace();
		}
	}

}

4.客户端调用该远程方法

public class HelloClient {

	public static void main(String[] args) 
	{
		try {
			//根据url连接到RMI注册
			IHello hello = (IHello) Naming.lookup("rmi://192.168.1.146:8888/RHello");
			 System.out.println(hello.sayHello()); 

		} catch (Exception e) {
			// TODO: handle exception
		}
	}
}

RMI优缺点:

优点:

1.传输效率高。RMI使用二进制消息进行客户端与服务器端的交互。


缺点:

1.RMI是基于Java的。因为RMI使用了Java的序列化机制,所以必须保证通过网络传输的对象类型必须保证在调用的两端是同一版本。

2.RMI很难通过防火墙。因为RMI可以使用任意端口来实现交互,这在防火墙来说是不允许的。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值