[size=medium][color=red]RMI[/color][/size]
服务端的编写
定义一个接口
IRmiService.java
接口实现RmiServiceImpl.java
如果创建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
客户端类 RMIClient.java
[size=medium][color=red]Hessian和Burlap[/color][/size]
Hessian和RMI那样,使用二进制消息来建立客户端和服务端之间的交流.但与其他二进制远程技术(RMI)不容的是,它的二进制消息可以移植到其他非java的语言中,包括PHP,Python,C++和C#.
Burlap是一种基于XML的远程技术,可以移植到任何可以解析XML的语言中,可读性强
Hessian和Burlap都是轻量级的,可以使用在内存限制的环境下
服务端的编写
定义一个接口
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都是轻量级的,可以使用在内存限制的环境下