Spring配置RMI

一、概述


传统的创建RMI服务,会涉及如下几个步骤:

1、编写远程服务接口,该接口必须继承 java.rmi.Remote
接口,方法必须抛出 java.rmi.RemoteException 异常;

2、编写远程接口实现类,该实现类必须继承
java.rmi.server.UnicastRemoteObject 类;

3、运行RMI编译器(rmic),创建客户端 stub 类和服务端
skeleton 类;

4、启动一个RMI注册表,以便驻留这些服务;

5、在RMI注册表中注册服务;

二、在Spring中配置RMI服务

1、服务接口


1 package com.cnblogs.javalouvre.service;
2
3 public interface GreetService {
4
5 String sayHello(String name);
6
7 }

2、服务实现类


 1 package com.cnblogs.javalouvre.service;
2
3 public class GreetServiceImpl implements GreetService {
4
5 @Override
6 public String sayHello(String name) {
7 return "Hello " + name;
8 }
9
10 }

3、Spring文件配置


 1 <?xml version="1.0" encoding="UTF-8"?>
2 <beans xmlns="http://www.springframework.org/schema/beans"
3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4 xsi:schemaLocation="http://www.springframework.org/schema/beans
5 http://www.springframework.org/schema/beans/spring-beans-4.0.xsd">
6
7 <bean id="greetService" class="com.cnblogs.javalouvre.service.GreetServiceImpl" />
8
9 <bean class="org.springframework.remoting.rmi.RmiServiceExporter">
10 <property name="serviceName" value="GreetService" />
11 <property name="service" ref="greetService" />
12 <property name="serviceInterface" value="com.cnblogs.javalouvre.service.GreetService" />
13 <property name="registryPort" value="1199"/>
14 </bean>
15
16 </beans>

4、启动服务


 1 package com.cnblogs.javalouvre.server;
2
3 import org.springframework.context.support.ClassPathXmlApplicationContext;
4
5 public class Server {
6
7 public static void main(String[] args) {
8 new ClassPathXmlApplicationContext("applicationContext.xml");
9 }
10
11 }

说明:如果使用传统的RMI来发布服务,在服务实现类中所有方法都得抛出
java.rmi.RemoteException 异常。但如果使用Spring的
org.springframework.remoting.rmi.RmiServiceExporter 将该类转化为 RMI 服务,那么实现将简单的多。
RmiServiceExporter 可以将任何一个 Spring 管理的Bean发布为一个 RMI
服务,默认情况下,RmiServiceExporter会尝试将一个RMI注册表绑定到本机的1099端口。如果在这个端口没有发现RMI注册表,RmiServiceExporter将重新启动一个注册表。如果希望将某个
RMI 注册表绑定到不同的端口或主机,可以通过 registryPort和registryHost属性指定。

三、装配RMI服务

1、接口同上

2、配置Spring


 1 <?xml version="1.0" encoding="UTF-8"?>
2 <beans xmlns="http://www.springframework.org/schema/beans"
3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4 xsi:schemaLocation="http://www.springframework.org/schema/beans
5 http://www.springframework.org/schema/beans/spring-beans-4.0.xsd">
6
7 <bean id="greetService" class="org.springframework.remoting.rmi.RmiProxyFactoryBean">
8 <property name="serviceUrl" value="rmi://10.108.1.138:1199/GreetService" />
9 <property name="serviceInterface" value="com.cnblogs.javalouvre.service.GreetService" />
10 </bean>
11
12 </beans>

3、客户端调用


 1 package com.cnblogs.javalouvre.client;
2
3 import org.springframework.context.ApplicationContext;
4 import org.springframework.context.support.ClassPathXmlApplicationContext;
5
6 import com.cnblogs.javalouvre.service.GreetService;
7
8 public class Client {
9
10 public static void main(String[] args) {
11 ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
12 GreetService service = context.getBean("greetService", GreetService.class);
13 System.out.println(service.sayHello("Jobs"));
14 }
15
16 }

