基于JAVA的企业级即时平台设计与实现 - 图文(3)

2019-05-24 12:50

中南大学学士论文 基于JAVA的企业级即时通信平台设计与实现

2.2 EIM通信系统相关技术

本系统的开发是基于Java的,开发工具用到了MyEclipse以及NetBeans,而相关技术则涉及众多 大体分为:Mina通信框架、XStream解析XML 、Hibernate数据持久、Swing美工 、Java多线程等等。 2.2.1 TCP/IP与UDP简介

在此系统做之前应该选定其最底层的通信协议,是基于TCP/IP还是UDP还是其他的一些协议。这要看系统的要求,因本人的时间有限以及UDP编程实战经验不足,所以选择了基于TCP/IP面向连接的网络连接。在下面本人介绍下TCP/IP和UDP。

因本人在网络基础课题上没好好认真听讲,网络知识不是很扎实,这些知识都是我在日常的编程中所体会到的,如有错误请见谅。那么它们是什么?TCP/IP和UDP他们都是网络协议,它们都规定了一组IO流或者数据在网络中的读写顺序和差错控制机制。没有TCP/IP就没有今天的网络,没有UDP就没有今天的QQ,当然现在QQ支持多种协议。TCP/IP和UDP最大的区别是: TCP/IP是面向连接而UDP则面向无连接。TCP/IP提供可靠的通信而UDP提供不可靠的通信,当然TCP/IP提供可靠的通信必然要付出代价,那就是UDP数据包简单快速。为啥?原因很简单TCP/IP数据包复杂,在解析它是时间比UDP长,所以UDP快。

UDP又称数据报通信,与TCP/IP想比,是不可靠的,非面向连结的;基于TCP/IP的通信,前提是双方选要建立一个连结管道,即程序中的Socket对象,然后双方在这个管道上收发数据;而UDP数据发送时,发送方只需要知它的目标地址即可发送,发送后,并不关心,也不保证会被接收方收到一个形象的例子是:二个人之间打电话,就是基于TCP/IP的Socket通信前提是双方必须建立一个通话信道;而UDP通信就像发短信,发送方只需发出即可。它们的通信模型见图2-1和图2-2。

图2-1: 基于TCP/IP的Socket通信模型

图2-2: 基于UDP数据包的通信模型

TCP/IP的Socket通信是面向连结的!双方必须先建立一个通信管道;而UDP

8

中南大学学士论文 基于JAVA的企业级即时通信平台设计与实现

只需要知道目标地址(IP和端口)即可发送,至于目标端口是否打开,目标地址是否真正存在,数据是否被发送到了目标地址,发送者都不需知道,也无法知道,发送者只要发送即可。 2.2.2 Mina通信框架简介

Apache MINA(Multipurpose Infrastructure for Network Applications) 是 Apache 组织一个较新的项目,它为开发高性能和高可用性的网络应用程序提供了非常便利的框架。当前发行的 MINA 版本支持基于 Java NIO 技术的 TCP/UDP 应用程序开发、串口通讯程序(只在最新的预览版中提供),MINA 所支持的功能也在进一步的扩展中。

目前正在使用 MINA 的软件包括有:Apache Directory Project、AsyncWeb、AMQP(Advanced Message Queuing Protocol)、RED5 Server(Macromedia Flash Media RTMP)、Object RADIUS、Open fire 等等。

Mina能干什么?先写两个程序来演示一下:我们用它做两个小程序,一个为服务器,收到客户机的消息后,就回送给客户机;一个是简单的客户机,一连上服务器,就发一条消息报到,然后将从服务器接到的消息再发给服务器。 第一 MINA开发环境准备

①首先到官方网站下载最新的MINA 版本,地址是:http://mina.apache.org/downloads.html。下载之前先介绍一下 MINA 的两个版本:1.0.x 适合运行环境为 JDK1.4,1.1.x 适合 JDK1.5 的版本,两者的编译环境都需要 JDK1.5。JDK1.5 已经是非常普遍了,本文中使用 1.1.5 版本的 MINA,编译和运行所需的文件是 mina-core-1.1.5.jar。

②下载 MINA 的依赖包 slf4j。MINA 使用此项目作为日志信息的输出,而 MINA 本身并不附带此项目包,请到http://www.slf4j.org/download.html 地址下载 slf4j 包,slf4j 项目解压后有很多的文件,本例中只需要其中的 slf4j-api-1.4.3.jar 和 slf4j-simple-1.4.3.jar 这两个 jar 文件。如果没有这两个文件就会导致启动例子程序的时候报 org/slf4j/LoggerFactory 类没找到的错误 ③当然要求机器上必须装有 1.5 或者更新版本的 JDK。

④最好你应该选择一个顺手的 Java 开发环境例如 Eclipse 或者 NetBeans 之类的,可以更方便的编码和调试,虽然我们的最低要求只是一个简单的文本编辑器而已。

第二 编写代码并执行

① 编写Mina服务器代码

服务器端由两个类组成,一个是Min.java,启动服务器的主类;另一个是SamplMinaServerHandler.java,这个类负责处理连结上来的客户机,即消息处理器。SamplMinaServerHandler代码如附录中的程序1,MainServer代码如附录中程序2。

一个基于MINA的服务器创建流程如图2-3

9

中南大学学士论文 基于JAVA的企业级即时通信平台设计与实现

