1、本科毕业设计(论文)基于 JAVA 开发的电信 IP 计费系统赵宝华燕 山 大 学2009 年 06 月本科毕业设计(论文)基于 JAVA 开发的电信 IP 计费系统学院(系): 电子工程系 专 业: 电信 05-4 班 学生 姓名: 赵宝华 学 号: 051304021077 指导 教师: 卢辉斌 张新钊 答辩 日期: 2009 年 6 月 17日 燕山大学毕业设计(论文)任务书学院:信息科学与工程学院 系级教学单位:电子与通信工程学号 051304021077学生姓名 赵宝华专 业班 级 电信 05-4 班题目名称 基于 JAVA 开发的电信 IP 计费系统题目性质1.理工类:工程设计 (
2、 );工程技术实验研究型( );理论研究型( );计算机软件型( );综合型( )2.管理类( );3.外语类( );4.艺术类( )题目类型 1.毕业设计( ) 2.论文( )题目题目来源 科研课题( ) 生产实际( )自选题目( ) 主要内容1 系统功能板块分析设计及用例分析2 数据库设计3 客户端数据采集功能设计4 服务器端数据采集和数据整合功能5 数据源模拟设计和测试的 GUI 设计基本要求1 学习面向对象思想,深入理解封装、继承和多态2 学会使用 UML 做系统分析,会使用 IBM Rational Rose 工具3 掌握 Java 类库中的常用类和方法,以及熟练使用 Eclipse
3、 开发工具4 掌握 MySQL 数据库的基本知识和编程相关的中高级知识5 掌握 SOCKET 编程,了解 TCP/IP 的传输协议参考资料1 吴建,郑潮UML 基础与 Rose 建模案例人民邮电出版社20072 HerbertJava 完全手册张良华译电子工业出版社20083 Mark Allen Weiss数据结构与算法分析北京-机械工业出版社20094 杜桂荣,马建红Java 网络编程技术与实践清华大学出版社 2008周 次 第 1 4 周 第 5 8 周 第 9 12 周 第 1316 周 第 17 18 周应完成的内容资料准备,学习java 的基本语法及API 的使用;学习面向对象的思
4、想和编程技巧,学习使用 ROSE 工具,进行项目分析学习图形开发、多线程开发、SOCKET 编程等;学习MYSQL、JDBC等数据库相关知识,并进行数据库规划系统的详细设计,以及功能更板块的划分,用例分析系统的编码实现,以及编码后的演示和调试编写毕业论文指导教师:卢辉斌职称:教授 2009 年 2 月 27 日系级教学单位审批:年 月 日燕山大学本科生毕业设计(论文)摘要电信运营系统中,电信计费系统是主要的支撑系统,占有重要地位。对于电信计费系统是电信运营商的核心竞争力之一这一观点愈来愈被业界认同。电信计费系统中的数据蕴含着企业经营态势、客户群分布特征及消费习惯、各项业务发展状况等丰富而极具价
5、值的信息,对这些数据进行充分的分析,可以为运营商的领导决策层了解用户需求,制定市场策略提供有力的支持。本课题是研究基于 JAVA 开发的电信 IP 计费系统。在设计中,采用了UML 统一建模语言进行系统分析,运用了 JAVA 网络编程以及多线程编程,并选择 MySQL 作为数据库支持。功能上主要分为三大板块:客户端数据采集系统、服务器端采集系统和数据整合系统。关键词 电信;计费;JAVA;UML;数据采集燕山大学本科生毕业设计(论文)AbstractIn Telecom Systems, Telecom Billing System is the main support system, wh
6、ich occupies important position. The view that Telecom Billing System for Telecom operators is one of the core competences is more and more recognized by the industry. Telecom Billing System contains the data in the business situation, the distribution of characteristics of customers and consumer ha
7、bits, such as the business development of rich and valuable information on these data. The full analysis on them, operators can provide the leadership decision-making level understanding of user needs, development of marketing strategy to provide strong support.This issue is to study the Java-based
8、IP Telecom Billing system. In the design, UML as the Unified Modeling Language is used for system analysis. I choose the knowledge of Java net programming, as well as multi-threaded network programming and select MySQL as the database support. This system is divided into three main sections: client
9、data collection system, server data collection system and integration system.Keywords Telecom; Billing; JAVA; UML; Data CollectionI目 录摘要 .IAbstract.II第 1 章 绪论 .11.1 课题背景 11.2 课题国内现状 21.3 课题研究意义 31.4 本课题研究内容和结构编排 3第 2 章 计费系统开发环境介绍 .52.1 JAVA 程序设计语言介绍 .52.2 ORACLE 数据库和 MYSQL 数据库 .62.2.1 ORACLE 数据库 62.
10、2.2 MySQL 数据库 .62.3 建模工具和集成开发环境 72.3.1 IBM Rational Rose UML 建模工具 72.3.2 Eclipse 集成开发环境 .72.4 本章小结 8第 3 章 电信 IP 计费系统分析 .93.1 电信 IP 计费系统的营运功能结构 93.1.1 采集系统 .103.1.2 整合系统 .103.1.3 其他系统说明 .113.2 后台数据服务功能模块分析 113.2.1 后台数据服务系统部署 .113.2.2 后台数据服务系统用例分析 .113.3 本章小结 13第 4 章 系统详细设计 .14II4.1 客户端数据采集 144.1.1 客户
11、端数据采集设计类图 .144.1.2 客户端数据采集配置文件说明 .144.1.3 类详细说明 .154.2 服务器端数据采集 204.2.1 服务器端数据采集设计类图 .204.2.2 数据库环境参数 .204.2.3 类详细说明 .214.3 服务器端数据整合 224.3.1 服务器端数据整合设计类图 .224.3.2 类详细说明 .224.3.3 数据表结构设计 .244.4 本章小结 25第 5 章 数据源模拟设计及系统演示 .275.1 客户端访问数据源模拟设计 275.1.1 数据源模拟的目的 .275.1.2 数据源模拟实现 .275.2 系统演示设计 275.2.1 系统演示程
12、序设计说明 .275.2.2 显示界面及说明 .275.3 本章小结 31结论 .32参考文献 .33致谢 .34附录 135附录 239附录 342燕山大学本科生毕业设计(论文)0第 1 章 绪论1.1 课题背景电信计费的广义概念是:从用户使用电信业务开始,到用户最终完成缴费的全过程。具体可分为两个阶段:第一阶段为交换机计费,以电话为例,用户开始通话到通话结束,交换机复式计次过程完成或交换机将主叫、被叫、通话时长等实时记录的过程;第二阶段为后台计费账务处理,即把采集到的交换机记录的用户呼叫信息经过预处理、过滤、划价、累计求和,形成用户账单,到最终完成缴费并销账的过程。后台计费账务处理系统就是
13、一般定义的电信计费系统。电信计费系统是随着电信产业和计算机产业的发展而不断成长起来的,特别是随着交换机技术和计算机技术的不断进步而不断完善的。在人工交换时期,市话计费采用包月制,长途按距离和通话时长采用人工计费方式完成,使用的工具是笔和算盘或计算器。随着半自动、全自动交换机的采用,特别是八十年代中期和九十年代程控交换机的大量引进,通信能力的迅速扩大,电信用户及电信业务量的急剧增长,迫使人们改变传统的人工计费方式。进入八十年代,计算机技术有了突破性的进步,基于集成电路技术的小型机、大型机和 PC 机相继问世,用计算机取代笔和算盘作为电信计费的工具成为可能。这时候才形成了真正意义的电信计费系统。电
14、信计费系统的建设初期,由于计算机硬件性能的限制,软件开发成本和难度的过高,以及电信运营者服务意识和竞争意识的淡漠,只能以自动化为目标,以算费、计帐和收费的简单功能实现。这样的简单功能,不能跟上电信业务的发展变化,不能满足用户的服务需求,更不能适应市场经济下竞争的环境。随着计算机技术和数据库技术的发展,软件产业的日趋成熟,计算机投资成本的下降,使电信计费系统朝着灵活化、复杂化、全面化方向发展成为可能。与此同时,由于市场竞争的形成,用户服务需求的扩大,电信运营商也迫切需要这样的计费系统。电信计费系统实时性的建设:由于交换机与计算机接口技术的不一致燕山大学本科生毕业设计(论文)1性或由于交换机型复杂
15、,操作难度大等问题的限制,计费系统初期基本采用磁带脱机处理方式,一个月脱一次或数次磁带。这种非实时处理方式造成客户不能及时查询,计费数据不及时,不能开展短期租机业务,不能临时出帐,不能及时决策,容易造成恶意欠费等问题。随着交换机技术的计算机化,和各种接口协议标准的形成,使得联机实时采集计费系统成为当今计费系统尊崇的时尚。电信计费系统集中性的建设:由于早期数据网络的匮乏和经营体制的限制,电信公司基本采用分散的计费系统,系统之间彼此都不联网。随着DDN、 ATM 帧中继数据通信技术的采用,使得计费系统联网成为现实。与此同时,集中化的计费系统由于有利于提高企业的市场竞争力,而越来越被电信运营者采用。
16、电信计费系统的综合性的建设:由于早期电信业务只是电话业务,计费系统是针对单一业务。随着智能、增值业务、数据多媒体业务以及Internet 业务的出现,计费系统从单一业务正向具备综合业务的计费系统转移 1。1.2 课题国内现状近二十年来,中国电信业的发展建设始终超前于国民经济,呈跳跃性、超常规发展趋势。电信网络的规模、密度、电信设备的安装、客户群的发展都有了突破性的进展。在看到电信业取得重大成绩的同时,也应该注意到:在计划经济体制下,多年以来,电信行业的主要矛盾是通信能力不足,因此注重网络建设,提高通信能力始终是各地电信企业工作的重中之重;电信行业独家经营,处于卖方市场,对市场感受的压力很小,对
17、于计费系统进行大规模投资建设的紧迫感不强;计费系统投资建设后直接经济效益不明显,投资回报难以评估,投资决策难以形成。这些都导致了电信计费系统的建设始终滞后于网络的建设和通信能力的增长。针对计费系统严重落后问题,中国电信于 1996 年起着手研究电信计费统的升级、改造问题。中国电信首先对原有的计费系统进行了调查、研究和分析,对国外计费系统的建设进行了考察,然后形成了中国电信计费系燕山大学本科生毕业设计(论文)2统的体制、技术和业务规范和中国电信计费系统“三级计费体制”的建设管理思路。中国电信三级计费体制,是根据中国电信本身网络规模大、经营区域广的特点,总结了多年来的运营经验和教训,吸取了电信管理
18、网TMN 的相关理论,而制定出的符合中国电信实际情况具有中国电信特色的计费体制。中国电信三级计费体制和各级的职责如下:全国计费结算中心工作的重点之一是结算,包括集团各子公司相互间的结算、与国内其他电信运营商的结算摊分、以及与国际电信运营商的结算等;之二是计费,包括全网性的电信业务的计费、具有集中性质的且竞争激烈业务的计费;之三是对计费结算数据进行分析并提供经营分析报告。随着电信市场竞争的加剧,电信运营商的增多,互联互通的增加,对于需要集中处理的业务将会越来越多。全国计费结算中心将会越来越显示出其重要性 2。1.3 课题研究意义电信计费系统发展的另一个重要趋势是朝着个性化、多样化的客户服务方向发
19、展。今后的计费系统应能够向用户提供不同形式的客户账单、不同的缴费方式、不同的费用查询方法、不同的缴费周期,甚至可以为用户提供定制的电信计费服务 3。对于电信计费系统是电信运营商的核心竞争力之一这一观点愈来愈被业界认同。电信计费系统中的数据蕴含着企业经营态势、客户群分布特征及消费习惯、各项业务发展状况等丰富而极具价值的信息,对这些数据进行充分的分析,可以为运营商的领导决策层了解用户需求,制定市场策略提供有力的支持 4。1.4 本课题研究内容和结构编排本课题研究的内容是针对某电信运营商新增一项开放实验室出租业务,即该电信运营商提供基于 Unix 平台的实验室环境,选择使用这种业务的用户能够远程登录
20、到实验室中做基于这个实验室环境的一些工作和实验。对这一系统模式进行数据采集和数据整合,实现 IP 计费。本课题的结构安排如下:燕山大学本科生毕业设计(论文)3第一章为绪论部分,系统的介绍了,电信计费系统的背景和发展趋势,并针对国内电信业现状分析本课题的研究意义所在。第二章为系统开发环境的选择和介绍,本课题选用了 JAVA 语言做开发,JAVA 程序设计语言是目前最流行的语言,相较 C/C+,PHP 等主流语言,JAVA 有着“解释型的,健壮安全的,结构中立的,可移植的,性能优异的”等优点。另外还对选用 MySQL 数据库进行了分析第三章为电信 IP 计费系统分析,从宏观角度和功能划分的角度对系
21、统整体进行分析。采用 UML 统一建模语言,用 Rational Rose 工具进行各功能板块用例分析。第四章是本课题的重点章节,为系统的详细设计。较为详细的分析各功能板块实现所用的类结构和方法等。第五章为本课题的演示说明章节,为了实现本课题在单台 PC 上调试方便,特增加了数据源模拟设计和演示图形界面设计。燕山大学本科生毕业设计(论文)4第 2 章 计费系统开发环境介绍2.1 JAVA 程序设计语言介绍 Java 是一种简单的,面向对象的,分布式的,解释型的,健壮安全的,结构中立的,可移植的,性能优异、多线程的动态语言 5。(1)Java 是纯面向对象编程的语言,对于本系统中的用户进行抽象是
22、很容易理解的;(2)Java 可移植性强, Java 程序运行在特定的虚拟机上,只要在安装了这样的虚拟机上的机器,不管是 Windows 系统还是 Unix 系统,甚至是其他系统,Java 程序不需再次编译,都可以运行。 Java 创造了“一次编译,到处运行”的神话;(3)Java 是可收集无用的存储单元。用 C 或 C+编写软件的编程人员必须仔细跟踪所用的内存块。当一个内存块不再使用时,他们务必让程序释放它,之后方可再用。在大的项目中,这可能就非常困难,且往往成为出错和内存不足的致命根源。 在 Java 的情况下编程人员不必为内存管理操心。Java 统有一个叫做“ 无用单元收集器”的内置程序
23、,它扫描内存,并自动释放那些不再使用的内存块;(4)Java 是可扩展的。 Java 程序可与用其它语言编写的现存程序库连接。由于 Java 数据结构 C 的数据结构的类型极为相似,这给 Java 移植造成了非常大的方便。并且最大的问题在于,现在有多线程程序库为数不多。Java 程序可以声明某些方法是内部的,然后,把这些内部方法映射成软件库所定义的功能,从而动态地链接到虚拟机。Java 分为三个版本:(1)Java SE(Java2 Platform Standard Edition,java 平台标准版);(2)Java EE(Java 2 Platform, Enterprise Edit
24、ion,java 平台企业版);(3)Java ME(Java 2 Platform Micro Edition,java 平台微型版 )。本系统设计采用的 Java SE 6.0 版本。燕山大学本科生毕业设计(论文)52.2 ORACLE 数据库和 MySQL 数据库2.2.1 ORACLE 数据库目前业内和 JAVA 结合非常良好的数据库有:ORACLE 数据库和MYSQL 数据库。首先,ORACLE 作为目前市场份额占有率最大、最流行的数据库。它有很多优势:(1)能在所有主流平台上运行(包括 Windows) 。完全支持所有的工业标准。采用完全开放策略。可以使客户选择最适合的解决方案。对
25、开发商全力支持。(2)平行服务器通过使一组结点共享同一簇中的工作来扩展 Windows NT 的能力,提供高可用性和高伸缩性的簇的解决方案。如果 Windows NT不能满足需要,用户可以把数据库移到 UNIX 中。(3)获得最高认证级别的 ISO 标准认证。(4)性能最高,保持 Windows NT 下的 TPC-D 和 TPC-C 的世界记录。(5)多层次网络计算,支持多种工业标准,可以用 ODBC、JDBC、OCI等网络客户连接 6。另外,09 年 4 月份,甲骨文公司对 SUN 公司做出了收购决策。这样一来,对 JAVA 语言和 ORACLE 语言的结合更是有利。所以,对于本系统而言,
26、ORACLE 数据库应该是首选。2.2.2 MySQL 数据库但是,由于 ORACLE 体积过大,本课题作为设计性实践课题选择了较小较轻便的 MYSQL 数据库。MySQL 是一个小型关系型数据库管理系统。在 2008 年 1 月 16 号被SUN 公司收购。目前 MYSQL 被广泛地应用在 Internet 上的中小型网站中。其特点如下:(1)使用 C 和 C+编写,并使用了多种编译器进行测试,保证源代码的可移植性。(2)支持 AIX、FreeBSD、HP-UX 、Linux 、Mac OS、Novell 燕山大学本科生毕业设计(论文)6Netware、OS/2、Solaris、Window
27、s 等多种操作系统 (3)为多种编程语言提供了 API。这些编程语言包括C、C+、Eiffel、Java、Perl、PHP、Python 、Ruby 等。(4)支持多线程,充分利用 CPU 资源。(5)优化的 SQL 查询算法,有效地提高查询速度。(6)既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入到其他的软件中提供多语言支持。(7)提供 TCP/IP、ODBC 和 JDBC 等多种数据库连接途径。(8)提供用于管理、检查、优化数据库操作的管理工具。(9)可以处理拥有上千万条记录的大型数据库。 72.3 建模工具和集成开发环境2.3.1 IBM Rationa
28、l Rose UML 建模工具统一建模语言(UML,Unified Modeling Language) 是非专利的第三代建模和规约语言。UML 是一种开放的方法,用于说明、可视化、构建和编写一个正在开发的、面向对象的、软件密集系统的制品的开放方法。UML 展现了一系列最佳工程实践,这些最佳实践在对大规模,复杂系统进行建模方面,特别是在软件架构层次已经被验证有效。UML 集成了 Booch,OMT和面向对象软件工程的概念,将这些方法融合为单一的,通用的,并且可以广泛使用的建模语言。UML 打算成为可以对并发和分布式系统的标准建模语言 8。IBM Rational Rose 软件是进行 UML
29、模型图制作的专用工具 9,本课题中的所有功能模块以及用例分析图,全部由此软件制作而成。2.3.2 Eclipse 集成开发环境Eclipse 是著名的跨平台的自由集成开发环境(IDE) 。Eclipse 的设计思想是:一切皆插件。Eclipse 核心很小,其它所有功能都以插件的形式附加于 Eclipse 核心之上10 。Eclipse 基本内核包括:图形API , Java 开发环境插件( JDT) ,插件开发环境(PDE )等。燕山大学本科生毕业设计(论文)72.4 本章小结对于软件设计而言,设计工具的选择是很重要的一个前提。首先,本课题选用了 JAVA 语言作为设计的基本语言。JAVA 具
30、有可移植性、性能优异和多线程等特点,而且 JAVA 是目前 IT 业内主流的程序设计语言之首,对于大型工程项目的开发有很大优势。其次,选用了 MySQL 作为本课题的数据库支持。并对 Oracle 和MySQL 进行了分析比较。最后,描述了 UML 建模语言的必要性和建模工具 Rational Rose,以及对 JAVA 程序设计的集成开发环境Eclipse。燕山大学本科生毕业设计(论文)8第 3 章 电信 IP 计费系统分析3.1 电信 IP 计费系统的营运功能结构本课题设计的出发点是某电信运营商新增一项 Open Lab(开放实验室)出租业务,即该电信运营商提供基于 Unix 平台的实验室
31、环境,选择使用这种业务的用户能够远程登录到实验室中做基于这个实验室环境的一些工作和实验。运营商希望借助先进的计算机技术对访问实验室的用户进行管理和计费,由此实现对此项业务运营的支持与管理。本项目主要包括以下子系统: 电 信 营 运 系 统 后 台 数 据 服 务前 台 营 运 管 理前 台 用 户 服 务采 集 系 统整 合 系 统用 户 管 理 系 统资 费 管 理 系 统管 理 员 管 理 系 统帐 单 查 询 系 统帐 务 查 询 系 统权 限 管 理 系 统用 户 自 服 务 系 统图 3-1 计费系统的营运功能结构(1)采集系统(2)整合系统燕山大学本科生毕业设计(论文)9(3)用户
32、管理系统(4)资费管理系统(5)管理员管理系统(6)账单查询系统(7)账务查询系统(8)用户自服务系统(9)权限管理系统3.1.1 采集系统本系统是一个计费的系统,要想对用户进行准确的收费,首先必须能够获得用户使用开放实验室的准确的使用记录,采集子系统正是为了获取这些记录而提供的。Unix 服务器本身就具有记录系统日志的功能11。用户每次登录和退出 Unix 服务器的信息都会被自动保存到一个在线日志文件/var/adm/wtmpx 中。采集系统通过调用 Unix 系统函数来读取这个日志文件中的内容,然后对读取到的内容进行整理,整理为方便计费的数据,其中包括登录名、登录时间或登出时间等作为计费依
33、据的数据。最后把这些数据存入数据库中,以备其他系统使用。为了使读取的数据量不至于过大,采集系统会每小时定时执行一次,每次只采集上一个小时时间段之内的数据。3.1.2 整合系统采集系统定时将用户使用服务器的数据存入到了数据库中,但这些数据都是流水账的数据,是用户每次使用 UNIX 操作系统的用时。如果用户量大,用户频繁地登入/出,将产生大量的数据,不便于将来生成用户的月账单和对开放实验室的使用情况进行月统计和年统计,因此,出现了整合系统。整合是将某个用户在某一时段内所用机时求和后形成一条记录。整合系统具体整合规则如下:(1)每小时定时整合一次,生成以小时为单位统计的数据,程序总是每小时定时整合前
34、一小时的数据。燕山大学本科生毕业设计(论文)10(2)每天定时整合一次,生成以天为单位统计的数据,程序总是每天定时整合前一天的数据。(3)每个月定时整合一次,生成以月为单位统计的数据,程序总是每个月定时整合前一个月的数据。3.1.3 其他系统说明由于本课题重点设计的后台数据服务部分,而其它 7 个功能板块系统均属于前台运营和前台用户服务。这两部分的设计模式为 B/S 模式。使用的语言为 JSP 脚本语言,同时使用了 Hibernate 插件和 Struts 框架等技术。由于不是本课题的设计重点,在此就不过多赘述。3.2 后台数据服务功能模块分析3.2.1 后台数据服务系统部署 一一一一一一一一
35、一一一一一一一一一一一一一一一一一一一一一一一一一一一一 一一一一一一图 3-2 后台系统部署图示图 3-2 中,左侧 3 个模块是用于出租的 Unix 服务器,在本系统中作为数据采集的客户端。中间模块为服务器用于采集来自客户端的采集数据,并进行数据整合以及采集备份处理,是本系统的核心处理部分。另外,右侧模块为数据库的服务器,即本系统中所用的 MYSQL 数据库服务器。需燕山大学本科生毕业设计(论文)11要说明的是,服务器端采集服务器和数据库服务器可部署在同一个服务器中。3.2.2 后台数据服务系统用例分析3.2.2.1 客户端数据采集用例说明用例名称:数据采集客户用例简述:(1)读取日志文件
36、,并且清空日志;(2)从读取的数据中解析用户登录时间等信息;(3)把解析的用户登录时间数据发送到服务器;(4)如果发送失败,就存储在实验室上等下次发送。参与者:系统管理人员前置条件:需要 root 权限后置条件:日志文件被备份后清空一一一一一一一一一一一一一一一一一图 3-3 后台数据服务系统用例分析图3.2.2.2 服务器端数据采集用例说明用例名称:数据采集服务器燕山大学本科生毕业设计(论文)12用例简述:(1)接受各客户采集程序发送的数据;(2)接受失败,请求客户端重新发送;(3)根据时间存储到相应的数据表。参与者:系统管理员3.2.2.3 服务器端数据整合用例说明用例名称:数据整合用例简
37、述:(1)每小时按用户业务整合一次用户登录时间数据。(2)每天按用户业务整合一次用户登录时间数据。(3)每月按用户业务整合一次用户登录时间数据。(4)每小时按实验室服务器整合一次用户使用的时间数据。(5)每天按实验室服务器整合一次用户使用的时间数据。(6)每月按实验室服务器整合一次用户使用的时间数据。参与者:系统管理员前置条件:无后置条件:产生整合数据。3.3 本章小结本章从功能划分的角度对系统进行了分析。首先,从整体性考虑,系统分为前台用户服务和后台数据服务两部分。每一部分都包含各自不同的具体功能板块。本课题重点研究后台数据整合部分,进行了详细的说明。而前台用户服务部分没有过多赘述。其次,后
38、台数据整合部分主要包括:客户端数据采集,服务器端数据采集和数据整合三大功能板块。对本课题计费系统进行了系统部署分析和用例分析。燕山大学本科生毕业设计(论文)13第 4 章 系统详细设计4.1 客户端数据采集4.1.1 客户端数据采集设计类图图 4-1 客户端数据采集类图在客户端数据采集板块中,共涉及 5 个类和 1 个接口及其相应的实现类,有类CollectorLanchor,CollectionThread,DataCollector,LogRecord,MatchedRecord,接口 CollectionListener,其实现类为 LogDeaker。4.1.2 客户端数据采集配置文件
39、说明为了保证系统的灵活性,在该系统中把服务器和客户端有关的参数都通过属性文件配置,由程序动态读取。该配置文件的文件名确定为unix_server.properties。燕山大学本科生毕业设计(论文)14在此配置文件当中需要配置的属性说明如下:(1)属性 interval 默认值为 60,代表采集的间隔时间,单位为分钟。(2)属性 ip 值为相对应客户端的 IP 地址。(3)属性 sourcefile 为采集的源的文件名。(4)属性 destinationpath 为采集源的备份目录。(5)属性 command 是数据源被采集的时候,先移动到备份目录,这个属性设置数据源文件移动的 SHELL 指
40、令或 DOS 指令。(6)属性 historyfile 存储历史记录到 history.dat 文件中。由于在采集的时候由于用户正在登录中,还没有登出,所以无法处理这种数据,这就是不能匹配成对的数据。这些数据必须保存起来,在下次采集的时候用来匹配,这个属性就是设置没有匹配成功的数据的保存文件名。该属性只指定文件名,目录采用上面指定的备份目录。(7)属性 serverip 为数据接收服务器的 IP 地址。(8)属性 serverport 为数据接收服务器的服务端口。(9)属性 storefile 为数据发送失败的临时存储文件。目录采用使用上面指定的备份目录。4.1.3 类详细说明4.1.3.1
41、类 CollectionLaunchor 类 CollectionLaunchor 的主要功能是:采集主程序类,发动采集线程。在此类中包含的函数如下: 一一一一 ColectionThread th=new ColectionThread一一一一 th.start();图 4-2 Main 函数流程图(1)Main 函数 该函数为客户端数据采集功能板块的程序入口,运行之前需要把客户端的配置文件相关信息按要求正确配置。该函数主要负责创燕山大学本科生毕业设计(论文)15建 CollectionThread 类的线程对象,并调用 run 函数启线程。Main 函数流程如图 4-2。该启动器可以由用户
42、发起为一个后台服务,也可以由操作系统为 UNIX 的客户端的定时服务发起,课题在后期会设计一个测试界面,因此采用用户发起的方式。用户后台服务发起的方式只需要把线程的运行方式改变成循环就可以。而 UNIX 客户端定时服务则更方便一些。4.1.3.2 类 CollectionThread 类 CollectionThread 采集线程,负责启动采集过程。封装一个采集线程。该类主要调用采集器类 DataCollector 进行数据采集。该类继承 JDK的 Thread 类。该类包含函数如下:(1)run 函数 该函数的主要任务就是创建 DataCollector 对象,并调用其 collection
43、 函数进行数据采集。该函数是 Thread 的 run 函数的覆盖函数,即重写了该父类函数。run 函数流程说明: 一一DataColector一一一一一一一一一一colect一一一一一一一一return图 4-3 run 函数流程图(2)start 函数 该函数负责启动线程,来自 Thread 线程类,该函数继承自 JDK 标准类 Thread。该线程是否循环决定采集器启动的方式是否利用客户端操作系统的定燕山大学本科生毕业设计(论文)16时启动功能,如果采用客户端操作系统的定时功能,则该线程采集完毕自动关闭清空。4.1.3.3 类 DataCollector 类 DataCollector
44、负责采集环境的处理与数据采集,分析处理。所有的采集任务有该类完成,主要获取本机 IP,复制备份并清空日志文件,读取日志文件,解析日志文件,匹配处理日志登录/登出记录获取用户登录时间,在线用户下次匹配。该类中包含的函数如下:(1)getNativeIP 函数 该函数负责读取要采集服务器的 IP 地址,该 IP值由属性文件进行配置。此函数的返回值类型为 String 类型,即 IP 字符串。(2)initlog 函数 该函数负责调用 Runtime 执行 mv shell 指令进行日志文件的备份并清空原始文件。备份的文件名 wtmpx+年(4 位)+月(2 位)+日(2位)+时(2 位) ,例如:
45、wtmpx2009053013。该函数的返回值类型为 String 类型,返回的是采集数据源的备份文件路径。在利用客户端 Unix 操作系统的Kernel 函数读取的时候,该文件必须采用 x 结尾,在本系统中由于用 java进行处理就不需要这样操作。(3)mappingLogBuffer 函数 该函数主要把作为参数传入的备份的日志文件映射为本地内存缓冲,便于后面解析。返回值为 MappedByteBuffer 类型,即内存缓冲。(4)parseLogBuffer 函数 负责解析缓冲的内存结构,利用参数返回两个 Vector 结构对象,一个存放登录数据,一个存放登出数据。其中,3 个参数分别为:
46、MappedByteBuffer logbuffer 要解析的本地内存缓冲;Vector logins 返回解析后的登录数据;Vector logouts 返回解析后的登出数据【参考】数据登录登出的判别标准。#define EMPTY 0#define RUN_LVL 1#define BOOT_TIME 2燕山大学本科生毕业设计(论文)17#define OLD_TIME 3#define NEW_TIME 4#define INIT_PROCESS 5#define LOGIN_PROCESS 6 -登录进程#define USER_PROCESS 7 -用户进程#define DEAD_
47、PROCESS 8 -终止进程(5)activate 函数 负责把上次未匹配的数据读取为 Vector 结构。便于后面匹配。参数是存放上次未匹配的登录日志记录,返回 Vector 结构,其中元素类型 LogRecord。其参数 loginFilename 是保存上次未匹配的数据的文件名。该文件在属性配置文件中设置。返回值类型为 Vector为上次未匹配的所有登陆数据。(6)match 函数 负责匹配登录/登出数据,并返回用户登录时间数据。参数是两个 Vector 类型的登录 /登出数据结构,元素类型是 LogRecord,返回的是匹配好的用户登录时长记录,数据类型是 Vector,其中元素类型
48、是MatchedRecord,详细说明请 参考 MatchedRecord 类的说明。返回值表示匹配生成的用户登录时长数据。(7)passivate 函数 负责把这次没有匹配好的登录记录保存成文件,以便下次采集的时候匹配。参数是没有匹配好的登录记录,类型是 Vector,其中元素类型是 LogRecord。(8)collect 函数 负责整个采集过程。这是该类中的唯一的一个 public函数,主要供采集线程调用。4.1.3.4 类 LogRecord LogRecord 类,负责登录/登出数据封装。该类中有四个属性,其中 user 为登陆用户的用户登录名;visittime 为用户登出时间和登
49、录时间的时间间隔,即为在线时间;userip 是登录用户的客户端主机的 IP 地址,以备扩展程序,用于统计使用用户的区域; labip为实验室服务器的 IP 地址。4.1.3.5 类 MatchedRecord MatchedRecord 类,负责匹配好的数据的封装。所谓匹配好的数据,就是用户一次登录与登出为一对对应数据。此对数据需符合一定条件,比燕山大学本科生毕业设计(论文)18如,登出时间必须大于登录时间等。该类中拥有 6 个属性和其所对应的 GETTERS 和 SETTERS,其中 user为登录用户名;logintime 为用户登录时间;logouttime 为用户登出时间;labip 为实验室服务器 IP 地址;userip 为用户的 IP 地址;duration 为用户登录的时长数据。4.1.3.6 接口 CollectionListener CollectionListener 接口,对于软件开发人员而言,一个好的程序设计应该是面向接口编程,即为抽象编程 1