说明:Spring的
org.springframework.remoting.rmi.RmiProxyFactoryBean 是一个工厂Bean,
该Bean可以为RMI服务创建代理。

时间: 2024-10-12 21:43:27

Spring配置RMI的相关文章

Spring 配置RMI远程调用

项目中遇到了跨系统调用,当初想的是用webservice或者是hessian.但是这个接口用到的并不多,而且是一个非常简单的方法.所有便想到了RMI.在spring中 实现RMI非常简单. 暴露服务: 引用服务: 在spring中 ,spring已经集成了rmi服务,无需再导入任何jar包.非常方便,简单.

spring整合RMI - Java远程方法调用

一. 开篇语 在上一篇RMI - Java远程方法调用博文中使用的是JDK原生类进行远程方法调用, 本篇文章使用spring提供的API对RMI进行整合, 希望能给您带来帮助. 二. 核心API 1. 客户端: 客户端的核心是RmiProxyFactoryBean, 它包含两个属性serviceUrl(远程调用地址), serviceInterface(远程调用接口) 2. 服务端: RmiServiceExporter把spring管理的Bean输出成一个RMI服务, 通过把Bean包装在一个

Java之——Spring与RMI集成实现远程访问(插曲)

    转载请注明出处:http://blog.csdn.net/l1028386804/article/details/45972095 使用Spring对RMI的支持,可以非常容易地构建你的分布式应用.在服务端,可以通过Spring的org.springframework.remoting.rmi.RmiServiceExporter可以暴露你的服务:在客户端,通过org.springframework.remoting.rmi.RmiProxyFactoryBean可以使用服务端暴露的服务

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

RMI 相关知识 RMI全称是Remote Method Invocation-远程方法调用,Java RMI在JDK1.1中实现的,其威力就体现在它强大的开发分布式网络应用的能力上,是纯Java的网络分布式应用系统的核心解决方案之一.其实它可以被看作是RPC的Java版本.但是传统RPC并不能很好地应用于分布式对象系统.而Java RMI 则支持存储于不同地址空间的程序级对象之间彼此进行通信,实现远程对象之间的无缝远程调用. RMI目前使用Java远程消息交换协议JRMP(Java Remot

spring配置hibernate的sessionFactory的几种方法

分类: JAVA Spring Hibernate 2013-01-27 20:47  1851人阅读  评论(0)  收藏  举报 spring配置hibernate的sessionFactory 之前用spring2+hibernate3+struts2开发了一个彩信发布系统,由于第一次使用此架构,造成applicationContext.xml中的配置非常冗长,而且经常因为更改一个小配置项(例:数据库ip.用户名.密码等)将此文件作修改,这及不利于项目维护,万一粗心造成其他地方变动,会对本

.嵌入式jetty启动spring(java配置方式),junit测试用.标准spring 配置(java config) 嵌入式jetty9启动

package com.doctor.embeddedjetty; import java.util.concurrent.TimeUnit; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.servlet.ServletContextHandler; import org.eclipse.jetty.servlet.ServletHolder; import org.springframework.web.con

spring 配置资源路径时候,classpath:/,classpath:,不带前缀的区别

/** * spring 配置资源路径时候,classpath:/,classpath:,不带前缀的区别, * 其实没区别,spring 规定 "classpath:" pseudo-URL,伪url路径,在处理这种路径前缀 * 时候,会把这个伪url去掉. * @author doctor * * @time 2014年12月2日 下午6:28:12 */ public class DefaultResourceLoaderPractice { @Test public void t

spring配置,spring中的bean 的id不能相同

lib下加入包 spring.jar commons-logging.jar src下添加 applicationContext.xml 1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLS

spring 配置属性细节

苹果的WWDC ,除了发布了os x 10.10 和IOS8 外,还推出了Swift.详细点击这里 代码总体风格有点像Java,也有点像javascript. 下面给出一些代码段(来自苹果官方手册): println("Hello, world") "var myVariable = 42 myVariable = 50 let myConstant = 42" 摘录来自: Apple Inc. "The Swift Programming Languag