java RMI简单实现结构

来源:互联网 发布:logback 打印sql参数 编辑:程序博客网 时间:2024/05/16 06:01

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



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

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

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

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

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

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

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



简单实现了下

//SimpleRMIInterface.javaimport java.rmi.Remote;public interface SimpleRMIInterface extends java.rmi.Remote {public String SimpleRMIHello(String name) throws java.rmi.RemoteException;}//javac SimpleRMIInterface.java//SimpleRMIImpl.javaimport 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.javaimport 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.javaimport 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);}}}