java RMI简单实现结构

通过java提供的RMI机制,可以实现一个分布式服务的系统,简单的RMI实现的系统的结构如下



UnicastRemoteObject是java提供的类,只要继承然后写实现就好,该类封装好了RMI通信的很多细节,Remote类也是。

APPInterface是提供给client的一个接口,可以隐藏服务端的具体实现。

APPinterfaceImplementation实现APPInterface接口的类,保留在服务端,在这个类里写具体的方法实现,除了实现接口定义的方法,

还可以另外写其他的方法用于内部调用或管理。

client类就是向register查找服务,然后通过APPInterface向服务端发送方法调用请求。

server类是向register注册服务,将APPInterfaceImplementation类与相应的服务名绑定,将服务名在register注册,这样client就可以

在register查找到对应的服务,然后进行远程方法调用了。



简单实现了下

//SimpleRMIInterface.java
import java.rmi.Remote;
public interface SimpleRMIInterface extends java.rmi.Remote {
	public String SimpleRMIHello(String name) throws java.rmi.RemoteException;
}


//javac SimpleRMIInterface.java
//SimpleRMIImpl.java
import java.rmi.server.UnicastRemoteObject;
public class SimpleRMIImpl extends UnicastRemoteObject implements SimpleRMIInterface {
	public SimpleRMIImpl() throws java.rmi.RemoteException {
		super();
	}
	public String SimpleRMIHello(String name) throws java.rmi.RemoteException {
		return "hello " + name;
	}
}
//javac SimpleRMIImpl.java
//rmic SimpleRMIImpl


//SimpleRMIServer.java
import java.rmi.Naming;
public class SimpleRMIServer {
	public SimpleRMIServer() {
		try {
			SimpleRMIInterface simpleRMIObj = new SimpleRMIImpl();
			Naming.rebind("rmi://localhost:10099/SimpleRMIService", simpleRMIObj);
		} catch(Exception e) {
			System.out.println(e);
		}
	}
	public static void main(String[] args) {
		new SimpleRMIServer();
	}
}



//SimpleRMIClient.java

import java.rmi.Naming;
public class SimpleRMIClient {
	public static void main(String[] args) {
		try {
			String hostName = "localhost";
			String port = "1099";
			String registeryURL = "rmi://" + hostName + ":" + port + "/SimpleRMIService";
			SimpleRMIInterface simpleRMIObj = (SimpleRMIInterface)Naming.lookup(registeryURL);
			System.out.println(simpleRMIObj.SimpleRMIHello("world"));
		} catch (Exception e) {
			System.out.println(e);
		}
	}
}








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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值