`

Spring 和 RMI 集成

阅读更多
spring rmi整合:
 
   spring可以将任意POJO对象设置为RMI对象,供外部程序访问。通过spring的AOP动态代理可以添加RMI的访问规则。spring的RMI导出器仅仅只是暴露了POJO对外部的访问,但其安全管理,权限控制等还需要自己处理,
    但spring还是提供了访问点,可以通过访问点,应用自己的安全策略。 具体配置如下:
   
    服务端:
接口类:
package com.rmi;

public interface UserService {

public abstract void insertUser(String username);

public abstract void delUser(String username);

}

具体实现类:
package com.rmi;

public class UserServiceImpl implements UserService {
/* (non-Javadoc)
* @see com.rmi.UserService#insertUser(java.lang.String)
*/
public void insertUser(String username) {
System.out.println("UserService.insertUser() inser user sucess..."
+ username);
}

/* (non-Javadoc)
* @see com.rmi.UserService#delUser(java.lang.String)
*/
public void delUser(String username) {
System.out.println("UserService.delUser() del username success......"
+ username);
}
}


applicatonContext-rmi.xml配置如下:

 
  <?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
           http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
           http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">
<bean id="userservice" class="com.rmi.UserServiceImpl" />  <!-- 具体需要导出的RMI对象,其对象是一个POJO对象 -->
<bean id="userExporter" class="org.springframework.remoting.rmi.RmiServiceExporter"> <!--  RmiServiceExporter 采用spring的AOP动态代理技术将对rmi远程对象的调用转化成对目标对象的调用 -->
  <property name="serviceName" value="UserService"></property> <!-- 注册的服务名 -->
  <property name="service"  ref="userservice"/><!-- 目标实现对象 -->
  <property name="serviceInterface" value="com.rmi.UserService"></property><!-- 目标对象的接口类 -->
  <property name="registryPort" value="1599" /><!-- 注册的端口,可以通过该端口获取到目标对象 -->
  <property name="servicePort" value="458" /><!-- 用于进行通信的端口 -->
</bean>
</beans>
通过以上配置,就可以通过 rmi://localhost:1599/UserService访问到该rmi服务。

客户端配置:
1.客户端可以通过普通RMI访问策略访问有spring管理的服务器端。 
2.客户端也可以通过spring的RmiProxyFactoryBean访问。
下面介绍第二种:

applicatonContext-rmi.xml配置如下:
 
  <?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
           http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
           http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">

<bean id="RmiUserService" class="org.springframework.remoting.rmi.RmiProxyFactoryBea">
  <property name="serviceUrl" value="rmi://localhost:1599/UserService" />
  <proeprty name="serviceInterface" value="com.rmi.UseService" />
</bean>
</beans>

通过以上配置就可以直接从springIOC容器中拿到远程RMI对象,此RmiUserService对象就可以看出是服务器端的UserServiceImpl对象。

通信逻辑:
 
   RmiServiceExport 通过Spring的AOP将POJO暴露成RMI对象。客户端通过RmiProxyFactoryBean访问Rmi对象。
  
 





分享到:
评论
2 楼 wujie2008 2009-11-23  
to hilshils:
  具体支不支持需要查阅官方文档,我也不清楚。呵呵。
1 楼 hillshills 2009-11-17  
你好!

请问:如果服务端断开了,Sping能否支持客户端自动连接,如何配置?

相关推荐

    spring rmi 集成

    spring rmi 客户端 服务器 调用

    spring与rmi 整合实例 源码详解

    spring 与rmi 的整合 1.首先编写接口 interface : 这里的接口要继承Remote, 它是一个标识接口 2.编写实现类 3.编写main方法用于启动 service 4 配置spring文件 编写客户端测试类

    Spring RMI

    Spring集成rmi,实现远程服务,使用RMI集成实例

    Spring 实现远程访问详解——rmi

    1. 远程调用RMI(Remote Method Invocation): 通过使用 RmiProxyFactoryBean 和 RmiServiceExporter,并且,Spring支持两个传统的RMI(使用 java.rmi.Remote接口和java.rmi.RemoteException)和通过RMI调用器实现的...

    spring中使用RMI

    spring集成的RMI的使用 简单使用

    实现JMX的spring支持,拓展了RMI远程接口。

    JMX集成到spring中,并提供了一个rmi远程连接的配置文件

    spring 集成 hessian例子

    Hessian是一个轻量级的remoting onhttp工具,使用简单的方法提供了RMI的功能。 相比WebService,Hessian更简单、快捷。采用的是二进制RPC协议,因为采用的是二进制协议,所以它很适合于发送二进制数据。参考文档地址...

    spring jar 包详解

    (11) spring-web.jar 这个jar文件包含Web应用开发时,用到Spring框架时所需的核心类,包括自动载入WebApplicationContext特性的类、 Struts与JSF集成类、文件上传的支持类、Filter类和大量工具辅助类。 (12) ...

    Spring 实现远程访问详解——jms和activemq

    前几章我们分别利用spring rmi、httpinvoker、httpclient、webservice技术实现不同服务器间的远程访问。本章我将通过spring jms和activemq实现单Web项目服务器间异步访问和多Web项目服务器间异步访问。 一. 简介 1. ...

    spring3.2中文文档

    spring3.2框架是一个轻量级的解决方案和一个潜在的 一站式为构建企业级应用程序。 然而, spring是模块化的,允许你只使用那些你需要的部分, 无需引入其余。 您可以使用IoC容器, Struts在上,但是你也可以只使用 ...

    Spring2.52 开发手册

    Spring为编写企业应用程序提供了轻量的解决方案,同时仍然支持使用声明式事务、 用RMI或web service远程调用、以及使用多种方式来将数据持久化到数据库。Spring提供了全功能的 MVC framework, 以及透明集成AOP到你...

    Spring 2.5 jar 所有开发包及完整文档及项目开发实例

     这个jar文件包含Web应用开发时,用到Spring框架时所需的核心类,包括自动载入WebApplicationContext特性的类、Struts与JSF集成类、文件上传的支持类、Filter类和大量工具辅助类。 (12) spring-webmvc.jar  这个...

    最新最全的spring开发包

     这个jar文件包含Web应用开发时,用到Spring框架时所需的核心类,包括自动载入WebApplicationContext特性的类、Struts与JSF集成类、文件上传的支持类、Filter类和大量工具辅助类。 (12) spring-webmvc.jar 这个...

    spring-framework-5-0-0-m3-zh_cn

    用了 Spring ),但你也可以只使用 Hibernate 集成代码或 JDBC 抽象层。 Spring 框架支持声 明式事务管理,通过RMI或Web服务远程访问你的逻辑,以及用于持久存储数据的各种选项。 它提供了一个全功能的 MVC 框架,并...

    Spring-Reference_zh_CN(Spring中文参考手册)

    6.1.2. Spring AOP的功能和目标 6.1.3. Spring的AOP代理 6.2. @AspectJ支持 6.2.1. 启用@AspectJ支持 6.2.2. 声明一个切面 6.2.3. 声明一个切入点(pointcut) 6.2.3.1. 切入点指定者的支持 6.2.3.2. 合并切入点...

    spring 帮助文档(chm格式)

    Spring还提供了一个MVC应用框架,可以透明的把AOP集成到你的软件中的途径和一个优秀的异常处理体系, 包括自动从Spring特有的异常体系中映射。 Spring有潜力成为所有企业应用的一站式(即在一个服务点可以完成所有...

    spring-framework-4-开发手册.pdf

    Spring Framework 是一个轻...Spring Framework 支 持声明式事务管理,通过 RMI 或 Web 服务远程访问你的逻辑,并支持多种选择持久化你的 数据。它提供了一个全功能的 MVC 框架,使您能够将 AOP 透明地集成到您的软件。

    Spring2中文参考手册

    在此基础上,Spring还提供了包括声明式事务管理,RMI或Web Services远程访问业务逻辑,以及可以多种方法进行的持久化数据库地解决方案。另外,Spring还有一个全功能的 MVC框架,并能透明的把 AOP 集成到你的软件中去...

    Spring 2.0 开发参考手册

    6.1.2. Spring AOP的功能和目标 6.1.3. Spring的AOP代理 6.2. @AspectJ支持 6.2.1. 启用@AspectJ支持 6.2.2. 声明一个切面 6.2.3. 声明一个切入点(pointcut) 6.2.4. 声明通知 6.2.5. 引入(Introductions)...

    Spring攻略(第二版 中文高清版).part1

    10.6 使用BlazeDS和Spring消费面向消息的服务 421 10.6.1 问题 421 10.6.2 解决方案 422 10.6.3 工作原理 422 10.7 将依赖注入带给你的ActionScript客户 434 10.7.1 问题 434 10.7.2 解决方案 434 ...

Global site tag (gtag.js) - Google Analytics