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远程调用(Remote Method Invocation,RMI)是Java平台中一种重要的分布式计算技术,它允许在不同网络环境中的Java对象之间进行透明的交互。在本文中,我们将深入探讨三种不同的RMI实现方法:原始方式、Spring...
Spring RMI(Remote Method Invocation)远程接口调用是Spring框架提供的一个特性,它允许你在分布式环境中调用对象的方法,使得应用程序能够跨越网络边界操作远程对象。这个技术在大型企业级应用中尤其有用,因为它...
这个压缩包文件“Spring+RMI”很可能包含了实现这样一个远程调用示例的所有必要组成部分,包括配置文件、接口定义、服务器端实现以及客户端调用代码。 首先,我们来理解一下Java RMI。RMI是Java提供的一种原生的...
Spring框架提供了一套更高级别的抽象来简化RMI的使用。通过Spring的`RemoteProxyFactoryBean`,可以创建一个代理对象,该对象在调用方法时自动执行RMI调用。此外,Spring的`RmiServiceExporter`可以方便地导出一个...
Spring框架的一大特色就是其远程调用能力,这使得分布式系统的开发变得更加便捷。本实例将深入探讨Spring的远程调用功能,通过一个简单的例子来帮助理解其工作原理和实施步骤。 首先,我们要明确Spring远程调用...
HttpInvokerServiceExporter会自动处理请求的序列化和反序列化,使得远程调用过程简化。 1. **服务提供者端配置**:在服务端,你需要创建一个实现了特定业务接口的bean,并使用HttpInvokerServiceExporter来暴露这...
RMI是Java中的一种远程方法调用技术,允许对象在不同JVM之间进行通信。Spring通过提供RMI集成,简化了RMI服务的创建和调用。以下是一些关键点: 1. **服务接口定义**:首先,你需要定义一个远程服务接口,这个接口...
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框架对Java RMI的封装,它简化了RMI服务的配置和管理过程。RMI的核心概念包括: - **远程接口(Remote Interface)**:定义了可以在不同JVM之间调用的方法。 - **远程实现(Remote ...
在这个"Spring RMI小例子"中,我们将深入理解Spring如何简化RMI的使用,以及如何通过它实现跨网络的交互。 首先,RMI允许Java对象在不同的JVM之间进行通信,仿佛它们都在同一个进程中运行。Spring通过提供自动注册...
Java Spring RMI(Remote Method Invocation)是Java平台上用于构建分布式应用程序的一种技术,它允许Java对象在不同的JVM(Java Virtual Machine)之间进行交互。Spring框架提供了对RMI的支持,简化了RMI的配置和...
RMI是Java平台提供的一种技术,用于在不同Java虚拟机(JVM)之间进行对象间的远程调用。Spring框架则是一个强大的轻量级应用框架,它提供了依赖注入、面向切面编程等功能,极大地简化了企业级Java应用的开发。 当...
1. **定义远程接口**:创建一个Java接口,声明所有需要远程调用的方法。这个接口需要继承`java.rmi.Remote`接口,并抛出`java.rmi.RemoteException`。 2. **实现远程接口**:创建一个实现远程接口的类,其中包含...
1.2 Spring的RMI支持:Spring通过`org.springframework.remoting.rmi.RmiServiceExporter`和`RmiProxyFactoryBean`简化了RMI的使用。`RmiServiceExporter`用于发布服务,而`RmiProxyFactoryBean`则用于创建RMI服务的...
而RMI(Remote Method Invocation,远程方法调用)是Java中用于分布式计算的技术,使得运行在不同JVM上的对象可以互相调用方法。本篇文章将深入探讨如何在Spring框架中配置和调用RMI的多个接口。 首先,我们需要...
然而,需要注意的是,虽然Spring RMI简化了远程调用,但在网络延迟、并发控制、安全性等方面仍需考虑。例如,使用SSL进行安全传输,或者通过负载均衡器来分发请求,提高系统的可用性和可扩展性。 总之,Spring RMI...
Spring RMI(Remote Method Invocation)...通过分析服务端和客户端的源码,我们可以深入理解如何在Spring框架下实现和使用RMI远程调用,这对于任何希望在分布式系统中利用Spring的开发者来说都是一份宝贵的参考资料。
在Spring框架中,远程方法调用(Remote Method Invocation, RMI)是一种使应用程序能够通过网络调用另一个JVM上的对象方法的技术。RMI是Java平台的一部分,它允许开发者创建分布式应用,使得对象可以像调用本地方法...
Spring RMI(Remote Method Invocation)是Java平台上的远程方法调用技术,结合Spring框架的特性,使得在分布式系统中调用远程服务变得更加便捷。在这个简单的例子中,我们将深入理解Spring RMI的工作原理以及如何...