码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2015-01-25 06:33:56      阅读:115      评论:0      收藏:0      [点我收藏+]

标签:

        在博客《RMI远程方法调用技术》中使用纯Java代码演示了RMI技术的使用,本篇博客将介绍如何在Spring中使用RMI技术。

        正如博客《RMI远程方法调用技术》提到的那样——RMI技术的应用通常包括在两个独立的应用程序中:RMI服务端应用程序和RMI客户端应用程序。本博客也从这两方面入手:
        RMI服务端应用程序:

        1、自定义远程接口

        代码如下:

package com.ghj.packageofrmi;

/**
 * 定义远程接口。
 * 
 * @author 高焕杰
 */
public interface IHelloWordService{

	/**
     * 获取信息
     * 
     * @author 高焕杰
     */
    String getMsg();
}


        2、自定义远程接口实现类

        代码如下:

package com.ghj.packageofrmi;

/**
 * 远程接口实现类。
 * 
 * @author 高焕杰
 */
public class HelloWordService implements IHelloWordService{

    /**
     * 获取信息
     * 
     * @author 高焕杰
     */
    public String getMsg(){
        return "Hello World!"; 
    }
}


        3、在xml文件中配置RMI服务端

        代码如下:

<?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:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
    http://www.springframework.org/schema/context 
    http://www.springframework.org/schema/context/spring-context-2.5.xsd">
 
 	<!-- RMI服务端 -->
    <!-- RMI服务端远程接口实现类 --> 
	<bean id="helloWordService" class="com.ghj.packageofrmi.HelloWordService" scope="prototype"/>
  	<bean class="org.springframework.remoting.rmi.RmiServiceExporter">
		<!-- 将远程接口实现类对象设置到RMI服务中 -->
		<property name="service" ref="helloWordService" />
		<!-- 设置RMI服务名,为RMI客户端依据此服务名获取远程接口实现类对象引用奠定基础 -->
		<property name="serviceName" value="helloWord" />
		<!-- 将远程接口设置为RMI服务接口 -->
		<property name="serviceInterface" value="com.ghj.packageofrmi.IHelloWordService" />
		<!-- 为RMI服务端远程对象注册表设置端口号-->
		<property name="registryPort" value="9090" />
		<!-- 其他属性可以查看org.springframework.remoting.rmi.RmiServiceExporter的类及其子类获取到-->
	</bean>
    
</beans> 


        4、启动RMI服务端

        代码如下:

package com.ghj.packageoftest;

import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 * 启动RMI服务端
 * 
 * @author 高焕杰
 */
public class StartRMIServer {

	public static void main(String[] args) {
        new ClassPathXmlApplicationContext("conf/spring/applicationContext.xml");
        System.out.println("RMI服务端启动!!!");
    }
}



        RMI客户端应用程序:

        1、自定义包含了RMI服务端自定义远程接口内的抽象方法的RMI客户端接口

        代码如下:

package com.ghj.packageofrmi;

/**
 * 自定义与RMI服务端自定义远程接口名称相同的接口
 * 
 * @author 高焕杰
 */
public interface IHelloWord{

    /**
     * 获取信息
     * 
     * @author 高焕杰
     */
    String getMsg();
}


        2、在xml文件中配置RMI服务端

        代码如下:

<?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:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
    http://www.springframework.org/schema/context 
    http://www.springframework.org/schema/context/spring-context-2.5.xsd">

    <!--RMI客户端-->
    <bean id="dataExchangeProxyService" class="org.springframework.remoting.rmi.RmiProxyFactoryBean"> 
        <property name="serviceUrl" value="rmi://localhost:9090/helloWord"/>
        <property name="serviceInterface" value="com.ghj.packageofrmi.IHelloWord"/>
        <!-- 当连接失败时是否刷新远程调用stub -->
        <property name="refreshStubOnConnectFailure" value="true"/>
    </bean>
</beans>


        3、启动RMI客户端

        代码如下:

package com.ghj.packageoftest;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.ghj.packageofrmi.IHelloWord;

/**
 * 启动RMI客户端
 * 
 * @author 高焕杰
 */
public class RMIClient {

	public static void main(String[] args){
		ApplicationContext ctx = new ClassPathXmlApplicationContext("conf/spring/applicationContext.xml");
		IHelloWord helloWord = (IHelloWord) ctx.getBean("dataExchangeProxyService");
		System.out.println(helloWord.getMsg());
	}
}

正在总结整理中......


        【0分下载示例源码


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

标签:

原文地址:http://blog.csdn.net/gaohuanjie/article/details/43083191

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!