实训项目 : 云平台构架实训
项目源码获取:
https://pan.baidu.com/s/1chur51w8FjBzDqphBHOpfQ 提取码:6rr6
可将本运行说明分为三个方向:说明运行的项目是什么、如何运行,以及运行该项目有何意义?其中运行的是什么包括:项目说明与功能分析;如何运行主要包含:项目程序的实现原理和运行方式;运行意义主要是扩展分析。具体说明如下:
一、项目说明与功能分析
本次实训项目从整体而言,可分为gdms服务端工程和client客户端工程。gdms既为服务端工程,主要包含hello 、readfile(上传图片文件至Tomcat容器) 和finduser(数据库数据传输)。而client客户端主要功能为,TestClient(捕获http://172.19.36.37:8080/gdms/ws/nnxy/readfile内容,并转化成相应的图片文件),
TestUser(捕获并解析出数据库内容)。其中,gdms服务端工程目录结构如下图1-1所示:
图1-1 gdms服务端工程结构
而client客户端工程目录结构如下图1-2:
图1-2 client服务端工程结构
gdms服务端与client端主要的区别在于:gdms借助了Tomcat7的发布容器,从而致力于对文件(如:图片文件)或数据库内容进行数据传输的支持。client应用于来自服务端的数据捕获和收集。从运行方式上来说,gdms需要来自Tomcat server的支持,而client却仅仅是Java Application的运行方式。
二、实现原理
1)、简要概括
gdms通过 @Path(String) 方式提供浏览器进行项目的网页浏览,然而之所以能够通过浏览器方式进行项目的访问,是因为gdms项目借助了Tomcat 服务进行web的发布。而client能捕获文件和数据库内容,是因为获取了HttpClientPoolManager的连接管理,可通过请求从响应中获取结果。
2)、具体细则
具体的项目实现原理可分为:hello的实现与访问、图片文件传输和捕获,以及数据库数据内容传输和捕获。以下将从gdms和client的角度详细陈述:
1、hello的实现与访问
gdms端:首先同@Path(String) 构建浏览路径,当存在行为触发@GET时,Console将输出hello world! 内容,以此标记项目浏览路径构建的可用性。
2、图片文件传输和捕获
gdms端:创建一个文件对象,用于获取WEB-INF这个目录的真实绝对路径。构造一个文件输入流对象,再将所有数据变成一个大数组,同时将字节数组序列化成一个字符串。不仅指定了文件类型和数据,而且输出了异常信息。最后整体上,告诉服务器,返回的数据是json格式。
client端:获取了连接管理器和连接的同时,创建一个get请求并执行请求,获取响应,最后从响应中获取结果。重要的是,将json串解析成了一个JSON对象,再把字符串内容反序列化成字节数组,同时拼接成一张图片类型的文件。至于关闭响应、放弃请求和释放连接,这里不再详述。
3、数据库数据内容传输和捕获
gdms端:先创建一个DAO对象,再根据uid查询数据表中的记录。其中DAO对象为UserDao类的实例化。UserDao中,获取数据库连接,从而先预处理SQL语句,再执行语句,得到结果集,返回并关闭;等。最后从整体而言,构建浏览器访问路径,以及显示类型的转码,即utf-8。
client端:TestUser中,方式与图片文件传输和捕获中client操作类似,区别在于JSONObject将json串解析成一个JSON对象。同时,把结果自动转换成一个Bean对象,而Bean对象类,却也仅仅作为第三方转换,如下关键代码:
private List<Userinfo> list;
public List<Userinfo> getList() {return list;}
public void setList(List<Userinfo> list) {this.list = list;}
三、运行方式
在Eclipse IDE中项目的运行方式较为简单,至于项目环境的构建,此处不详述。如对于gdms而言,直接在gdms工程名称上鼠标右键 Run As\Run on Server 即可。区别在于,client为Run As\ Java Application 。
四、扩展分析
既然gdms 与client能进行文件传输和数据库数据内容的传递,那么整个项目工程将会存在两大方向的意义:
其一,倘若将整个工程进行适当改造,即可应用于文件传输工具,但可用性和效益性不大。因为如今市面上对于文件传输系列工具已是相当完备,此处没必要再将整个工程大费周章应用于大文件传输。
其二,可行之处在于,可映射机密文件传输,或者将内部数据库内容提供外部程序进行API调用。如果将此gdms端与生产集群进行实时联机,那么对于外部client来说,可以实现数据的实时收集。