- 浏览: 81476 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
撼地神牛:
你这服务 ,还是多线程的啊! 真晕!
用java.nio.*进行网络编程 -
f_zongjian:
多行注释符:/*注释*/
mysql注释符 -
lixjluck:
这个不是原理和使用吧,误导。。。
Java NIO原理和使用 -
sunjilu05:
有没有办法在两台内网的机器之间通过第三方服务器的牵引,建立一个 ...
Java Socket编程 -
xombat:
关键是如果发生这样一种情况,问题就会很复杂:相邻两点之间是多条 ...
最短路径算法
转载:http://blogger.org.cn/blog/more.asp?name=lhwork&id=18181
RMI是从JDK 1.1开始就出现的API功能,它让客户端在使用远程对象所提供的服务时,就如何使用本地对象一样,然而RMI在使用时必须一连串繁复的手续,像是服务介 面在定义时必须继承java.rmi.Remote接口、服务Server在实作时必须继承java.rmi.UnicastRemoteObject类 别、必须使用rmic产生stub与skeleton等等。透过org.springframework.remoting.rmi.RmiServiceExporter,Spring 简化了这些手续,来实际看看例子,了解Spring在RMI上的使用与简化,首先定义服务对象的接口:
- <o:p> </o:p>ISomeService.java
package onlyfun.caterpillar;
public interface ISomeService {
public String doSomeService(String some);
public void doOtherService(int other);
}
public interface ISomeService {
public String doSomeService(String some);
public void doOtherService(int other);
}
可以看到服务对象的接口不用继承java.rmi.Remote界面,而在实作时也不用继承java.rmi.UnicastRemoteObject,例如:<o:p></o:p>
- SomeServiceImpl.java
package onlyfun.caterpillar;
public class SomeServiceImpl implements ISomeService {
public String doSomeService(String some) {
return some + " is processed";
}
public void doOtherService(int other) {
// bla.. bla
}
}
public class SomeServiceImpl implements ISomeService {
public String doSomeService(String some) {
return some + " is processed";
}
public void doOtherService(int other) {
// bla.. bla
}
}
接下来在伺服端,您只要在Bean定义档中定义,让Spring管理、生成Bean,即可注册、启动RMI服务,例如:<o:p></o:p>
- rmi-server.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="someService" class="onlyfun.caterpillar.SomeServiceImpl"/>
<bean id="serviceExporter"
class="org.springframework.remoting.rmi.RmiServiceExporter">
<property name="service">
<ref bean="someService"/>
</property>
<property name="serviceName">
<value>SomeService</value>
</property>
<property name="serviceInterface">
<value>onlyfun.caterpillar.ISomeService</value>
</property>
</bean>
</beans>
<!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="someService" class="onlyfun.caterpillar.SomeServiceImpl"/>
<bean id="serviceExporter"
class="org.springframework.remoting.rmi.RmiServiceExporter">
<property name="service">
<ref bean="someService"/>
</property>
<property name="serviceName">
<value>SomeService</value>
</property>
<property name="serviceInterface">
<value>onlyfun.caterpillar.ISomeService</value>
</property>
</bean>
</beans>
很简单,只要告诉org.springframework.remoting.rmi.RmiServiceExporter服务对象、名称与要代理的接口,之后Spring读取完定义文件并生成Bean实例后,RMI服务就会启动。
接下来看看客户端要如何实作,只要透过org.springframework.remoting.rmi.RmiProxyFactoryBean,并告知服务的URL、代理的接口即可,就好像在使用本地端管理的服务一样,例如Bean定义档可以如下撰写:
- rmi-client.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="someServiceProxy"
class="org.springframework.remoting.rmi.RmiProxyFactoryBean">
<property name="serviceUrl">
<value>rmi://localhost/SomeService</value>
</property>
<property name="serviceInterface">
<value>onlyfun.caterpillar.ISomeService</value>
</property>
</bean>
</beans>
以下是个简单的客户端呼叫远程服务的例子:<o:p></o:p>
....
ApplicationContext context =
new FileSystemXmlApplicationContext("rmi-client.xml");
ISomeService service = (ISomeService) context.getBean("someServiceProxy");
String result = service.doSomeService("Some request");
System.out.println(result);
....
ApplicationContext context =
new FileSystemXmlApplicationContext("rmi-client.xml");
ISomeService service = (ISomeService) context.getBean("someServiceProxy");
String result = service.doSomeService("Some request");
System.out.println(result);
....
发表评论
-
你真的理解了继承和多态吗?
2008-08-12 09:52 921http://www.blogjava.net/sean/ar ... -
浅析Java语言中的内部类
2008-05-23 09:39 675文章1: http://www.enet.com.cn/art ... -
Java同步机制浅谈
2008-05-09 23:27 672http://dev.csdn.net/article/71/ ... -
日历类的小例子
2008-04-16 23:10 817Calendar cal = Calendar.getInst ... -
Java虚拟机参数配置说明
2008-03-17 17:09 1382转载:http://www.cnblogs.com/huqin ... -
JAVA教程:解析Java的多线程机制
2008-02-29 09:15 701转载:http://tech.163.com/05/1020/ ... -
Java字符编码转换过程说明
2008-01-08 18:29 822转载 http://blog.csdn.net/heh ... -
浅析Java多线程编程中的高级技术
2007-12-26 09:19 705转载:http://www.1-100.org/other/1 ... -
Java对象的强、软、弱和虚引用
2007-09-10 23:22 716转载:http://java.chinaitlab.com/o ... -
Java异常学习心得
2007-09-07 10:52 947转载:http://columnist.china ... -
Hibernate存取Clob对象
2007-09-05 11:04 843转载:http://www.amuhouse.com/link ... -
Mbean的管理接口
2007-08-30 16:29 1236转载:http://www.51chm.com/spring/ ... -
JDK1.5新特性介绍
2007-08-30 15:56 823转载:http://www.yesky.com/263/185 ... -
实现非阻塞套接字的一种简单方法
2007-08-29 10:09 1581转载:http://www.ibm.com/dev ... -
Java NIO原理和使用
2007-08-28 15:05 2943转载:http://www.jdon.com/co ... -
一篇不错的介绍Java Socket编程的文章
2007-08-28 14:31 966转载:http://java.ccidnet.co ... -
Java Socket编程 Socket传输模式
2007-08-28 14:06 957转载:http://www.bitscn.com/java/n ... -
Java Socket编程
2007-08-28 14:04 1994转载:http://www.bitscn.com/ ... -
用java.nio.*进行网络编程
2007-08-27 11:36 1435转载:http://java.chinaitlab ... -
AOP是什么?
2007-08-23 23:19 808转载:http://www.jdon.com/AOPdesig ...
相关推荐
1. 事务管理:Spring RMI支持声明式事务管理,只需在服务方法上添加`@Transactional`注解,即可实现事务的自动控制。 2. AOP支持:通过Spring AOP,可以在远程调用前后添加自定义逻辑,如日志记录、性能监控等。 3...
2. **Spring对RMI的支持**: - **`<bean>`标签中的`rmi:`命名空间**:Spring配置文件中可以使用`<rmi:registry>`来定义RMI注册表,`<rmi:export>`用于导出远程服务。 - **`RmiServiceExporter`**:Spring提供的...
Spring框架作为Java企业级应用开发的首选,提供了丰富的功能,包括对远程方法调用(Remote Method Invocation,RMI)的支持。RMI是Java平台上的一个核心特性,允许在分布式环境中进行对象间的通信。在Spring中集成...
通过Spring的RMI支持,我们可以方便地定义服务接口和服务实现,然后通过配置文件或注解将它们暴露为RMI服务。这样做不仅提高了代码的可测试性,也使得服务的部署和管理变得更加灵活。 在原生的Spring RMI实现中,...
在实际应用中,Spring RMI提供了许多优势,如自动异常处理、透明的事务支持、线程管理等。同时,它还能与其他Spring特性如AOP结合,实现如日志、性能监控等功能。 然而,需要注意的是,虽然Spring RMI简化了远程...
在Spring框架的支持下,我们可以更方便地将服务发布为RMI服务,使得其他应用程序可以跨JVM(Java Virtual Machine)访问这些服务。下面将详细阐述Spring RMI服务的实现原理、配置过程以及如何自动化发布服务。 首先...
Spring RMI 是 Spring 框架中用于支持远程方法调用(Remote Method Invocation)的功能模块。通过 Spring RMI, 开发者能够更加简便地搭建和管理远程服务。传统上,使用 Java 的 RMI 需要进行复杂的配置和编码工作,...
1.2 Spring的RMI支持:Spring通过`org.springframework.remoting.rmi.RmiServiceExporter`和`RmiProxyFactoryBean`简化了RMI的使用。`RmiServiceExporter`用于发布服务,而`RmiProxyFactoryBean`则用于创建RMI服务的...
Spring框架提供了对RMI的支持,使得在Spring应用中集成RMI变得更加简单和灵活。本篇将深入探讨Spring如何与RMI结合,以及客户端和服务器端的实现细节。 ### 一、Spring RMI 服务器端集成 1. **定义远程接口**:...
具体到这个压缩包“springRMI”,我们可以推测它可能包含了以下几个部分: 1. **配置文件**:如`applicationContext.xml`,其中定义了Spring容器中的Bean,可能包括RMI服务的接口和实现。 2. **远程接口**:`.java`...
在Java项目中,Spring RMI(Remote Method Invocation)是一种整合远程方法调用功能与Spring框架的方式,它使得在分布式环境中管理对象和服务变得更加便捷。本文将深入探讨Spring RMI涉及的包,以及如何在项目中使用...
同时,RMI也可以与Spring的其他远程服务支持,如Hessian、 Burlap等相结合,实现不同类型的远程调用。 总的来说,Spring RMI为开发者提供了一种简洁且强大的方式来实现分布式系统的组件交互,降低了远程服务开发的...
6. **性能与安全性**:Spring RMI提供了线程池支持以优化并发性能。同时,你可以通过SSL或认证来增强安全性,限制对远程服务的访问。 7. **优点与适用场景**:Spring RMI简化了分布式系统的开发,降低了远程调用的...
Spring RMI(Remote Method Invocation)远程接口调用是Spring框架提供的一个特性,它允许你在分布式环境中调用对象的方法,使得应用程序能够跨越网络边界操作远程对象。这个技术在大型企业级应用中尤其有用,因为它...
在IT行业中,Spring框架是Java开发中的一个核心组件,它为构建可维护、可扩展的Web应用程序提供了强大的支持。RMI(Remote Method Invocation)则是Java平台上的远程对象调用技术,允许程序在不同的Java虚拟机之间...
在Spring 3.1版本中,通常会使用Spring的RMI支持,这可能涉及到的包包括Spring的核心库、AOP库、beans库以及RMI相关的库。确保这些库都在项目的`lib`目录下,以避免运行时的依赖问题。整合Spring和RMI可以让你更专注...
Spring框架提供了对RMI的支持,简化了RMI的配置和使用,使得开发人员可以更加便捷地构建分布式服务。 首先,我们来看“SpringRMIClient”和“SpringRMIServer”这两个文件名,它们分别代表了RMI应用中的客户端和...