创建一个编码器创建一个消息处理器创建一个IP地址创建非阻塞Socket创建接收数据的过滤器设定过滤器读取数据编码器设定Socket的消息处理器绑定端口,启动服务器 图2-3服务器创建流程

② 编写Mina客户机代码

一个基于Mina最简单的客户机包括一个启动主类Main Client,一个消息处理器(Client Handler)。启动主类代码见附录程序3,消息处理器类代码见附录程序4。

一个基于MINA的客户端创建流程如图2-4

创建一个编码器创建一个消息处理器创建一个IP地址创建非阻塞SocketConnector创建接收数据的过滤器设定过滤器读取数据编码器设定Connector的消息处理器绑定端口,连结到服务器 图2-4客户端创建流程

按照以上三个步骤就可以实现一个简单的客户/服务器的程序。需要复杂则可以在MINA的基础上封装成自己想要的类。本文在服务器设计时会详细介绍如何去封装。 2.2.3 XML解析简介

1. XML简介

XML(Extensible Markup Language)即可扩展标记语言,它与HTML一样,都是SGML(Standard Generalized Markup Language,标准通用标记语言)。Xml是Internet环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具。扩展标记语言XML是一种简单的数据存储语言,使用一系列简单的标记描述数据,而这些标记可以用方便的方式建立,虽然XML占用的空间比二进制数据占用更多的空间,但XML极其简单易于掌握和使用。

XML的简单使其易于在任何应用程序中读写数据,这使XML很快成为数据交换的唯一公共语言,虽然不同的应用软件也支持其它的数据交换格式,但不久之后他们都将支持XML,那就意味着程序可以更容易的与Windows、Mac OS, Linux以及其他平台下产生的信息结合,然后可以很容易加载XML数据到程序中并分析他,并以XML格式输出结果。为了使得SGML显得用户友好,XML

10

中南大学学士论文 基于JAVA的企业级即时通信平台设计与实现

重新定义了SGML的一些内部值和参数,去掉了大量的很少用到的功能,这些繁杂的功能使得SGML在设计网站时显得复杂化。

每个XML文档都由XML序言开始,在前面的代码中的第一行便是XML序言,,则是文档元素(document element),它是文件中最外面的标签(我们认为元素(element)是起始标签和结束标签之间的内容)。所有其他的标签必须包含在这个标签之内来组成一个有效的XML文件。XML文件的第二行并不一定要包含文档元素;如果有注释或者其他内容,文档元素可以迟些出现。XML文档结构如图2-5

图2-5 XML 文档结构

2. XStream简介

开源项目XStream是一套简单实用的类库,用于序列化对象与XML对象之间的相互转换。本文以XStream 1.1.2版进行说明,它具有以下几个特点:

①灵活易用:在更高的层次上提供了简单、灵活、易用的统一接口,用户无需了解项目的底层细节。

②无需映射:大多数对象都可以在无需映射的情况下进行序列化与反序列化的操作

③高速稳定:设计时力求达到的最重要的指标是解析速度快、占用内存少,以使之能够适用于大的对象处理或是对信息吞吐量要求高的系统

④清晰易懂:项目采用reflection机制得到无冗余信息的XML文件。所生成的XML文件较本地Java序列化产物更简洁,格式更清晰,更便于用户阅读

⑤无需修改:完全序列化包括private和final类型在内的全部内部字段。支持非公有类和内部类,类可以没有缺省的构造函数

⑥易于集成:通过实现特定的接口,XStream可以直接与其它任何树型结构进行序列化与反序列化操作(而不仅仅是XML格式)

⑦灵活转换:转换策略是可以定制的,允许用户自定义特殊类型的对象如何以XML格式存储。

⑧错误处理:由于XML资料不合法而造成异常时,会提供详细地诊断信息帮助处理问题。

11

中南大学学士论文 基于JAVA的企业级即时通信平台设计与实现

XStream主要应用于以下场合:数据对象的持久化、数据交换、配置文件 3. XStream解析XML实例

在附录中代码5至7我们通过一个简单的例子来了解XStream是如何工作的。先定义一个Person类PhoneNumber类。我将会用XStream把他们转换为xml格式的字符串(将对象序列化为XML文档),之后我又从字符串转换成对象(从XML文件反序列化成对象)。源码及运行效果如附录代码5至7。 2.2.4 Hibernate框架简介

在系统开发中必然要用到数据库,在程序中操作数据库是件十分麻烦和繁琐的事情。所以在系统开发前选择好数据持久工具。在本系统开发时本人运用了Hibernate框架来做服务器系统的ORM。

Hibernate是一个开放源代码的对象关系映射框架[10],它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任[11]。Hibernate全面解决方案体系结构如图2-6。

图2-6 Hibernate体系结构

这个图上我们可以看出,Hibernate面向程序的是Hibernate的持久类,面向数据库的是Session。他是应用程序和数据库的桥梁。而我们编程是离不开数据的操作的,所以我的感觉是学好Hibernate是件很重要的事情。

Hibernate用hibernate_cfg_xml文件集中了数据库的配置信息,用* .hbm_xml规范了数据库表格的字段,连接了应用程序中的对象和数据库的表格[11]。在这里就不详细介绍如何使用Hibernate,因为Hibernate在java编程界是个基本工,这个资料网上书本上有很多。

12


基于JAVA的企业级即时平台设计与实现 - 图文(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2015年12月留基委口语试题汇总

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: