- 浏览: 80440 次
- 性别:
- 来自: 上海
最新评论
-
surprising:
[color=darkred][/color]交换机
jdk rmi 代码分析 -
weibei:
what?
java.lang.reflect.Type
RMI
早期对于rmi来说,客户端需要stub,服务器端需要skeleton.jdk因为有了反射,而不需要Skeleton
jdk因为有了aop,而不需要Stub
对于Registry来说,还是使用默认RegistryImpl_Skel,RegistryImpl_Stub.
什么是rmi
我在这里不解释他的字面意思,因为这个太原始
rmi是sun开发,遵循JRMP协议,因为他被发布在jre中,所有很多人只把它当作很普通的api来使用,所以它里面做了什么,很多人都不清楚.
rmi到底是什么?
socket框架
socket框架在早期就是起一个serversocket,socket来连接它,server根据传过来的key来做相应的返回(自己的协议),这是最原始的网络开发。
目前企业开发都是面向对象,什么都是以对象为单位,所有socket框架首先就应该隐藏上面的协议,以对象为单位。
对象调用
比如:Hello是一个接口,有一个print()方法。
对象暴露
使用:java.rmi.server.UnicastRemoteObject.exportObject(Remote obj,int port)
在暴露的过程中产生相关remote接口的aop实现,并注册到registry中去.
命名服务
服务器端对象暴露,并把接口的aop实现注册到registry中去,客户端只需要registry.lookup接口的aop即可,并可以通过这个aop接口实现于接口真正实现通信。
aop
目前aop,在运行态使用的,我知道有两种一种是jdk中java.lang.reflect,一个就是asm。其他的好像对他们的包装,比如cglib.
rmi的log
rmi日志管理使用java.util.logging
例子logging.properties
rmi端口
rmi分两个端口rmi名称服务端口
api使用方法:LocateRegistry.createRegistry(端口)
服务端口
api使用方法:UnicastRemoteObject.exportObject(服务对象,端口),多次调用这个方法,如果端口一样,会使用同一个serversocket,不会发生错误
spring使用
spring使用包装过的rmi,服务对象不再需要实现Remote接口,
我们平时使用只会使用registryPort,而不是忘记使用servicePort.如果不指定servicePort,servicePort=0,将会有系统指定。
rmi属性sun.rmi.transport.tcp.readTimeout:
等同于socket.setSoTimeout(int timeout),RMI默认值是2 * 3600 * 1000,2个小时.
sun.rmi.transport.tcp.handshakeTimeout:
socket握手超时设置,默认一分钟.
sun.rmi.transport.tcp.responseTimeout:
socket 读超时设置,只有当RMISocketFactory相关属性没有设置,才起作用,默认不超时
sun.rmi.transport.connectionTimeout:
rmi的socket是长期连接的,只有timeout时,才会socket.close();默认是的值是15
sun.rmi.transport.tcp.responseTimeout:
客户端socket的timeout, 默认不超时
早期对于rmi来说,客户端需要stub,服务器端需要skeleton.
什么是rmi
我在这里不解释他的字面意思,因为这个太原始
rmi是sun开发,遵循JRMP协议,因为他被发布在jre中,所有很多人只把它当作很普通的api来使用,所以它里面做了什么,很多人都不清楚.
rmi到底是什么?
- rmi是一套足够优秀的socket框架.
- rmi是相对比较简单命名服务
- rmi是aop的经典实用例子
- 相关辅助功能,比如本地GC
socket框架
socket框架在早期就是起一个serversocket,socket来连接它,server根据传过来的key来做相应的返回(自己的协议),这是最原始的网络开发。
目前企业开发都是面向对象,什么都是以对象为单位,所有socket框架首先就应该隐藏上面的协议,以对象为单位。
Hello hello = ... 记住得到hello这个对象是使用aop包装过的Hello对象(jdk1.5以后,如果以前的版本得到是Hello_Stub,这个需要预先生产) hello.print(); 远程调用在这里,包括返回。
在暴露的过程中产生相关remote接口的aop实现,并注册到registry中去.
命名服务
服务器端对象暴露,并把接口的aop实现注册到registry中去,客户端只需要registry.lookup接口的aop即可,并可以通过这个aop接口实现于接口真正实现通信。
aop
目前aop,在运行态使用的,我知道有两种一种是jdk中java.lang.reflect,一个就是asm。其他的好像对他们的包装,比如cglib.
rmi的log
rmi日志管理使用java.util.logging
例子logging.properties
handlers= java.util.logging.FileHandler .level= SEVERE java.util.logging.FileHandler.level = ALL java.util.logging.FileHandler.pattern = d:\\java1.log java.util.logging.FileHandler.limit = 50000 java.util.logging.FileHandler.count = 1 java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter sun.rmi.transport.level = FINE
rmi端口
rmi分两个端口
spring使用
spring使用包装过的rmi,服务对象不再需要实现Remote接口,
我们平时使用只会使用registryPort,而不是忘记使用servicePort.如果不指定servicePort,servicePort=0,将会有系统指定。
rmi属性
发表评论
-
互联网相关 WEB Framework
2011-04-23 11:51 883由于很多原因,一般做互联网的,如果不考虑时间和资源 ... -
序列化相关
2011-04-18 12:13 786序列化 作用: 很显然就是,主要让对象可以在多个jvm ... -
互联网相关 request参数
2011-04-09 12:30 1169通常互联网请求包括两种类型 get,post,他们请求所带参数 ... -
互联网相关 URL编码
2011-04-09 10:53 758互联网 URL 按照标准,URL中只能出现US-ASCII字 ... -
Velocity 的好处
2011-04-07 15:12 1407真正意义的mvc 跟jsp相比,它算真正意义的mvc,因 ... -
Spring scheam中的p 属性
2011-03-29 12:04 882http\://www.springframework.org ... -
数据结构 相关知识
2011-03-29 11:40 692Stack last-in-first-out ,jdk ... -
java.lang.reflect.Type
2011-03-28 18:12 1402java.lang.reflect.Type: 什么是jav ... -
Thread 相关问题
2011-03-28 16:16 736Double-checked locking h ... -
互联网 相关安全问题
2011-03-25 17:58 831下面是一些互联网应用中可能遇到的一些安全问题 ... -
request.getRemoteAddr方法为null
2011-03-02 16:01 5402在单独servlet container 里,request ... -
equinox一个web应用的例子
2010-12-03 13:08 820这是我2008写的一个使用equinox的web的简单例子,个 ... -
JMX相关
2010-11-17 15:57 872建立一个MBeanServer 有两种类型 建立普通的 ... -
定制sql语句的方法
2010-11-16 10:17 941hibernate 定制sql语句的方法: sql ... -
关于hibernate batchsize一些分析
2010-09-26 10:31 1966关于hibernate batchsize一些分析: ... -
mysql 乱码问题
2010-08-10 12:27 580Mysql乱码问题: 主要是配置你的connection参数 ... -
Thread 分析
2010-07-22 11:54 744interrupt() 这个方法,一般情况把 ... -
Svn keywords
2010-05-27 20:22 1010Svn现在已经有点out了,p2p的技术现在是流行,连Apac ... -
jboss 代码分析
2010-04-30 15:25 861Jboss是一个j2ee服务器,使用它自己的ioc,也就是m ... -
annotation 的理解
2010-04-21 11:12 778Annotation: 表现形式,就是code中 @*** ...
相关推荐
spring rmi 远程调用服务端和客户端源码,eclipse环境,jdk1.7.
Java RPC和RMI代码实战,有关键注释,为最简案例。Maven搭建,JDK8编译。 RPC体验:依次运行RpcProvider和RpcConsumer类。 RMI体验:RMITest中依次运行testServer和testClient方法。
这是java RMI 详解,通过例子加原理的解说,分步骤,通过简单的代码行行解释,看完想不会都难
rmi技术客户端调用服务器的函数解决问题 刚刚开始准备这个rmi作业的时候,我都有点无从下手。于是我先开始一起找资料,看书,经过不断的尝试...而且创建包jdk不一样也会导致最后代码无法运行,所以要创建新的文件。
NULL 博文链接:https://javasam.iteye.com/blog/1848846
rmi 聊天室 自己改下批处理文件路径就可以运行啦,jdk1.6编译的,源码在src里,课程作业,供大家参考
用JavaRMI框架实现,组合了JProgressBar,注意服务器启动用Start.jar不要用Service.jar,客户端是Client.jar可开多个,已经进行过局域网测试(JDK1.5)。注册功能,但要先建个邮件服务器,其中建立一个域,建一个...
Java开发基于rmi的数据库中间件设计源码,并利用中间件建立一个数据库应(Java web项目),分布式对象技术课程实践 主机安装Node.js,并在控制台进入front-end-pages目录下,按顺序执行以下命令运行前端: npm install ...
javax.management.remote.rmi RMI 连接器是供 JMX Remote API 使用的一种连接器,后者使用 RMI 将客户端请求传输到远程 MBean 服务器。 javax.management.timer 提供对 Timer MBean(计时器 MBean)的定义。 javax....
注:JDK1.3版本或更低的版本支持java.rmi.Naming,JDK1.3以后将命名服务API整合到JNDI中,javax.naming.Context声明了注册、查找,以及注销对象的方法。 三、实验要求 (1) 对关键代码解释清楚; (2) 远程对象...
Sun公司根据不同业务领域方向分成了四个JDK版本: Java Card,主要是以具有安全防护性的方式来执行小型的Java Applet,广泛运用在SIM卡、提款卡上; Java SE,前称J2SE。Java的标准版,为JavaEE和JavaME提供了...
javax.management.remote.rmi RMI 连接器是供 JMX Remote API 使用的一种连接器,后者使用 RMI 将客户端请求传输到远程 MBean 服务器。 javax.management.timer 提供对 Timer MBean(计时器 MBean)的定义。 javax....
idea,使用maven构建,采用JDK1.8 1. 项目说明 项目的依赖管理使用maven,详见pom.xml。 本项目分为四个模块: java-ee Servlet相关知识课堂Demo jdbc JDBC相关知识课堂Demo jms JMS相关知识课堂Demo rmi RMI相关...
联合会 C ++是一种非常丰富而强大的...理想情况下,每个JDK版本都应该提供一个JCPP版本,如果Oracle如此认为,我将非常高兴... 查看Wiki以获取更多详细信息。 许可证:如有兴趣,请联系。 仍在努力,但应该非常友好
本书讨论了JDK1.4和1.5(现在已命名为J2SE5)中所做的所有修改和增补。本书内容全面,涵盖了从网络基础知识到远程方法调用(RMI)等各方面的内容,书中章节涉及到TCP和UDPsocket、服务器socket、URL和URI、组播以及...
Java开发入门:JDK、JVM、Eclipse、Linux。Java语法基础:类、抽象类、接口、内部类、匿名类、异常、编码规范。Java核心编程:流、多线程、实体类、集合类、正则表达式、XML、属性文件。Java图形编程:AWT(Java2D、...
J2SE的Swing、Applet、Net、RMI、Collections、 IO、JNI……J2EE的JDBC、Sevlet、JSP、JNDI…..JDK中Collections、 Logger、IO…..的源代码
本书讨论了JDK 1.4和1.5(现在已命名为J2SE 5)中所做的所有修改和增补。本书内容全面,涵盖了从网络基础知识到远程方法调用(RMI)等各方面的内容,书中章节涉及到TCP和UDP socket、服务器socket、URL和URI、组播...
本书讨论了JDK1.4和1.5(现在已命名为J2SE5)中所作的所有修改和增补。本书内容全面涵盖了从网络基础知识到远程方法调用(RMI)等各方面的内容,书中章集涉及到TCP和UDP socket 、服务器socket、URL和URI、组播以及...