在Spring環境下使用RMI
作者:raymond.chen
RMI是Java的一組擁護開發分布式應用程序的API。RMI使用Java語言接口定義了遠程對象,它集合了Java序列化和Java遠程方法協議(Java Remote Method Protocol)。
在Spring環境使用RMI時,可以省略以下幾點:
1、接口類不需要繼承Remote,方法不需要拋出RemoteException異常對象。
2、實現類不需要繼承UnicastRemoteObject。
3、RMI服務自動注冊。
下面通過具體的例子來說明其用法。
一、導出RMI服務
1、bean的配置
Xml代碼
- <beans>
- <bean id="syncServiceImpl" class="com.cjm.service.rmi.SyncServiceImpl" />
- <bean id="syncServiceProxy" class="com.cjm.service.rmi.SyncServiceRMIExporter">
- <property name="service">
- <ref bean="syncServiceImpl" />
- < span>property>
- <property name="serviceName">
- <value>hawkeyeService< span>value>
- < span>property>
- <property name="serviceInterface">
- <value>com.cjm.service.rmi.SyncService< span>value>
- < span>property>
- <property name="servicePort">
- <value>1099< span>value>
- < span>property>
- <property name="registryPort">
- <value>1099< span>value>
- < span>property>
- < span>bean>
- < span>beans>
2、類源碼
Java代碼
- public class SyncServiceRMIExporter extends RmiServiceExporter{
- public SyncServiceRMIExporter() {
- //通過系統屬性設置RMI的hostname
- System.setProperty("java.rmi.server.hostname", "localhost");
- }
- }
Java代碼
- //RMI服務接口類
- public interface SyncService{
- public boolean updateMonicaSiInfos(String oldInfo, String newInfo);
- }
Java代碼
- public class SyncServiceImpl implements SyncService {
- @Override
- public boolean updateMonicaSiInfos(String oldInfo, String newInfo) {
- oldInfo = StringUtils.trimToEmpty(oldInfo);
- newInfo = StringUtils.trimToEmpty(newInfo);
- if (StringUtils.isEmpty(newInfo)) {
- return false;
- }
- ......
- logger.warn("成功: oldInfo=" + oldInfo + ", newInfo=" + newInfo);
- return true;
- }
- }
二、調用RMI服務
1、bean的配置
Xml代碼
- <beans>
- <bean id="serviceImpl" class="RMIServiceImpl">
- <property name="syncService" ref="hawkeyeService"/>
- < span>bean>
- <bean id="hawkeyeService" class="org.springframework.remoting.rmi.RmiProxyFactoryBean">
- <property name="serviceUrl">
- <value>rmi://localhost:1099/hawkeyeService< span>value>
- < span>property>
- <property name="serviceInterface">
- <value>com.cjm.service.rmi.SyncService< span>value>
- < span>property>
- < span>bean>
- < span>beans>
2、類源碼
Java代碼
- public class RMIServiceImpl {
- private SyncService syncService;
- public SyncService getSyncService() {
- return syncService;
- }
- public void setSyncService(SyncService syncService) {
- this.syncService = syncService;
- }
- public void doAction(String oldValue, String newValue)throws Exception{
- boolean b = syncService.updateMonicaSiInfos(oldValue, newValue);
- if(b){
- System.out.println("RMI調用成功");
- }else{
- System.out.println("RMI調用失敗");
- }
- }
- }
責任編輯:金賀
來源:
JavaEye博客