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语句需要程序员自己去编 ...
随机推荐
- Python全栈工程师(数值类型、运算符)
ParisGabriel Python 入门基础 python的应用领域: 1.系统运维 2.网络编程(如:网络爬虫,搜索引擎,服务器编程) 3.科学计算 4.航空领域(如:卫星, ...
- web知识清单
声名随笔中的实例链接到另一个博客是我本人的另一个博客号 模块一:HTML 1.html是什么: hyperText markup language超文本标记语言 超文本:比文本更丰富的内容 所有的浏览 ...
- JavaWeb笔记(九)Ajax&Json
AJAX 实现方式 原生的JS实现方式 //1.创建核心对象 var xmlhttp; if (window.XMLHttpRequest) {// code for IE7+, Firefox, C ...
- 转载:Android SQLite数据库版本升级原理解析
Android使用SQLite数据库保存数据,那数据库版本升级是怎么回事呢,这里说一下. 一.软件v1.0 安装v1.0,假设v1.0版本只有一个account表,这时走继承SQLiteOpenHel ...
- 第二阶段团队冲刺-six
昨天: 完成打印名单的功能. 今天: 合并程序(添加打印txt). 遇到的问题: web.xml中配置url-pattern一直不合适,不知道为什么会影响界面.
- json字符串数组判断其中
嘴挺笨的描述不清,直接看图,console.log(data1)是下图 获取的table中的数据组成的json对象(这里我不明白json对象啊json字符串啊json数组啊.我只会- 需要啥就转换成啥 ...
- objective-c runtime 开发详情
目录 概述 对象与类的实质 id与class 继承关系与isa 总结 C函数创建一个OC类 OC类与runtime NSObjectProtocol NSObject NSProxy 一.概述 Obj ...
- 算法复习———dijkstra求次短路(poj3255)
题目: Description Bessie has moved to a small farm and sometimes enjoys returning to visit one of her ...
- Hibernate中映射一对一关联(按主键映射和外键映射)和组件映射
Hibernate中映射一对一关联(按主键映射和外键映射)和组件映射 Hibernate提供了两 ...
- 生成DLL
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.R ...