RMI spring

1.业务接口类及其实现

/**
 * 定义一个远程接口
 */
public interface HelloService
{
    /**
     * 需要远程调用的方法
     * @param msg
     * @return
     */
    String sayHello(String msg);
}
public class HelloServiceImpl implements HelloService
{
    public String sayHello(String msg)
    {
        return "server received the msg : " + msg;
    }
}

2.RmiServiceExporter(服务端)

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

    <!--RMI的服务实现类-->
    <bean id="helloService" class="com.rmi.spring.HelloServiceImpl" />

    <bean id="serviceExporter" class="org.springframework.remoting.rmi.RmiServiceExporter">
        <!--配置RMI的服务实现类-->
        <property name="service" ref="helloService" />
        <!--配置RMI的服务接口-->
        <property name="serviceInterface" value="com.rmi.spring.HelloService"/>
        <!--暴露的对外服务名-->
        <property name="serviceName" value="hello" />
        <!--服务本地注册端口-->
        <property name="registryPort" value="9123" />
        <!--服务对外暴露端口-->
        <property name="servicePort" value="9123" />
        <!--注册服务-->
        <property name="alwaysCreateRegistry" value="true" />
    </bean>

</beans>

3.RmiProxyFactoryBean(客户端)

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

    <bean id="helloService" class="org.springframework.remoting.rmi.RmiProxyFactoryBean">
        <property name="serviceUrl" value="rmi://localhost:9123/hello" />
        <property name="serviceInterface" value="com.rmi.spring.HelloService"/>
    </bean>

</beans>

4.测试

public class HelloServer
{
    public static void main(String[] args)
    {
        new ClassPathXmlApplicationContext("spring-rmi-server.xml");
        System.err.println("rmi 服务启动!");
    }
}
public class HelloClient
{
    public static void main(String[] args)
    {
        ApplicationContext applicationContext 
        = new ClassPathXmlApplicationContext("spring-rmi-client.xml");

        HelloService helloService 
        = (HelloService)applicationContext.getBean("helloService");

        System.err.println(helloService.sayHello("测试测试!"));
    }
}

注:Registry服务的注册问题,有时会出现服务启动报错.

时间: 2024-12-15 17:19:29

RMI spring的相关文章

Spring RMI (Spring 远程方法调用)

所需jar包...?    不纠结,一股脑儿全导! 先放结构图如下,客户端和服务端都在一个项目中.也可以把服务端的xxx导成jar包放到新的客户端项目中去. 1. 服务端 2.

JAVA RMI技术及其spring封装的使用

java RMI即java远程服务调用,用于各个子系统之间的服务调用.最近应用到了JAVA RMI技术,所以总结一下RMI的使用,另外EJB的实现也是以Java RMI为基础核心的.RMI远程方法调用,可以跨机器通过网络调用,不过Java RMI只支持两边都是Java程序,如果要实现完全两边异构,那么就要用到传说中的Web Service了.为了看好效果,都要建立两个或两个以上工程,当然,如果你有两个机器并通过局域网相连更好,如果能同有互联网的条件就更好了,以下是同一机器不同工程的实验. Jav

一文归纳总结分布式架构的那些事!

双十一购物狂欢节已经过去了,作为程序员的你,除了在关心自己的快递的运送情况之外,最关心的是不是双十一架构技术是如何承受亿级用户流量的冲击,又是如何在分布式架构中实现单点登陆,形成支持高并发,高可用的分布式架构技术呢?下面小编就来帮你总结如何从0到1学习分布式架构技术,如何实现从小白到架构师的蜕变!! 一.初识分布式架构: 1.初识分布式架构及意义 2.如何把应用从单机架构扩展到分布式 3.大型分布式架构的演进过程 4.构建分布式架构的重要因素 (1)CDN加速静态访问 (2)分布式储存 (3)分

Spring 配置RMI远程调用

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

Spring 集成 RMI

Maven <dependency> <groupId>org.springframework</groupId> <artifactId>spring-remoting</artifactId> </dependency> 服务端 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.spri

Rmi在Spring中的使用之RmiProxyFactoryBean

今天面试被问及到一个只是简单听说过,但是没有去用过的东西,用了简短的一会时间去看了下Spring的rmi文档,大致实现方式有其下几种 1.org.springframework.remoting.rmi.RmiProxyFactoryBean 其使用的是rmi协议实现 实现过程,首先是服务端 定义一个导出类 public interface AccountService {     String getUsername(); } public class AccountServiceImpl i

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

在博客<RMI远程方法调用技术>中使用纯Java代码演示了RMI技术的使用,本篇博客将介绍如何在Spring中使用RMI技术. 正如博客<RMI远程方法调用技术>提到的那样--RMI技术的应用通常包括在两个独立的应用程序中:RMI服务端应用程序和RMI客户端应用程序.本博客也从这两方面入手:        RMI服务端应用程序: 1.自定义远程接口 代码如下: package com.ghj.packageofrmi; /** * 定义远程接口. * * @author 高焕杰 *

Spring+Rmi中的客户端自动重连配置

<?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="xxx" class="org.s

使用Spring RMI调用远程方法

Spring有多种调用远程的方式,今天学习了一下远程方法调用(RMI). RMI需要服务端和客户端 我们先从服务器开始 我的代码结构 package rmi; public interface ServerRmiI { public String sayHi(String name); } package rmi; public class ServerRmiImpl implements ServerRmiI{ public String sayHi(String name) { return