发表于: 2017-09-18 23:45:39
3 722
【 今日完成 】
今天终于提交了任务七,开始了任务八的学习。
先来看看任务八的知识点:
远程调用技术:
很多时候我们编写的程序,需要和远程的服务相关联:
例如,采购系统需要与厂商的供应链系统通信;公司的人力资源系统
可能需要集成薪金系统;或者,薪金系统需要和打印、邮寄工资等外
部系统进行通信。无论哪种情况,我们的应用都需要和其他系统进行
交互,远程访问它们的服务。
作为一个Java开发者,我们有多种可以使用的远程调用技术,包括:
远程方法调用(Remote Method Invocation,RMI);
Caucho的Hessian和Burlap;
Spring基于HTTP的远程服务;
使用JAX-RPC和JAX-WS的Web Service。
远程调用是客户端应用和服务端之间的会话。在客户端,它所需要
的一些功能并不在该应用的实现范围之内,所以应用要向能提供这些
功能的其他系统寻求帮助。而远程应用通过远程服务暴露这些功能。
其他应用与Spittr之间的会话开始于客户端应用的一个远程过程调用
(remote procedure call,RPC)。从表面上看,RPC类似于调用一个
本地对象的一个方法。这两者都是同步操作,会阻塞调用代码的执
行,直到被调用的过程执行完毕。
它们的差别仅仅是距离的问题,类似于人与人之间的交流。如果我们
在公共场所的饮水机旁讨论周末足球比赛的结果,那我们就是在进行
一个本地会话——两人之间的会话发生在同一房间内。同样,本地方
法调用是指同一个应用中的两个代码块之间的执行流交换。
另一方面,如果我们拿起电话打给另一个城市的客户端,那我们之间
的会话就是通过电话网络远程进行的。类似地,RPC调用就是执行流
从一个应用传递给另一个应用,理论上另一个应用部署在跨网络的一
台远程机器上。
实际上远程调用技术有几种,任务八中要求的是最简单的调用——RMI
其实传统的RMI也需要比较繁杂的手段,我看了下差不多要五步。
但有了Spring大大简化了操作
Spring的RmiServiceExporter把该类转变为RMI服务,那现有的实现不需
要做任何改变。
RmiServiceExporter可以把任意Spring管理的bean发布为RMI服
务。如图所示,RmiServiceExporter把bean包装在一个适配
器类中,然后适配器类被绑定到RMI注册表中,并且代理到服务类的
请求。
创建好了RMI服务还不够,还需要装配它。
Spring的RmiProxyFactoryBean是一个工厂bean,该bean可以为
RMI服务创建代理。使用RmiProxyFactoryBean引
用SpitterService的RMI服务是非常简单的
在Spring中使用RMI,程序甚至不会知道它在调用远程方法,它只会觉得在调用本地方法。
===================================================================
学习了JAVA中反射的概念:
什么是反射:在运行时期,动态的去获取类中的成员信息(包,父类,接口,修饰符,类名,构造器,字段,方法等).
Eclipse中的outline(大纲视图),就是通过反射编写,目的:呈现出该类中所有的成员信息.
反射的API:
Class:描述一切的类.
Constructor:描述一切的构造器.
Method: 描述一切的方法.
获取构造器有三种方法,一般来说用的比较多的是getDeclaredConstructors。可以获取私有的
获取后就可以调用构造器方法了
当然,反射更重要的用途是调用普通方法
和构造器一样,调用前先必须得获取方法,注意这里和获取构造器有个地方不一样,获取构造器是不需要传“方法名”这个参数的,因为构造方法名字是固定的。而普通方法名字是可以自己取的,所以得传方法名来获取
这里调用方法会传一个对象,以及方法参数(如果有的话)
【明日计划】
开始写RMI的Demo
【今日收获】
了解了什么是RMI
学习了反射,并且会用反射来调用private方法
【任务进度】
还没审核完任务,暂无延期风险
评论