




已阅读5页,还剩56页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本科毕业设计(论文)基于JAVA开发的电信IP计费系统赵宝华燕 山 大 学2009年06月本科毕业设计(论文)基于JAVA开发的电信IP计费系统学院(系): 电子工程系 专 业: 电信05-4班 学生 姓名: 赵宝华 学 号: 051304021077 指导 教师: 卢辉斌 张新钊 答辩 日期: 2009年6月17日 燕山大学毕业设计(论文)任务书学院:信息科学与工程学院 系级教学单位:电子与通信工程学号051304021077学生姓名赵宝华专 业班 级电信05-4班题目题目名称基于JAVA开发的电信IP计费系统题目性质1.理工类:工程设计 ( );工程技术实验研究型( );理论研究型( );计算机软件型( );综合型( )2.管理类( );3.外语类( );4.艺术类( )题目类型1.毕业设计( ) 2.论文( )题目来源科研课题( ) 生产实际( )自选题目( ) 主要内容1系统功能板块分析设计及用例分析2数据库设计3客户端数据采集功能设计4服务器端数据采集和数据整合功能5数据源模拟设计和测试的GUI设计基本要求1学习面向对象思想,深入理解封装、继承和多态2学会使用UML做系统分析,会使用IBM Rational Rose 工具3掌握Java类库中的常用类和方法,以及熟练使用Eclipse开发工具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的使用;学习面向对象的思想和编程技巧,学习使用ROSE工具,进行项目分析学习图形开发、多线程开发、SOCKET编程等;学习MYSQL、JDBC等数据库相关知识,并进行数据库规划系统的详细设计,以及功能更板块的划分,用例分析系统的编码实现,以及编码后的演示和调试编写毕业论文指导教师:卢辉斌职称:教授 2009年2月27日系级教学单位审批: 年 月 日燕山大学本科生毕业设计(论文)摘要电信运营系统中,电信计费系统是主要的支撑系统,占有重要地位。对于电信计费系统是电信运营商的核心竞争力之一这一观点愈来愈被业界认同。电信计费系统中的数据蕴含着企业经营态势、客户群分布特征及消费习惯、各项业务发展状况等丰富而极具价值的信息,对这些数据进行充分的分析,可以为运营商的领导决策层了解用户需求,制定市场策略提供有力的支持。本课题是研究基于JAVA开发的电信IP计费系统。在设计中,采用了UML统一建模语言进行系统分析,运用了JAVA网络编程以及多线程编程,并选择MySQL作为数据库支持。功能上主要分为三大板块:客户端数据采集系统、服务器端采集系统和数据整合系统。关键词电信;计费;JAVA;UML;数据采集 燕山大学本科生毕业设计(论文)AbstractIn Telecom Systems, Telecom Billing System is the main support system, which 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 habits, 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 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 data collection system, server data collection system and integration system.Keywords Telecom; Billing; JAVA; UML; Data Collection目 录摘要IAbstractII第1章绪论11.1课题背景11.2课题国内现状21.3课题研究意义31.4本课题研究内容和结构编排3第2章计费系统开发环境介绍52.1JAVA程序设计语言介绍52.2ORACLE数据库和MySQL数据库62.2.1ORACLE数据库62.2.2MySQL数据库62.3建模工具和集成开发环境72.3.1IBM Rational Rose UML建模工具72.3.2Eclipse 集成开发环境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章系统详细设计144.1客户端数据采集144.1.1客户端数据采集设计类图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系统演示程序设计说明275.2.2显示界面及说明275.3本章小结31结论32参考文献33致谢34附录135附录239附录342II燕山大学本科生毕业设计(论文)第1章绪论1.1课题背景电信计费的广义概念是:从用户使用电信业务开始,到用户最终完成缴费的全过程。具体可分为两个阶段:第一阶段为交换机计费,以电话为例,用户开始通话到通话结束,交换机复式计次过程完成或交换机将主叫、被叫、通话时长等实时记录的过程;第二阶段为后台计费账务处理,即把采集到的交换机记录的用户呼叫信息经过预处理、过滤、划价、累计求和,形成用户账单,到最终完成缴费并销账的过程。后台计费账务处理系统就是一般定义的电信计费系统。电信计费系统是随着电信产业和计算机产业的发展而不断成长起来的,特别是随着交换机技术和计算机技术的不断进步而不断完善的。在人工交换时期,市话计费采用包月制,长途按距离和通话时长采用人工计费方式完成,使用的工具是笔和算盘或计算器。随着半自动、全自动交换机的采用,特别是八十年代中期和九十年代程控交换机的大量引进,通信能力的迅速扩大,电信用户及电信业务量的急剧增长,迫使人们改变传统的人工计费方式。进入八十年代,计算机技术有了突破性的进步,基于集成电路技术的小型机、大型机和PC机相继问世,用计算机取代笔和算盘作为电信计费的工具成为可能。这时候才形成了真正意义的电信计费系统。电信计费系统的建设初期,由于计算机硬件性能的限制,软件开发成本和难度的过高,以及电信运营者服务意识和竞争意识的淡漠,只能以自动化为目标,以算费、计帐和收费的简单功能实现。这样的简单功能,不能跟上电信业务的发展变化,不能满足用户的服务需求,更不能适应市场经济下竞争的环境。随着计算机技术和数据库技术的发展,软件产业的日趋成熟,计算机投资成本的下降,使电信计费系统朝着灵活化、复杂化、全面化方向发展成为可能。与此同时,由于市场竞争的形成,用户服务需求的扩大,电信运营商也迫切需要这样的计费系统。电信计费系统实时性的建设:由于交换机与计算机接口技术的不一致性或由于交换机型复杂,操作难度大等问题的限制,计费系统初期基本采用磁带脱机处理方式,一个月脱一次或数次磁带。这种非实时处理方式造成客户不能及时查询,计费数据不及时,不能开展短期租机业务,不能临时出帐,不能及时决策,容易造成恶意欠费等问题。随着交换机技术的计算机化,和各种接口协议标准的形成,使得联机实时采集计费系统成为当今计费系统尊崇的时尚。电信计费系统集中性的建设:由于早期数据网络的匮乏和经营体制的限制,电信公司基本采用分散的计费系统,系统之间彼此都不联网。随着DDN、ATM帧中继数据通信技术的采用,使得计费系统联网成为现实。与此同时,集中化的计费系统由于有利于提高企业的市场竞争力,而越来越被电信运营者采用。电信计费系统的综合性的建设:由于早期电信业务只是电话业务,计费系统是针对单一业务。随着智能、增值业务、数据多媒体业务以及Internet业务的出现,计费系统从单一业务正向具备综合业务的计费系统转移1。1.2课题国内现状近二十年来,中国电信业的发展建设始终超前于国民经济,呈跳跃性、超常规发展趋势。电信网络的规模、密度、电信设备的安装、客户群的发展都有了突破性的进展。在看到电信业取得重大成绩的同时,也应该注意到:在计划经济体制下,多年以来,电信行业的主要矛盾是通信能力不足,因此注重网络建设,提高通信能力始终是各地电信企业工作的重中之重;电信行业独家经营,处于卖方市场,对市场感受的压力很小,对于计费系统进行大规模投资建设的紧迫感不强;计费系统投资建设后直接经济效益不明显,投资回报难以评估,投资决策难以形成。这些都导致了电信计费系统的建设始终滞后于网络的建设和通信能力的增长。针对计费系统严重落后问题,中国电信于1996年起着手研究电信计费统的升级、改造问题。中国电信首先对原有的计费系统进行了调查、研究和分析,对国外计费系统的建设进行了考察,然后形成了中国电信计费系统的体制、技术和业务规范和中国电信计费系统“三级计费体制”的建设管理思路。中国电信三级计费体制,是根据中国电信本身网络规模大、经营区域广的特点,总结了多年来的运营经验和教训,吸取了电信管理网TMN的相关理论,而制定出的符合中国电信实际情况具有中国电信特色的计费体制。中国电信三级计费体制和各级的职责如下:全国计费结算中心工作的重点之一是结算,包括集团各子公司相互间的结算、与国内其他电信运营商的结算摊分、以及与国际电信运营商的结算等;之二是计费,包括全网性的电信业务的计费、具有集中性质的且竞争激烈业务的计费;之三是对计费结算数据进行分析并提供经营分析报告。随着电信市场竞争的加剧,电信运营商的增多,互联互通的增加,对于需要集中处理的业务将会越来越多。全国计费结算中心将会越来越显示出其重要性2。1.3课题研究意义电信计费系统发展的另一个重要趋势是朝着个性化、多样化的客户服务方向发展。今后的计费系统应能够向用户提供不同形式的客户账单、不同的缴费方式、不同的费用查询方法、不同的缴费周期,甚至可以为用户提供定制的电信计费服务3。对于电信计费系统是电信运营商的核心竞争力之一这一观点愈来愈被业界认同。电信计费系统中的数据蕴含着企业经营态势、客户群分布特征及消费习惯、各项业务发展状况等丰富而极具价值的信息,对这些数据进行充分的分析,可以为运营商的领导决策层了解用户需求,制定市场策略提供有力的支持4。1.4本课题研究内容和结构编排本课题研究的内容是针对某电信运营商新增一项开放实验室出租业务,即该电信运营商提供基于Unix平台的实验室环境,选择使用这种业务的用户能够远程登录到实验室中做基于这个实验室环境的一些工作和实验。对这一系统模式进行数据采集和数据整合,实现IP计费。本课题的结构安排如下:第一章为绪论部分,系统的介绍了,电信计费系统的背景和发展趋势,并针对国内电信业现状分析本课题的研究意义所在。第二章为系统开发环境的选择和介绍,本课题选用了JAVA语言做开发,JAVA程序设计语言是目前最流行的语言,相较C/C+,PHP等主流语言,JAVA有着“解释型的,健壮安全的,结构中立的,可移植的,性能优异的”等优点。另外还对选用MySQL数据库进行了分析第三章为电信IP计费系统分析,从宏观角度和功能划分的角度对系统整体进行分析。采用UML统一建模语言,用Rational Rose工具进行各功能板块用例分析。第四章是本课题的重点章节,为系统的详细设计。较为详细的分析各功能板块实现所用的类结构和方法等。第五章为本课题的演示说明章节,为了实现本课题在单台PC上调试方便,特增加了数据源模拟设计和演示图形界面设计。50第2章计费系统开发环境介绍2.1JAVA程序设计语言介绍 Java是一种简单的,面向对象的,分布式的,解释型的,健壮安全的,结构中立的,可移植的,性能优异、多线程的动态语言5。(1)Java是纯面向对象编程的语言,对于本系统中的用户进行抽象是很容易理解的;(2)Java可移植性强,Java程序运行在特定的虚拟机上,只要在安装了这样的虚拟机上的机器,不管是Windows系统还是Unix系统,甚至是其他系统,Java程序不需再次编译,都可以运行。Java创造了“一次编译,到处运行”的神话;(3)Java是可收集无用的存储单元。用C或C+编写软件的编程人员必须仔细跟踪所用的内存块。当一个内存块不再使用时,他们务必让程序释放它,之后方可再用。在大的项目中,这可能就非常困难,且往往成为出错和内存不足的致命根源。 在Java的情况下编程人员不必为内存管理操心。Java 统有一个叫做“无用单元收集器”的内置程序,它扫描内存,并自动释放那些不再使用的内存块;(4)Java是可扩展的。Java 程序可与用其它语言编写的现存程序库连接。由于Java 数据结构C的数据结构的类型极为相似,这给Java移植造成了非常大的方便。并且最大的问题在于,现在有多线程程序库为数不多。Java 程序可以声明某些方法是内部的,然后,把这些内部方法映射成软件库所定义的功能,从而动态地链接到虚拟机。Java分为三个版本:(1)Java SE(Java2 Platform Standard Edition,java平台标准版);(2)Java EE(Java 2 Platform, Enterprise Edition,java平台企业版);(3)Java ME(Java 2 Platform Micro Edition,java平台微型版)。本系统设计采用的Java SE 6.0版本。2.2ORACLE数据库和MySQL数据库2.2.1ORACLE数据库目前业内和JAVA结合非常良好的数据库有:ORACLE数据库和MYSQL数据库。首先,ORACLE作为目前市场份额占有率最大、最流行的数据库。它有很多优势:(1)能在所有主流平台上运行(包括Windows)。完全支持所有的工业标准。采用完全开放策略。可以使客户选择最适合的解决方案。对开发商全力支持。(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语言的结合更是有利。所以,对于本系统而言,ORACLE数据库应该是首选。2.2.2MySQL数据库但是,由于ORACLE体积过大,本课题作为设计性实践课题选择了较小较轻便的MYSQL数据库。MySQL是一个小型关系型数据库管理系统。在2008年1月16号被SUN公司收购。目前MYSQL被广泛地应用在Internet上的中小型网站中。其特点如下:(1)使用C和C+编写,并使用了多种编译器进行测试,保证源代码的可移植性。(2)支持AIX、FreeBSD、HP-UX、Linux、Mac OS、Novell Netware、OS/2、Solaris、Windows等多种操作系统 (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.1IBM Rational Rose UML建模工具统一建模语言(UML,Unified Modeling Language)是非专利的第三代建模和规约语言。UML是一种开放的方法,用于说明、可视化、构建和编写一个正在开发的、面向对象的、软件密集系统的制品的开放方法。UML展现了一系列最佳工程实践,这些最佳实践在对大规模,复杂系统进行建模方面,特别是在软件架构层次已经被验证有效。UML集成了Booch,OMT和面向对象软件工程的概念,将这些方法融合为单一的,通用的,并且可以广泛使用的建模语言。UML打算成为可以对并发和分布式系统的标准建模语言8。IBM Rational Rose 软件是进行UML模型图制作的专用工具9,本课题中的所有功能模块以及用例分析图,全部由此软件制作而成。2.3.2Eclipse 集成开发环境Eclipse是著名的跨平台的自由集成开发环境(IDE)。Eclipse的设计思想是:一切皆插件。Eclipse核心很小,其它所有功能都以插件的形式附加于Eclipse核心之上10。Eclipse基本内核包括:图形API , Java开发环境插件(JDT),插件开发环境(PDE)等。2.4本章小结对于软件设计而言,设计工具的选择是很重要的一个前提。首先,本课题选用了JAVA语言作为设计的基本语言。JAVA具有可移植性、性能优异和多线程等特点,而且JAVA是目前IT业内主流的程序设计语言之首,对于大型工程项目的开发有很大优势。其次,选用了MySQL作为本课题的数据库支持。并对Oracle和MySQL进行了分析比较。最后,描述了UML建模语言的必要性和建模工具Rational Rose,以及对JAVA程序设计的集成开发环境Eclipse。第3章电信IP计费系统分析3.1电信IP计费系统的营运功能结构本课题设计的出发点是某电信运营商新增一项Open Lab(开放实验室)出租业务,即该电信运营商提供基于Unix平台的实验室环境,选择使用这种业务的用户能够远程登录到实验室中做基于这个实验室环境的一些工作和实验。运营商希望借助先进的计算机技术对访问实验室的用户进行管理和计费,由此实现对此项业务运营的支持与管理。本项目主要包括以下子系统:图3-1计费系统的营运功能结构(1)采集系统(2)整合系统(3)用户管理系统(4)资费管理系统(5)管理员管理系统(6)账单查询系统(7)账务查询系统(8)用户自服务系统(9)权限管理系统3.1.1采集系统本系统是一个计费的系统,要想对用户进行准确的收费,首先必须能够获得用户使用开放实验室的准确的使用记录,采集子系统正是为了获取这些记录而提供的。Unix服务器本身就具有记录系统日志的功能11。用户每次登录和退出Unix服务器的信息都会被自动保存到一个在线日志文件/var/adm/wtmpx中。采集系统通过调用Unix系统函数来读取这个日志文件中的内容,然后对读取到的内容进行整理,整理为方便计费的数据,其中包括登录名、登录时间或登出时间等作为计费依据的数据。最后把这些数据存入数据库中,以备其他系统使用。为了使读取的数据量不至于过大,采集系统会每小时定时执行一次,每次只采集上一个小时时间段之内的数据。3.1.2整合系统采集系统定时将用户使用服务器的数据存入到了数据库中,但这些数据都是流水账的数据,是用户每次使用UNIX操作系统的用时。如果用户量大,用户频繁地登入/出,将产生大量的数据,不便于将来生成用户的月账单和对开放实验室的使用情况进行月统计和年统计,因此,出现了整合系统。整合是将某个用户在某一时段内所用机时求和后形成一条记录。整合系统具体整合规则如下:(1)每小时定时整合一次,生成以小时为单位统计的数据,程序总是每小时定时整合前一小时的数据。(2)每天定时整合一次,生成以天为单位统计的数据,程序总是每天定时整合前一天的数据。(3)每个月定时整合一次,生成以月为单位统计的数据,程序总是每个月定时整合前一个月的数据。3.1.3其他系统说明由于本课题重点设计的后台数据服务部分,而其它7个功能板块系统均属于前台运营和前台用户服务。这两部分的设计模式为B/S模式。使用的语言为JSP脚本语言,同时使用了Hibernate插件和Struts框架等技术。由于不是本课题的设计重点,在此就不过多赘述。3.2后台数据服务功能模块分析3.2.1后台数据服务系统部署图3-2后台系统部署图示图3-2中,左侧3个模块是用于出租的Unix服务器,在本系统中作为数据采集的客户端。中间模块为服务器用于采集来自客户端的采集数据,并进行数据整合以及采集备份处理,是本系统的核心处理部分。另外,右侧模块为数据库的服务器,即本系统中所用的MYSQL数据库服务器。需要说明的是,服务器端采集服务器和数据库服务器可部署在同一个服务器中。3.2.2后台数据服务系统用例分析客户端数据采集用例说明用例名称:数据采集客户用例简述:(1)读取日志文件,并且清空日志;(2)从读取的数据中解析用户登录时间等信息;(3)把解析的用户登录时间数据发送到服务器;(4)如果发送失败,就存储在实验室上等下次发送。参与者:系统管理人员前置条件:需要root权限后置条件:日志文件被备份后清空图3-3后台数据服务系统用例分析图服务器端数据采集用例说明用例名称:数据采集服务器用例简述:(1)接受各客户采集程序发送的数据;(2)接受失败,请求客户端重新发送;(3)根据时间存储到相应的数据表。参与者:系统管理员服务器端数据整合用例说明用例名称:数据整合用例简述:(1)每小时按用户业务整合一次用户登录时间数据。(2)每天按用户业务整合一次用户登录时间数据。(3)每月按用户业务整合一次用户登录时间数据。(4)每小时按实验室服务器整合一次用户使用的时间数据。(5)每天按实验室服务器整合一次用户使用的时间数据。(6)每月按实验室服务器整合一次用户使用的时间数据。参与者:系统管理员前置条件:无后置条件:产生整合数据。3.3本章小结本章从功能划分的角度对系统进行了分析。首先,从整体性考虑,系统分为前台用户服务和后台数据服务两部分。每一部分都包含各自不同的具体功能板块。本课题重点研究后台数据整合部分,进行了详细的说明。而前台用户服务部分没有过多赘述。其次,后台数据整合部分主要包括:客户端数据采集,服务器端数据采集和数据整合三大功能板块。对本课题计费系统进行了系统部署分析和用例分析。第4章系统详细设计4.1客户端数据采集4.1.1客户端数据采集设计类图图4-1客户端数据采集类图在客户端数据采集板块中,共涉及5个类和1个接口及其相应的实现类,有类CollectorLanchor,CollectionThread,DataCollector,LogRecord,MatchedRecord,接口CollectionListener,其实现类为LogDeaker。4.1.2客户端数据采集配置文件说明为了保证系统的灵活性,在该系统中把服务器和客户端有关的参数都通过属性文件配置,由程序动态读取。该配置文件的文件名确定为unix_perties。在此配置文件当中需要配置的属性说明如下:(1)属性interval 默认值为60,代表采集的间隔时间,单位为分钟。(2)属性ip 值为相对应客户端的IP地址。(3)属性sourcefile 为采集的源的文件名。(4)属性destinationpath 为采集源的备份目录。(5)属性command 是数据源被采集的时候,先移动到备份目录,这个属性设置数据源文件移动的SHELL指令或DOS指令。(6)属性historyfile 存储历史记录到history.dat文件中。由于在采集的时候由于用户正在登录中,还没有登出,所以无法处理这种数据,这就是不能匹配成对的数据。这些数据必须保存起来,在下次采集的时候用来匹配,这个属性就是设置没有匹配成功的数据的保存文件名。该属性只指定文件名,目录采用上面指定的备份目录。(7)属性serverip 为数据接收服务器的IP地址。(8)属性serverport 为数据接收服务器的服务端口。(9)属性storefile 为数据发送失败的临时存储文件。目录采用使用上面指定的备份目录。4.1.3类详细说明类CollectionLaunchor 类CollectionLaunchor的主要功能是:采集主程序类,发动采集线程。在此类中包含的函数如下:图4-2Main函数流程图(1)Main函数该函数为客户端数据采集功能板块的程序入口,运行之前需要把客户端的配置文件相关信息按要求正确配置。该函数主要负责创建CollectionThread类的线程对象,并调用run函数启线程。Main函数流程如图4-2。该启动器可以由用户发起为一个后台服务,也可以由操作系统为UNIX的客户端的定时服务发起,课题在后期会设计一个测试界面,因此采用用户发起的方式。用户后台服务发起的方式只需要把线程的运行方式改变成循环就可以。而UNIX客户端定时服务则更方便一些。类CollectionThread 类CollectionThread 采集线程,负责启动采集过程。封装一个采集线程。该类主要调用采集器类DataCollector进行数据采集。该类继承JDK的Thread类。该类包含函数如下:(1)run函数该函数的主要任务就是创建DataCollector对象,并调用其collection函数进行数据采集。该函数是Thread的run函数的覆盖函数,即重写了该父类函数。run函数流程说明:图4-3run函数流程图(2)start函数该函数负责启动线程,来自Thread线程类,该函数继承自JDK标准类Thread。该线程是否循环决定采集器启动的方式是否利用客户端操作系统的定时启动功能,如果采用客户端操作系统的定时功能,则该线程采集完毕自动关闭清空。类DataCollector 类DataCollector负责采集环境的处理与数据采集,分析处理。所有的采集任务有该类完成,主要获取本机IP,复制备份并清空日志文件,读取日志文件,解析日志文件,匹配处理日志登录/登出记录获取用户登录时间,在线用户下次匹配。该类中包含的函数如下:(1)getNativeIP函数该函数负责读取要采集服务器的IP地址,该IP值由属性文件进行配置。此函数的返回值类型为String类型,即IP字符串。(2)initlog函数该函数负责调用Runtime执行mv shell指令进行日志文件的备份并清空原始文件。备份的文件名wtmpx+年(4位)+月(2位)+日(2位)+时(2位),例如:wtmpx2009053013。该函数的返回值类型为String类型,返回的是采集数据源的备份文件路径。在利用客户端Unix操作系统的Kernel函数读取的时候,该文件必须采用x结尾,在本系统中由于用java进行处理就不需要这样操作。(3)mappingLogBuffer函数该函数主要把作为参数传入的备份的日志文件映射为本地内存缓冲,便于后面解析。返回值为MappedByteBuffer类型,即内存缓冲。(4)parseLogBuffer函数负责解析缓冲的内存结构,利用参数返回两个Vector结构对象,一个存放登录数据,一个存放登出数据。其中,3个参数分别为:MappedByteBuffer logbuffer 要解析的本地内存缓冲;Vector logins返回解析后的登录数据;Vector logouts 返回解析后的登出数据【参考】数据登录登出的判别标准。#define EMPTY0#define RUN_LVL1#define BOOT_TIME2#define OLD_TIME3#define NEW_TIME4#define INIT_PROCESS5#define LOGIN_PROCESS6-登录进程#define USER_PROCESS7-用户进程#define DEAD_PROCESS8-终止进程(5)activate函数负责把上次未匹配的数据读取为Vector结构。便于后面匹配。参数是存放上次未匹配的登录日志记录,返回Vector结构,其中元素类型LogRecord。其参数loginFilename是保存上次未匹配的数据的文件名。该文件在属性配置文件中设置。返回值类型为Vector为上次未匹配的所有登陆数据。(6)match函数负责匹配登录/登出数据,并返回用户登录时间数据。参数是两个Vector类型的登录/登出数据结构,元素类型是LogRecord,返回的是匹配好的用户登录时长记录,数据类型是Vector,其中元素类型是MatchedRecord,详细说明请 参考MatchedRecord类的说明。返回值表示匹配生成的用户登录时长数据。(7)passivate函数负责把这次没有匹配好的登录记录保存成文件,以便下次采集的时候匹配。参数是没有匹配好的登录记录,类型是Vector,其中元素类型是LogRecord。(8)collect函数负责整个采集过程。这是该类中的唯一的一个public函数,主要供采集线程调用。类LogRecord LogRecord类,负责登录/登出数据封装。该类中有四个属性,其中user为登陆用户的用户登录名;visittime为用户登出时间和登录时间的时间间隔,即为在线时间;userip是登录用户的客户端主机的IP地址,以备扩展程序,用于统计使用用户的区域;labip为实验室服务器的IP地址。类MatchedRecord MatchedRecord类,负责匹配好的数据的封装。所谓匹配好的数据,就是用户一次登录与登出为一对对应数据。此对数据需符合一定条件,比如,登出时间必须大于登录时间等。该类中拥有6个属性和其所对应的GETTERS和SETTERS,其中user为登录用户名;logintime为用户登录时间;logouttime为用户登出时间;labip为实验室服务器IP地址;userip为用户的IP地址;duration为用户登录的时长数据。接口CollectionListener CollectionListener接口,对于软件开发人员而言,一个好的程序设计应该是面向接口编程,即为抽象编程12。具体实现由相应的实现类来完成。此接口在本设计中是作为规范采集好的数据的处理方式。此接口中只包含一个抽象方法deal,是负责对匹配好的数据进行处理。类LogDealer LogDealer类,负责把匹配好的数据做发送处理,如果发送失败,则数据被保存。该类主要实现CollectionListener接口,并重写其抽象方法。此类在客户端数据采集设计中是十分重要的,对采集数据的处理也是本设计的重点内容之一。其算法设计的好坏会从某种程度上影响程序质量的好坏。本类中所包含的重要函数如下:(1)函数init此方法主要任务是初始化服务器参数,服务器参数使用属性文件配置,主要包含ip(IP地址),port(服务器端口),destination(采集源备份目录),storefile(存储文件位置)。(2)函数initSocket此方法主要为初始化网络连接,如果初始化失败,则产生异常13。(3)函数send主要负责数据发送,该方法调用前先读取历史发送失败数据并合并。其中,参数ObjectOutputStream为发送数据的网络流。(4)函数receive接收服务器发送过来的标记。为避免数据发送失败产生数据丢失,服务器接收数据保存成功后发送一个成功标记,给客户采集点。此函数即负责接收该标记。如果接收成功返回0,否则是失败。(5)函数store当数据发送若干次失败后,客户采集点就会把数据存储到临时文件中,在下次采集的时候再读取出来合并发送,该函数就是把发送失败的数据保存到临时文件中。(6)函数load发送失败的数据被临时保存起来,便于下次发送。该函数就是加载上次未发送成功的数据。(7)函数deal该函数重写了实现接口中的抽象函数deal,是共有函数。封装整个发送过程。4.2服务器端数据采集4.2.1服务器端数据采集设计类图图4-服务器端数据采集设计类图在本系统中,服务器需要完成两项主要任务,其一就是数据采集,即采集来自数据采集点的数据,其二就是进行数据整合。因此本功能板块的设计及实现和数据库的联系密不可分。4.2.2数据库环境参数Port:9999采集的服务器端口Driver:com.mysql.jdbc.Driver数据库驱动程序类名URL:jdbc:mysql:/:3306/netctoss?characterEncoding=gb2312数据库连接URL14User:root数据库连接用户名Password:meiyou数据库连接口令以上参数为默认值,在实际操作中,会提供图形化界面进行修改。4.2.3类详细说明类ServerLauncher ServerLauncher类是服务器数据接受器启动器, 主要负责启动服务器接受线程,即服务器采集程序的入口。本类中只包含一个函数,main函数。其主要任务是创建DataRecieverTh对象,并调用起其start函数启动线程。类DataRecieverTh DataRecieverTh类,服务器接受主线程。是一个线程类,继承JDK的标准线程类Thread。主要负责接受客户连接,并为每个客户启动一个数据接收线程来进行客户数据接收。本类中有两个成员属性,其中,collectionth定义的一个Vector的数据结构,便于管理每个客户采集点,serversocket表示服务器Socket对象。还包含如下函数:(1)函数initSocket负责网络服务器的初始化。(2)函数run覆盖Thread中的函数,负责接收客户连接,并建立客户处理线程并启动线程,并在CollectionTh中记录该客户线程处理对象。类CollectionTh CollectionTh类,每个客户数据接收处理类。该类主要接收采集器发送过来的数据,接收成功后发送一个成功标志,然后保存接收的数据。该类继承Thread。类DBEnvInit DBEnvInit类,数据库环境初始化类,该类封装了两个函数工具,完成对数据库的连接。 本类中含有如下三个函数:(1)函数getDBParamter 负责从属性文件读取数据库连接参数。返回类型Properties代表用字符串Hash表的方式返回数据连接参数,包含:驱动类,连接URL,连接帐号,连接口令。(2)函数getConnection 负责根据连接属性打开与数据库的连接,返回类型Connection代表返回一个对数据库的连接。该工具可以提供对数据源的支持。(3)函数insert 负责把接收到的数据插入到数据库。参数detail标示一条用户登录数据。泛型类BasicDAO封装对数据库访问最常用的规范。4.3服务器端数据整合4.3.1服务器端数据整合设计类图图4-5服务器端数据整合设计类4.3.2类详细说明类ServerLauncher ServerLauncher类:整合启动程序类。函数main创建DataIntegratorTh线程对象,并调用run函数启动线程。类DataIntegratorTh DataIntegratorTh类:整合线程,主要完成整合的调用。函数run负责根据整合规则,并调用相应的整合函数对数据进行整合。接口Integration Integration接口:整合接口规范, (1)函数init对整合的规则配置参数进行初始化(2)函数integrate负责根据整合规则,并调用相应的整合函数对数据进行整合。type指按时,天,月三种类型整合。(3)函数release负责释放整合过程中产生的临时数据。类IntegrationByCall IntegrationByCall类:整合的存储过程调用实现,实现Integration接口。类IntegrationByClient IntegrationByClient:整合的Java调用实现。是本课题的实现手段。类IntegrationFactory IntegrationFactory类:利用工厂模式产生的一个类,负责产生整合对象。(1)函数getIntegrationCallDAO该函数目前不实现。(2)函数getIntegrationClientDAO读取配置参数,产生IntegrationByClient对象,并初始化,并返回给该函数的调用者。该函数的设计请参考Java模式设计中构建模式之工厂模式。该模式的好处可以屏蔽具体实现类。返回类型Integration,就是整合对象。与具体的实现类无关。类DBEnvInit
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 承包花岗岩开采合同范本
- 2025年全科医学全科诊疗能力综合测评模拟试卷答案及解析
- 按揭营运车转让合同范本
- 2025版医疗场所室内装饰装修工程施工合同
- 2025年拆迁房产权过户及交易合同范本
- 2025版水电站工程EPC总承包合同书
- 2025房地产项目工程监理与项目管理合同范本
- 2025版智慧农业灌溉系统水渠硬化施工合同
- 2025版航空行业退休技术人员返聘合同范本
- 2025年高标准砌墙劳务与监理合作合同范本
- 工程项目全过程造价管理课件
- 物业保安各岗位培训
- 小学二年级下安全课件
- 《安全管理体系》课件
- 树立正确的人生价值观课件
- 《国际商务单证》课件
- 防腐保温工程监理实施细则
- 园林绿化工知识考试题库及答案
- 法律事务所信息安全管理制度
- 论高校思政教育宏大叙事的有效性建构
- 塔吊拆卸安全专项施工方案
评论
0/150
提交评论