zoukankan      html  css  js  c++  java
  • java rmi 小记

          最近在搞Quartz任务监控管理,碰到了jmx,后来发现Quartz对jmx的支持不是很好,介绍的文档也比较少,另外Quartz可以很方便的支持rmi于是就看了一下rmi。下面把写的一些测试小例子附上,以便日后查看或者帮助他人。

      IRmiService接口,是要暴露到远程的接口。

    package rmi.service;

    import java.rmi.Remote;
    import java.rmi.RemoteException;

    //此为远程对象调用的接口,必须继承Remote类
    public interface IRmiService extends Remote {
      public String doSomething() throws RemoteException;
    }

    RmiServiceImpl实现IRmiService接口,实现具体的方法。

    package rmi.serviceImpl;

    import java.rmi.RemoteException;
    import java.rmi.server.UnicastRemoteObject;

    import rmi.service.IRmiService;

    //此为远程对象的实现类,须继承UnicastRemoteObject
    public class RmiServiceImpl extends UnicastRemoteObject implements IRmiService {

        private static final long serialVersionUID = 1L;

        public RmiServiceImpl() throws RemoteException {
            super();
        }

        @Override
        public String doSomething() throws RemoteException {
            System.out.println("doSomething is running...");
            return "success msg";
        }
    }

    RmiServer为服务端

    package rmi.remotingservice;

    import java.rmi.Naming;
    import java.rmi.registry.LocateRegistry;

    import rmi.service.*;
    import rmi.serviceImpl.*;

    public class RmiServer {

        public static void main(String[] args) {
            try {
                IRmiService personService = new RmiServiceImpl();
                // 注册通讯端口
                LocateRegistry.createRegistry(6600);
                // 注册通讯路径
                Naming.rebind("rmi://127.0.0.1:6600/rmiService", personService);
                System.out.println("Service Start!");
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

    RmiClient为客户端。

    package rmi.remotingclient;

    import java.rmi.Naming;

    import rmi.service.IRmiService;

    public class RmiClient {
        public static void main(String[] args) {
            try {
                // 调用远程对象,注意RMI路径与接口必须与服务器配置一致
                IRmiService personService = (IRmiService) Naming.lookup("rmi://127.0.0.1:6600/rmiService");
                String msg = personService.doSomething();
                System.out.println(msg);
            } catch (Exception ex) {
                ex.printStackTrace();
            }
        }
    }

    RmiClient和RmiServer分别在不同的工程里运行。

    源码下载地址:http://pan.baidu.com/s/1eRTgMNg

    另附带quartz任务调度框架中RMI的使用例子:http://pan.baidu.com/s/1c2vBn6S

  • 相关阅读:
    DDD 领域驱动设计-谈谈 Repository、IUnitOfWork 和 IDbContext 的实践
    UVA10071 Back to High School Physics
    UVA10071 Back to High School Physics
    UVA10055 Hashmat the Brave Warrior
    UVA10055 Hashmat the Brave Warrior
    UVA458 The Decoder
    UVA458 The Decoder
    HDU2054 A == B ?
    HDU2054 A == B ?
    POJ3414 Pots
  • 原文地址:https://www.cnblogs.com/robertsun/p/5894001.html
Copyright © 2011-2022 走看看