最近在搞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

java rmi 小记的更多相关文章

  1. Exception thrown by the agent : java.rmi.server.ExportException: Port already in use

    今天有个应用一直起不来,感觉配置都对啊,奇了怪了.看日志发现如下: STATUS | wrapper | 2017/01/04 08:09:31 | Launching a JVM...INFO | ...

  2. Java RMI之HelloWorld篇

    Java RMI 指的是远程方法调用 (Remote Method Invocation).它是一种机制,能够让在某个 Java 虚拟机上的对象调用另一个 Java 虚拟机中的对象上的方法.可以用此方 ...

  3. 启动tomcat时 错误: 代理抛出异常 : java.rmi.server.ExportException: Port already in use: 1099;

     错误: 代理抛出异常 : java.rmi.server.ExportException: Port already in use: 1099; nested exception is:  java ...

  4. JAVA RMI 实例

    下面我将介绍一个完整的实例,让初学者能快速体验RMI的功用. 分为以下四个步骤 1. 创建远程接口及声明远程方法(HelloInterface.java)2. 实现远程接口及远程方法(继承Unicas ...

  5. JAVA RMI例子

    RMI 是java语言的一个RPC框架,本文给出基础例子如下: 1.实现接口: public interface ICalc extends Remote { public int add(int p ...

  6. java.rmi.NoSuchObjectException: no such object in table

    jmx链接的时候,最简单的例子都行不通,郁闷,出现了: 参考:http://reiz6153.blog.163.com/blog/static/401089152009442723208/ 代码: M ...

  7. 启动tomcat时 错误: 代理抛出异常 : java.rmi.server.ExportException: Port already in use: 1099的解决办法

    一.问题描述 今天一来公司,在IntelliJ IDEA 中启动Tomcat服务器时就出现了如下图所示的错误:

  8. Java RMI 介绍和例子以及Spring对RMI支持的实际应用实例

    RMI 相关知识 RMI全称是Remote Method Invocation-远程方法调用,Java RMI在JDK1.1中实现的,其威力就体现在它强大的开发分布式网络应用的能力上,是纯Java的网 ...

  9. Java学习笔记(十六)——Java RMI

    [前面的话] 最近过的好舒服,每天过的感觉很充实,一些生活和工作的技巧注意了就会发现,其实生活也是可以过的如此的有滋有味,满足现在的状况,并且感觉很幸福. 学习java RMI的原因是最近在使用dub ...

随机推荐

  1. 优雅降级&渐进增强

    优雅降级(Graceful Degradation) 关注点:最新的浏览器上构建体验很好的WEB应用. 降级:旧版本浏览器提供差强人意的体验,不影响功能的使用. 渐进增强(Progressive En ...

  2. 如何把PPT变小|PowerPoint文档减肥的几种方法

    使用powerpoint制作幻灯片的过程中,经常出现过这样的情况,制作幻灯片时,出于内容的需要和美观的需要,添加了许多图片和Excel表或者OLE对象,成倍增大了文档的体积,结果导致: 1.页面编辑人 ...

  3. 如何搭建MVC3与配置models层

    1.1 新建项目 第一步:打开Vs2010界面,点击左上角文件,点击新建,选择项目 1.1(图1) 第二步:点击网站Web类型,选择ASP.net MVC3 Web应用程序,在名称中输入项目名称(解决 ...

  4. java的占位符

    java占位符的类型: 常规类型的格式化 String类的format()方法用于创建格式化的字符串以及连接多个字符串对象.熟悉C语言的同学应该记得C语言的sprintf()方法,两者有类似之处.fo ...

  5. centos7 install mongodb

    $vi /etc/yum.repos.d/mongodb-org-3.0.repo [mongodb-org-3.0] name=MongoDB Repository baseurl=http://r ...

  6. 使用Windows 系统性能监控来报警磁盘空间不足

    http://blog.csdn.net/jiangxinyu/article/details/4370288

  7. mysql rr和rc区别

    <pre name="code" class="html">1. 数据库事务ACID特性 数据库事务的4个特性: 原子性(Atomic): 事务中的 ...

  8. Subway POJ 2502

    题目链接: http://poj.org/problem?id=2502 题目大意: 你刚从一个安静的小镇搬到一个吵闹的大城市,所以你不能再骑自行车去上学了,只能乘坐地铁或者步行去上学.因为你不想迟到 ...

  9. 配置Windows 2008 R2 防火墙允许远程访问SQL Server 2008 R2 更改端口 连接字符串 IP+逗号+端口号

      1.先修改 sql server 2008R2的端口号吧,1433经常成为别人入侵的端口,在sql server 配置管理器 -->sql server 网络配置-->MSSQLSER ...

  10. 寻找INTERIGHT衬衫男神! [复制链接]

    寻找INTERIGHT衬衫男神! - 公告板 - 京东内部论坛 - Powered by Discuz! 寻找INTERIGHT衬衫男神!   [复制链接]