Spring远程服务

[size=medium][color=red]RMI[/color][/size]
服务端的编写
定义一个接口
IRmiService.java
package com.myspring.rmi;

/**
* @author kaili.zhukl
* @2009-10-14
*/
public interface IRmiService {
public String hello(String name);
}


接口实现RmiServiceImpl.java
package com.myspring.rmi;

/**
* @author kaili.zhukl
* @2009-10-14
*/
public class RmiServiceImpl implements IRmiService {

/* (non-Javadoc)
* @see com.myspring.rmi.IRmiService#hello(java.lang.String)
*/
public String hello(String name) {
// TODO Auto-generated method stub
return "hello" + name;
}

}

如果创建rmi服务没有使用spring,就需要涉及以下步骤:
[list]
[1]编写服务实现类,类中的方法能够抛出java.rmi.RemoteExecption
[2]创建服务接口,以便扩展java.rmi.Remote
[3]运行RMI编译器(rmic),创建客户端stub类和服务器端skeleton类
[4]启动一个RMI注册,以便驻留这些服务.
[5]在RMI注册表中注册服务
[/list]为了避免如此繁重的步骤和可能出现的异常,我们使用spring的RmiServiceExporter,把Spring管理的Bean输出成一个RMI服务
配置文件spring-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: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="rmiService" class="com.myspring.rmi.RmiServiceImpl"/>

<bean id="serviceExporter" class="org.springframework.remoting.rmi.RmiServiceExporter">
<property name="service">
<ref bean="rmiService"/>
</property>
<!-- 定义服务名 -->
<property name="serviceName">
<value>rmi</value>
</property>
<!-- 定义服务实现接口-->
<property name="serviceInterface">
<value>com.myspring.rmi.IRmiService</value>
</property>
<!-- 定义服务端口 -->
<property name="registryPort">
<value>8888</value>
</property>
</bean>

<bean id="serviceClient"
class="org.springframework.remoting.rmi.RmiProxyFactoryBean">

<property name="serviceInterface">
<value>com.myspring.rmi.IRmiService</value>
</property>
<!-- serviceUrl以rmi开头,定义服务器地址与端口和服务名 -->
<property name="serviceUrl">
<value>rmi://localhost:8888/rmi</value>
</property>
</bean>

</beans>

客户端类 RMIClient.java
package com.myspring.rmi;

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

public class RMIClient {
public static void main(String[] args) {
ApplicationContext ac = new ClassPathXmlApplicationContext("com/myspring/rmi/spring-rmi.xml");
IRmiService rmiService = (IRmiService) ac.getBean("serviceClient");
System.out.println(rmiService.hello("dd"));
}
}

[size=medium][color=red]Hessian和Burlap[/color][/size]
Hessian和RMI那样,使用二进制消息来建立客户端和服务端之间的交流.但与其他二进制远程技术(RMI)不容的是,它的二进制消息可以移植到其他非java的语言中,包括PHP,Python,C++和C#.
Burlap是一种基于XML的远程技术,可以移植到任何可以解析XML的语言中,可读性强
Hessian和Burlap都是轻量级的,可以使用在内存限制的环境下
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值