• 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

  • 相关阅读:
    晚上打死个老鼠
    今早服务器出现的问题
    打球
    出于对Atlas自带AutoCompleteBehavior的不满,自定义了一个支持模版的AutoCompleteBehavior
    PetShop4.0项目分解
    WebSnapr-生成你的网站缩略图
    Lost HTML Intellisense within ASP.NET AJAX Controls
    调整调出输入法的顺序
    儿童网址大全
    gridview列 数字、货币和日期 显示格式
  • 原文地址:https://www.cnblogs.com/robertsun/p/5894001.html
Copyright © 2020-2023  润新知