关于spring 与rmi整合简单例子详解
2013-01-29 10:08
531 查看
今天老大说要用到rmi 与spring整合,以前没弄过~ 就简单做了个例子 以备日后查看~ 首先创建一个web工程结构大概如下:
添加spring 支持 首先导入jar 包编写spring 配置文件
1.首先编写接口 interface : 这里的接口要继承Remote, 它是一个标识接口,至于什么是标识接口,为什么要继承它大家可以在网上找下,这里不在赘述~
编写实现类
编写main 方法 用于启动service
首先我们来试试 启动是否成功
我们的 service 启动了。
将 服务端会用到的类 达成jar包 ,这里我们需要interface 中的BaseService.java 与dao中的User.java 可以直接用Myeclipse 中的工具将文件达成jar包
按照提示依次完成即可。 客户端中引用打成的jar包。
下面我们来编写 客户端
新建一个web 工程 同样是添加spring支持, 编写spring 文件
在文件中配置 服务的ip 地址 与端口 其中baseService 为服务端配置的 服务名称。
编写客户端测试类
运行测试类:
这样就完成了一个简单的spring 与rmi整合 ,没有找到上传源码的地方 如果谁需要 可以直接留邮箱。
添加spring 支持 首先导入jar 包编写spring 配置文件
1.首先编写接口 interface : 这里的接口要继承Remote, 它是一个标识接口,至于什么是标识接口,为什么要继承它大家可以在网上找下,这里不在赘述~
/** * Title:BaseService.java * Description: * Copyright:Copyright(c) 2013 * Company:boco * author:zhangtao * date:2013-1-28 * version:1.0 */ package com.boco.rmi.service.inface; import java.rmi.Remote; import java.rmi.RemoteException; import com.boco.rmi.service.dao.User; /** * Title:BaseService * Description:服务接口 * Copyright:Copyright(c) 2013 * Company:boco * author:zhangtao */ public interface BaseService extends Remote{ /** *Title:getHelloword *Description: * @param name * @return */ public String getHelloword(String name) throws RemoteException; /** *Title:getUser *Description: * @param user * @return * @throws RemoteException */ public String getUser(User user) throws RemoteException; }
编写实现类
/** * Title:BaseServiceImpl.java * Description: * Copyright:Copyright(c) 2013 * Company:boco * author:zhangtao * date:2013-1-28 * version:1.0 */ package com.boco.rmi.service.impl; import com.boco.rmi.service.dao.User; import com.boco.rmi.service.inface.BaseService; /** * Title:BaseServiceImpl * Description: * Copyright:Copyright(c) 2013 * Company:boco * author:zhangtao */ public class BaseServiceImpl implements BaseService { /* (non-Javadoc) *Title:getHelloword *Description</p> *@param name *@return * @see com.boco.rmi.service.inface.BaseService#getHelloword(java.lang.String) */ @Override public String getHelloword(String name) { // TODO Auto-generated method stub return "Welcome to boco,"+name+"!"; } /* (non-Javadoc) *Title:getUser *Description</p> *@param user *@return * @see com.boco.rmi.service.inface.BaseService#getUser(com.boco.rmi.service.dao.User) */ @Override public String getUser(User user) { // TODO Auto-generated method stub return "name:"+user.getName()+"-------->"+"age"+user.getAge(); } }编写dao
/** * Title:User.java * Description: * Copyright:Copyright(c) 2013 * Company:boco * author:zhangtao * date:2013-1-28 * version:1.0 */ package com.boco.rmi.service.dao; import java.io.Serializable; /** * Title:User * Description: * Copyright:Copyright(c) 2013 * Company:boco * author:zhangtao */ public class User implements Serializable { /** * serialVersionUID */ private static final long serialVersionUID = 1L; /** * name */ private String name; /** * age */ private int age; /** * */ public User(){}; /** * @param name * @param age */ public User(String name, int age){ this.name= name; this.age=age; } /** * @return the name */ public String getName() { return name; } /** * @param name the name to set */ public void setName(String name) { this.name = name; } /** * @return the age */ public int getAge() { return age; } /** * @param age the age to set */ public void setAge(int age) { this.age = age; } }
编写main 方法 用于启动service
/** * Title:BaseserviceTest.java * Description: * Copyright:Copyright(c) 2013 * Company:boco * author:zhangtao * date:2013-1-28 * version:1.0 */ package com.boco.rmi.service.main; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.boco.rmi.service.inface.BaseService; /** * Title:BaseserviceTest * Description: * Copyright:Copyright(c) 2013 * Company:boco * author:zhangtao */ public class BaseserviceTest { /** *Title:main *Description: * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("spring.xml"); BaseService baseService = (BaseService) context.getBean("baseRmiService"); System.out.println("baseRmiServicee start..........."); } }编写spring 文件,大家可以打开RmiServiceExporter 的源文件,查看可以配置的属性 其中服务接口的名称要在服务端用到.
<?xml version="1.0" encoding="UTF-8"?> <!-- - Application context definition for "springapp" DispatcherServlet. --> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <bean id="baseRmiService" class="com.boco.rmi.service.impl.BaseServiceImpl"/> <bean id="baseServiceExporter" class="org.springframework.remoting.rmi.RmiServiceExporter"> <property name="service" ref="baseRmiService"></property> <!-- 配置服务名称--> <property name="serviceName" value="baseService"></property> <!-- 配置服务接口--> <property name="serviceInterface" value="com.boco.rmi.service.inface.BaseService"></property> <!-- 配置服务端口--> <property name="registryPort" value="7777"></property> </bean> </beans>到此 简单的服务端就变成完成了。
首先我们来试试 启动是否成功
我们的 service 启动了。
将 服务端会用到的类 达成jar包 ,这里我们需要interface 中的BaseService.java 与dao中的User.java 可以直接用Myeclipse 中的工具将文件达成jar包
按照提示依次完成即可。 客户端中引用打成的jar包。
下面我们来编写 客户端
新建一个web 工程 同样是添加spring支持, 编写spring 文件
<?xml version="1.0" encoding="UTF-8"?> <!-- - Application context definition for "springapp" DispatcherServlet. --> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <bean id="baseService" class="org.springframework.remoting.rmi.RmiProxyFactoryBean"> <property name="serviceUrl" value="rmi://10.21.2.30:7777/baseService"></property> <property name="serviceInterface" value="com.boco.rmi.service.inface.BaseService"></property> </bean> </beans>
在文件中配置 服务的ip 地址 与端口 其中baseService 为服务端配置的 服务名称。
编写客户端测试类
/** * Title:ClientTest.java * Description: * Copyright:Copyright(c) 2013 * Company:boco * author:zhangtao * date:2013-1-28 * version:1.0 */ package com.boco.client; import java.rmi.Naming; import java.rmi.NotBoundException; import java.rmi.RemoteException; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.boco.rmi.service.dao.User; import com.boco.rmi.service.inface.BaseService; /** * Title:ClientTest * Description: * Copyright:Copyright(c) 2013 * Company:boco * author:zhangtao */ public class ClientTest { /** *Title:main *Description: * @param args */ public static void main (String [] args)throws NotBoundException, java.net.MalformedURLException, RemoteException{ ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("spring.xml"); BaseService baseService = (BaseService) context.getBean("baseService"); User user = new User(); System.out.println(baseService.getHelloword("zhangsan")); user.setName("bocosoft"); user.setAge(33); try { System.out.println(baseService.getUser(user)); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
运行测试类:
这样就完成了一个简单的spring 与rmi整合 ,没有找到上传源码的地方 如果谁需要 可以直接留邮箱。
相关文章推荐
- spring mvc + mybatis + mysql 整合的一个简单的登录例子
- Eclipse + MyEclipse整合Struts+Spring+Hibernate简单例子开发
- Spring与MQ整合简单例子
- 关于Java的RMI编程的一个简单的例子
- Swagger(一) SpringBoot整合Swagger2简单的例子
- dubbo zookeeper spring mvc简单整合的工程例子demo
- Swagger(一) SpringBoot整合Swagger2简单的例子
- 关于Java的RMI编程的一个简单的例子
- Swagger(一) SpringBoot整合Swagger2简单的例子
- 2009-04-07技术学习:wicket+Spring简单整合小例子
- CFX WebService做的一个简单的HelloWorld例子 也可与spring 整合 发布在容器里面
- Mybatis笔记之四 -- mybatis与spring整合简单例子
- 关于javaComparable和Comparator接口详解(简单的小例子)
- Spring-MyBatis整合简单例子及个人的经验杂谈
- struts2 整合 Spring开发,简单数据添加小例子
- WebService简单例子--cxf整合spring
- 整合开发Struts2,Hibernate,Spring简单框架的搭建详解
- 关于Spring Boot WebSocket整合以及nginx配置详解
- 关于Spring与WebSocket结合的简单例子
- 整合Struts2,Hibernate和Spring的一个简单例子