spirng整合rmi
package com.rmi;/*** 接口* @author edgewalk* @date 2017年6月11日*/public interface RmiServer {public boolean test();}
package com.rmi.impl;import com.rmi.RmiServer;/*** 实现类* @author edgewalk* @date 2017年6月11日*/public class RmiServerImpl implements RmiServer {@Overridepublic boolean test() {System.out.println("服务端test方法执行了.....");return true;}}
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.5//EN" "file:/usr/local/tomcat_report/lib/spring-beans-2.0.dtd"><beans><!-- 定义接口实现类--><bean id="rmiService" class="com.rmi.impl.RmiServerImpl"/><bean id="remoteRmiService" class="org.springframework.remoting.rmi.RmiServiceExporter"><!-- service接口 --><property name="serviceInterface" value="com.rmi.RmiServer"/><!-- 调用Service --><property name="service" ref="rmiService" /><!-- value值是提供给客户端调用 --><property name="serviceName" value="remoteService"/><!-- 注册端口 --><property name="registryPort" value="9400"/><!-- 服务端口 --><property name="servicePort" value="9401"/></bean></beans>
package com.rmi;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;/*** 服务端启动类* @author edgewalk* @date 2017年6月11日*/public class MainServer {public static void main(String[] args) {System.out.println("rmi服务端启动...");ApplicationContext ac = new ClassPathXmlApplicationContext("rmi-server.xml");System.out.println("rmi服务端启动完成...");}}
package com.rmi;/*** 在客户端使用服务端的接口文件* @author edgewalk* @date 2017年6月11日*/public interface RmiServer {public boolean test();}
package com.rmi;import java.io.IOException;import java.net.Socket;import java.rmi.server.RMIClientSocketFactory;/*** 自定义的socket连接工厂** @author edgewalk* @date 2017年6月11日*/public class RMICustomClientSocketFactory implements RMIClientSocketFactory {private int timeout = 1000; // 读超时时间public void setTimeout(int timeout) {this.timeout = timeout;}public Socket createSocket(String host, int port) throws IOException {Socket socket = new Socket(host, port);/*** 调用setSoTimeout(int* timeout)可以设置超时时间,如果到了超时时间仍没有数据,read会抛出一个SocketTimeoutException,* 程序需要捕获这个异常,但是当前的socket连接仍然是有效的。*/socket.setSoTimeout(timeout);return socket;}}
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.5//EN" "file:/usr/local/tomcat_report/lib/spring-beans-2.0.dtd"><beans><!-- 自定一个SCOKECT连接,可配置读超时时间 --><bean id="rmiClientSocketFactory" class="com.rmi.RMICustomClientSocketFactory"><property name="timeout" value="1000"></property></bean><!-- rmi远程调用 --><bean id="clientRmiService" class="org.springframework.remoting.rmi.RmiProxyFactoryBean"><!-- rmiServer是调用服务端serviceName的value,rmiIp是服务端ip,rmiPort是服务端注册的端口 --><property name="serviceUrl" value="rmi://127.0.0.1:9400/remoteService" /><!-- service接口 --><property name="serviceInterface" value="com.rmi.RmiServer" /><!-- 客户端自动重连 --><!-- lookupStubOnStartup : false表示,不在容器启动的时候创建与Server端的连接; --><property name="lookupStubOnStartup" value="true" /><!-- refreshStubOnConnectFailure : 这个属性是表示是否连接出错时自动重连; --><property name="refreshStubOnConnectFailure" value="true" /><!-- registryClientSocketFactory : 这个是客户端与服务端创建SOCKECT的一个工厂。 --><property name="registryClientSocketFactory" ref="rmiClientSocketFactory" /></bean></beans>
package com.rmi.client;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.rmi.RmiServer;/*** 客户端测试调用服务端程序* @author edgewalk* @date 2017年6月11日*/public class TestRmi {public static void main(String[] arg) {System.out.println("rmi客户端开始调用...");ApplicationContext ctx = new ClassPathXmlApplicationContext("rmi-client.xml");RmiServer rmi=(RmiServer)ctx.getBean("clientRmiService");//rmi.test();System.out.println("rmi客户端调用完成...");}}
rmi服务端启动...log4j:WARN No appenders could be found for logger (org.springframework.context.support.ClassPathXmlApplicationContext).log4j:WARN Please initialize the log4j system properly.rmi服务端启动完成...服务端test方法执行了.....
rmi客户端开始调用...log4j:WARN No appenders could be found for logger (org.springframework.context.support.ClassPathXmlApplicationContext).log4j:WARN Please initialize the log4j system properly.rmi客户端调用完成...
spirng整合rmi的更多相关文章
- Spring 4 整合RMI技术及发布多个服务(xjl456852原创)
rmi需要建立两个项目,一个是服务端的项目,一个是客户端的项目.服务端项目启动后,再启动客户端项目去调用服务端的方法. 我们建立两个maven项目: pom.xml配置: <?xml versi ...
- SSH三大框架整合案例
SSH三大框架的整合 SSH三个框架的知识点 一.Hibernate框架 1. Hibernate的核心配置文件 1.1 数据库信息.连接池配置 1.2 Hibernate信息 1.3 映射配置 ...
- SSH三大框架的整合
SSH三个框架的知识点 一.Hibernate框架 1. Hibernate的核心配置文件 1.1 数据库信息.连接池配置 1.2 Hibernate信息 1.3 映射配置 1.4 Hibernate ...
- spring RMI的使用
Spring整合RMI的原理 客户端的核心是RmiProxyFactoryBean,包含serviceURL属性和serviceInterface属性. 通过JRMP访问服务.JRMP JRMP:ja ...
- 20160526-20160531mybatis入门进阶
mybatis第二天 高级映射 查询缓存 和spring整合 课程复习: mybatis是什么? mybatis是一人持久层框架,mybatis是一个不完全的ORM框架.sql语句需要程序员自己去编 ...
- Ehcache缓存配置以及基本使用
在java项目广泛的使用.它是一个开源的.设计于提高在数据从RDBMS中取出来的高花费.高延迟采取的一种缓存方案.正因为Ehcache具有健壮性(基于java开发).被认证(具有apache 2.0 ...
- spring远程服务知识梳理
序:本文主要是总结和归纳spring的远程服务相关知识,可作为入门学习笔记.写博客目的也是为了进行知识梳理,便于以后查看.本文主要参考资料 spring 实战第三版 本文主要讨论内容如下: 远程调度概 ...
- mybatis由浅入深day02_课程复习_1订单商品数据模型分析
mybatis第二天 高级映射 查询缓存 和spring整合 课程复习: mybatis是什么? mybatis是一个持久层框架,mybatis是一个不完全的ORM框架.sql语句需要程序员自己去编 ...
- java学习摘抄笔记mybaits2
mybatis第二天 高级映射 查询缓存 和spring整合 课程复习: mybatis是什么? mybatis是一人持久层框架,mybatis是一个不完全的ORM框架.sql语句需要程序员自己去编 ...
随机推荐
- Linux(Ubuntu 命令大全)
Ubuntu 一. Ubuntu简介 Ubuntu(乌班图)是一个基于Debian的以桌面应用为主的Linux操作系统,据说其名称来自非洲南部祖鲁语或科萨语的“ubuntu”一词,意思是“人性”.“我 ...
- Python全栈工程师(递归函数、闭包)
ParisGabriel 每天坚持手写 一天一篇 决定坚持几年 全栈工程师 Python人工智能从入门到精通 函数式编程: 是指用一系列函数解决问题 每一个函数完成细 ...
- sdram之乒乓操作
在实时显示时,为了保证画面显示的完整性需要对SDRAM进行乒乓操作. SDRAM 中有 4 个bank ,地址分别为00 01 10 11,后面将用 0 1 2 3来描述 bank 0和1 作为第一个 ...
- 聊聊、Mybatis API
API Mybatis 到底解决了什么问题,持久化框架是什么,没出现 Mybatis 之前我们又是怎么来操作数据库的呢?对于 Java语言 来说,JDBC标准 是比较底层的了,但并非最底层的,可以说 ...
- String类型的方法使用
String.equals()方法源代码: public boolean equals(Object anObject) { if (this == anObject) { return true; ...
- qemu中是怎么模拟的新的设备
kvm_cpu_exec 和demo中演示的一样
- GIS专业分析方法(待更新)
遗传算法 核密度估计 http://blog.163.com/zhuandi_h/blog/static/1802702882012111092743556/ http://blog.csdn.net ...
- [bzoj5472] 数列
Description 输入一个长度为n的数组{ai}(1 <= i <= n) 问有多少个长度为n的数组{xi}(1 <= i <= n),满足1 <= xi < ...
- SPOJ - BALNUM Balanced Numbers
题意: 求出所给范围内满足其数位上的奇数出现偶数次,数位上的偶数出现奇数次(或不出现)的数的个数. 思路: 对于0 ~ 9 每个数有3种情况. 1.没出现过 2.出现奇数次 3.出现偶数次 那么就可以 ...
- BZOJ1483 [HNOI2009]梦幻布丁 【链表 + 启发式合并】
题目 N个布丁摆成一行,进行M次操作.每次将某个颜色的布丁全部变成另一种颜色的,然后再询问当前一共有多少段颜色. 例如颜色分别为1,2,2,1的四个布丁一共有3段颜色. 输入格式 第一行给出N,M表示 ...