`

spring对java远程调用的简化(一)之RMI

阅读更多
Java开发者可以利用的远程技术有以下几种:
1.远程方法调用(RMI)
2.Caucho的Hessian和Burlap
3.Spring自己的HTTP invoker
4.EJB
5.Web Services
一.RMI
它由5个包及3个应用工具组成
java.rmi 组织客户端的RMI类、接口和异常
java.rmi.server 组织服务器端的RMI类 接口和异常
java.rmi.registry 组织用于管理RMI命名服务的类
java.rmi.dgc 组织用于管理分布式垃圾收集的类
java.rmi.activation 组织用于实现按需激活的RMI服务的类
rmic 编译器,它产生RMI使用的存根和框架以完成分布式通信
rmiregistry 一个为RMI提供命名服务的服务器,这项服务把名字和对象关联在一起
rmid 一个支持RMI激活框架的服务器

     如果具体还不知道什么是RMI,可以参考这篇非常不错的文章《JavaRMI入门实战》
注意:
    1)要把PerfectTime 和PerfectTimeI类中的
   System.setSecurityManager(new RMISecurityManager()); 注释掉(因为这需要配安全策略,比较麻烦)
   2)还有在JDK5下,用rmic -d命令的话只会输出一个文件,因为JDK5对RMI进行了优化
接下来看看用spring对《JavaRMI入门实战》例子的简化
1.客户端的配置及代码
PerfectTimeI接口(不用继承java.rmi.Remote接口了,普通的POJO)
package com.open.rmi.ex2;
public interface PerfectTimeI  {
    long getPerfectTime();
}DisplayPerfectTime类(也是一个普通的类)
package com.open.rmi.ex2;
public class DisplayPerfectTime {
    private PerfectTimeI pf;
    public void display() {
        for (int i = 0; i < 10; i++) {
            System.out.println("PerfectTime:" + pf.getPerfectTime());
        }
    }
    //省略了pf的get,set方法
}客户端配置bean_client.xml
<beans>
    <!--客户端-->
    <bean id="pf" class="org.springframework.remoting.rmi.RmiProxyFactoryBean">
        <property name="serviceUrl" value="rmi://192.168.1.8:1099/perfect_time"/>
        <property name="serviceInterface" value="com.open.rmi.ex2.PerfectTimeI"/>
    </bean>
    <bean id="test" class="com.open.rmi.ex2.DisplayPerfectTime">
        <property name="pf" ref="pf"/>
    </bean>
</beans>2.服务端的配置及代码
PerfectTime类(爽吧,简简单单的POJO)
package com.open.rmi.ex2;
public class PerfectTime  implements PerfectTimeI {
    public long getPerfectTime() {
        return System.currentTimeMillis();
    }
}配置bean_server.xml
<beans>
    <!--服务端:Spring读取完定义文件,在生成serviceExporter实例后,RMI服务就会启动-->
    <bean id="serviceExporter"
        class="org.springframework.remoting.rmi.RmiServiceExporter">
        <property name="service" ref="pt"/>
        <property name="serviceName" value="perfect_time"/>
        <property name="serviceInterface" value="com.open.rmi.ex2.PerfectTimeI"/>
    </bean>
    <bean id="pt" class="com.open.rmi.ex2.PerfectTime"/>
</beans>3.测试代码
TestServer.java
package com.open.rmi.ex2;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class TestServer {
    public static void main(String[] args) {
        BeanFactory bf=new ClassPathXmlApplicationContext("bean_server.xml");
        bf.getBean("serviceExporter");
    }
}
TestClient.java
package com.open.rmi.ex2;

import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class TestClient {
    public static void main(String[] args) {
        BeanFactory bf = new ClassPathXmlApplicationContext("bean_client.xml");
        DisplayPerfectTime test = (DisplayPerfectTime)bf.getBean("test");
        test.display();
    }
}
先运行TestServer,输出
RmiServiceExporter - Could not detect RMI registry - creating new one在运行TestClient就可以看到结果了
PerfectTime:1150125107468
PerfectTime:1150125107484
PerfectTime:1150125107484
看到没,你根本不用运行rmic -d G:\RMI test.PerfectTime,start rmiregistry 。
这就是spring的魅力啊

分享到:
评论

相关推荐

    三种方式实现java远程调用(rmi),绝对可用

    Java远程调用(Remote Method Invocation,RMI)是Java平台中一种重要的分布式计算技术,它允许在不同网络环境中的Java对象之间进行透明的交互。在本文中,我们将深入探讨三种不同的RMI实现方法:原始方式、Spring...

    spring RMI 远程接口调用

    Spring RMI(Remote Method Invocation)远程接口调用是Spring框架提供的一个特性,它允许你在分布式环境中调用对象的方法,使得应用程序能够跨越网络边界操作远程对象。这个技术在大型企业级应用中尤其有用,因为它...

    java spring+rmi 的远程调用例子

    这个压缩包文件“Spring+RMI”很可能包含了实现这样一个远程调用示例的所有必要组成部分,包括配置文件、接口定义、服务器端实现以及客户端调用代码。 首先,我们来理解一下Java RMI。RMI是Java提供的一种原生的...

    RMI远程调用

    Spring框架提供了一套更高级别的抽象来简化RMI的使用。通过Spring的`RemoteProxyFactoryBean`,可以创建一个代理对象,该对象在调用方法时自动执行RMI调用。此外,Spring的`RmiServiceExporter`可以方便地导出一个...

    spring远程调用简单实例

    Spring框架的一大特色就是其远程调用能力,这使得分布式系统的开发变得更加便捷。本实例将深入探讨Spring的远程调用功能,通过一个简单的例子来帮助理解其工作原理和实施步骤。 首先,我们要明确Spring远程调用...

    使用spring远程调用服务端接口实现WebService功能

    HttpInvokerServiceExporter会自动处理请求的序列化和反序列化,使得远程调用过程简化。 1. **服务提供者端配置**:在服务端,你需要创建一个实现了特定业务接口的bean,并使用HttpInvokerServiceExporter来暴露这...

    Spring-RMI (RMI调用, HTTP调用)

    RMI是Java中的一种远程方法调用技术,允许对象在不同JVM之间进行通信。Spring通过提供RMI集成,简化了RMI服务的创建和调用。以下是一些关键点: 1. **服务接口定义**:首先,你需要定义一个远程服务接口,这个接口...

    RMI.rar_Java RMI_java.rmi_java.rmi.Remot_remote

    Java RMI(远程方法调用)是Java编程语言中的一项核心技术,自JDK 1.1版本起就被引入,用于构建分布式系统。RMI允许Java对象在不同的Java虚拟机(JVMs)之间进行交互,仿佛这些对象是在同一台机器上一样。这种技术的...

    远程调用服务框架

    4. **HTTP Invoker**:HTTP Invoker是Spring为Java对象提供的另一种远程调用方案,它基于HTTP协议,但提供了类似RMI的透明调用体验。HTTP Invoker通过序列化和反序列化Java对象,实现了跨JVM的远程方法调用。 在...

    Spring RMI

    Spring RMI是Spring框架对Java RMI的封装,它简化了RMI服务的配置和管理过程。RMI的核心概念包括: - **远程接口(Remote Interface)**:定义了可以在不同JVM之间调用的方法。 - **远程实现(Remote ...

    Spring RMI小例子

    在这个"Spring RMI小例子"中,我们将深入理解Spring如何简化RMI的使用,以及如何通过它实现跨网络的交互。 首先,RMI允许Java对象在不同的JVM之间进行通信,仿佛它们都在同一个进程中运行。Spring通过提供自动注册...

    java spring rmi

    Java Spring RMI(Remote Method Invocation)是Java平台上用于构建分布式应用程序的一种技术,它允许Java对象在不同的JVM(Java Virtual Machine)之间进行交互。Spring框架提供了对RMI的支持,简化了RMI的配置和...

    rmi与spring整合实例

    RMI是Java平台提供的一种技术,用于在不同Java虚拟机(JVM)之间进行对象间的远程调用。Spring框架则是一个强大的轻量级应用框架,它提供了依赖注入、面向切面编程等功能,极大地简化了企业级Java应用的开发。 当...

    如何在Spring框架中使用RMI技术.zip

    1. **定义远程接口**:创建一个Java接口,声明所有需要远程调用的方法。这个接口需要继承`java.rmi.Remote`接口,并抛出`java.rmi.RemoteException`。 2. **实现远程接口**:创建一个实现远程接口的类,其中包含...

    Spring-RMI.rar_spring rmi

    1.2 Spring的RMI支持:Spring通过`org.springframework.remoting.rmi.RmiServiceExporter`和`RmiProxyFactoryBean`简化了RMI的使用。`RmiServiceExporter`用于发布服务,而`RmiProxyFactoryBean`则用于创建RMI服务的...

    spring rmi 多接口配置 调用

    而RMI(Remote Method Invocation,远程方法调用)是Java中用于分布式计算的技术,使得运行在不同JVM上的对象可以互相调用方法。本篇文章将深入探讨如何在Spring框架中配置和调用RMI的多个接口。 首先,我们需要...

    spring rmi应用

    然而,需要注意的是,虽然Spring RMI简化了远程调用,但在网络延迟、并发控制、安全性等方面仍需考虑。例如,使用SSL进行安全传输,或者通过负载均衡器来分发请求,提高系统的可用性和可扩展性。 总之,Spring RMI...

    spring rmi 源码

    Spring RMI(Remote Method Invocation)...通过分析服务端和客户端的源码,我们可以深入理解如何在Spring框架下实现和使用RMI远程调用,这对于任何希望在分布式系统中利用Spring的开发者来说都是一份宝贵的参考资料。

    spring中使用RMI

    在Spring框架中,远程方法调用(Remote Method Invocation, RMI)是一种使应用程序能够通过网络调用另一个JVM上的对象方法的技术。RMI是Java平台的一部分,它允许开发者创建分布式应用,使得对象可以像调用本地方法...

    spring RMI简单例子

    Spring RMI(Remote Method Invocation)是Java平台上的远程方法调用技术,结合Spring框架的特性,使得在分布式系统中调用远程服务变得更加便捷。在这个简单的例子中,我们将深入理解Spring RMI的工作原理以及如何...

Global site tag (gtag.js) - Google Analytics