RMI

来源:互联网 发布:淘宝商品链接提取 编辑:程序博客网 时间:2024/05/24 06:48

     RMI  定义:java远程方法调用(RPC)机制

     特点:java编写分布式对象,使之在任何地方都能调用

     运行机制:应用程序包括:服务器程序 和 客户端程序  ,服务器端可创建多个远程对象,使这些远程对象可调用,客户端程序可访问远程对象方法

     简单案例:

      1)生成远程接口 需要extends Remote

      public interface IService extends Remote{
                  void demoMethod(String... params) throws RemoteException;

}

       2)实现远程对象 服务端程序 extends UnicastRemoteObject

public class ServiceImpl extends UnicastRemoteObject implements IService {


/**

*/
private static final long serialVersionUID = 1L;


protected ServiceImpl() throws RemoteException {
super();
// TODO Auto-generated constructor stub
}

@Override
public void demoMethod(String... params) throws RemoteException {
//服务类方法
for(final String str : params)
{
System.out.println("输出:"+ str);
}
}
}

   3)注册远程对象

    public <T extends ServiceImpl> void Register(String url,int port, T t){
logger.info("--------------将服务注册/放到服务器上---------------------------------------");

try{
//注册远程服务端口
LocateRegistry.createRegistry(port);
//将服务类放到服务器上
Naming.rebind(url, t);
logger.info(url+"服务开启");
}catch(final RemoteException e){

} catch (final MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

  4)本地客户程序 访问远程对象

    /**
* 本地客户端 获取远程服务类
* @param url
* @return
*/
public <T extends IService> T  getService(String url){
    
logger.info("--------------本地客户端获取远程服务----------------------------------");

T t = null;
try {
t = (T) Naming.lookup(url);

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

return t;
}

    RMI 使客户端与服务器 无须协议进行转换,可直接数据交互

    理解:本地客户端 需要其他服务机上服务来处理业务逻辑,rmi技术使本地机上能访问到远程对象,并调用方法处理。



0 0
原创粉丝点击