spring中实现rmi的一个例子及说明
2009-03-06 14:29
330 查看
rmi是java体系中实现分布式计算的重要手段.spring也提供了rmi的远程服务调用,本文主要讨论如何用spring的IOC实现rmi的远程服务调用
首先定义需要使用的域对象(Account), 这是由远端计算以后产生Account的对象,并将该对象传递给客户端:
package rmi;
import java.io.Serializable;
public class Account implements Serializable{
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
定义远程提供的模拟的服务insertAccount, getAccounts
定义域服务
实现远程的服务服务(通常情况下需要访问数据库而构造出域对象)
定义客户端:
客户端是一个使用AccountService管理账户的简单对象
实现客户端
配置bean之间的关系
配置文件:rmi.xml
首先定义需要使用的域对象(Account), 这是由远端计算以后产生Account的对象,并将该对象传递给客户端:
package rmi;
import java.io.Serializable;
public class Account implements Serializable{
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
定义远程提供的模拟的服务insertAccount, getAccounts
定义域服务
package rmi; import java.util.*; public interface AccountService { public void insertAccount(Account account); public List getAccounts(String name); }
实现远程的服务服务(通常情况下需要访问数据库而构造出域对象)
package rmi; import java.util.List; import java.util.*; public class AccountServiceImpl implements AccountService { public void insertAccount(Account account) { System.out.println(account.getName()); } public List getAccounts(String name) { List accountList = new ArrayList(); Account a = new Account(); a.setName("kevin"); accountList.add(a); return accountList; } }
定义客户端:
客户端是一个使用AccountService管理账户的简单对象
package rmi; public class SimpleObject { private AccountService accountService; public void setAccountService(AccountService accountService) { this.accountService = accountService; } }
实现客户端
package rmi; import org.springframework.context.support.ClassPathXmlApplicationContext; import java.util.*; public class AccountTest { public static void main(String[] args) { ClassPathXmlApplicationContext appContext = new ClassPathXmlApplicationContext( new String[] { "rmi/rmi.xml" }); SimpleObject so = (SimpleObject)appContext.getBean("simpleService"); AccountService as = so.getAccountService(); List accounts = as.getAccounts("kevin"); Iterator iter = accounts.iterator(); while(iter.hasNext()){ Account account = (Account)iter.next(); System.out.println(account.getName()); } } }
配置bean之间的关系
配置文件:rmi.xml
<?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="accountService" class="rmi.AccountServiceImpl"/> <!--注册域服务--> <bean class="org.springframework.remoting.rmi.RmiServiceExporter"> <property name="serviceName"><value>AccountService</value></property> <property name="service"><ref bean="accountService"/></property> <property name="serviceInterface"> <value>rmi.AccountService</value> </property> <property name="registryPort"><value>1199</value></property> </bean> <!--客户端查找域服务的stub--> <bean id="simpleService" class="rmi.SimpleObject"> <property name="accountService"><ref bean="accountServiceClient"/></property> </bean> <bean id="accountServiceClient" class="org.springframework.remoting.rmi.RmiProxyFactoryBean"> <property name="serviceUrl"><value>rmi://localhost:1199/AccountService</value></property> <property name="serviceInterface"><value>rmi.AccountService</value></property> </bean> </beans>
相关文章推荐
- spring笔记--使用springAPI以及自定义类 实现AOP的一个例子
- java RMI一个例子以及模仿RMI的原理实现一个自己的RMI
- spring笔记--使用springAPI以及自定义类 实现AOP的一个例子
- Spring+Spring Security+Maven 实现的一个Hello World例子
- 一个简单的Spring实现的例子
- 实现简单的MVC模式,通过一个小例子,不是很完美,但是可以说明一部分的问题
- spring中实现aop的例子及说明
- Spring+Spring Security+Maven 实现的一个Hello World例子
- 基于SpringBoot开发一个Restful服务,实现增删改查功能
- 朱晔和你聊Spring系列S1E8:凑活着用的Spring Cloud(含一个实际业务贯穿所有组件的完整例子)
- Spring 一个接口多个实现注入
- 通过例子学设计模式之--适配器模式以及使用场景说明(C++实现)
- 实现一个简易的IoC框架(上)(此篇与Spring.NET无关,为自己手写IoC框架)
- 用JUnit测试Spring管理Hibernate框架的一个例子
- 一个Go语言接口和多操作系统实现的简单例子
- 一个简单的jQuery插件ajaxfileupload实现ajax上传文件例子
- 一个简单的例子说明java中spring框架的依赖注入
- 事件代理总结: 已经有一些使用主流类库的事件代理示例出现了,比如说jQuery、Prototype以及Yahoo! UI。你也可以找到那些不用任何类库的例子,比如说Usable Type blog上的这一个。一旦需要的话,事件代理将是你工具箱里的一件得心应手的工具,而且它很容易实现。
- 用java的spring实现一个简单的IOC容器示例代码
- 一个在ASP.NET中利用服务器控件GridView实现数据增删改查的例子