基于分布式平台的农业滴灌系统的设计与实现_第1页
基于分布式平台的农业滴灌系统的设计与实现_第2页
基于分布式平台的农业滴灌系统的设计与实现_第3页
基于分布式平台的农业滴灌系统的设计与实现_第4页
基于分布式平台的农业滴灌系统的设计与实现_第5页
已阅读5页,还剩63页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

长江大学工程技术学院毕业设计(论文)题目名称基于分布式平台的农业滴灌系统的设计与实现系部信息系专业班级计算机科学与技术61002班学生姓名指导教师讲师辅导教师时间2013年9月至2014年6月基于分布式平台的农业滴灌系统的设计与实现[摘要]近几年来,人们对农业滴灌系统的要求越来越高,这导致了传统的农业滴灌系统的业务持续膨胀和功能不断增加,原有的系统架构无法满足水平和垂直扩展,同时也难以达到性能要求。因此,需要设计出一种新型的分布式平台的农业滴灌系统来解决这些问题。本系统的研究目标就是要提出一个在J2EE技术下构建基于分布式平台的农业滴灌系统的设计模型和解决方案。J2EE技术提供了开发分布式应用的底层服务支持。本文给出了一个四层的设计模型,它包括客户层、Web层、EJB层和数据层。以面向业务应用系统的负责需求和性能为对象设计并且实现一套通用分布式服务框架,致力于提供高性能和透明化的RPC(RemoteProcedureCall)、基于Mysql的RDBMS(RelationalDatabaseManagementSystem)及Memcached的分布式处理方案。由于开发多层结构的分布式应用系统的过程中,开发人员势必会面临如何解决各层之间的耦合现象、提高整个系统的灵活性和运行效率等关键性的问题。为此,在设计模型中又引入了设计模式的概念。这能使新的需求功能在高版本中能快速得到响应,同时降低其对框架本身稳定性的影响。在设计方面,遵循API(ApplicationProgrammingInterface)和扩展接口职责单一、友好的CoC(ConventionoverConfiguration)约定和增量式扩展等原则。在测试方面,结合版本约定进行迭代开发和功能回归测试,同时对其性能进行压力测试。最后将该框架运用于农业滴灌系统开发和运营。[关键词]分布式;农业滴灌;EJB;Memcached;Mysql;设计模式TheDesignandImplementofAgriculturalIrrigationSystemBasedonDistributedStudent:DengJie,DepartmentofInformationSupervisor:WangJuehui,DepartmentofInformation[Abstract]Inrecentyears,theagriculturalirrigationsystemoftheincreasinglyhighdemand,whichledtotheagriculturalirrigationsystem,thetraditionalbusinesscontinuestoexpand,andfunctionsareadded,thesystemcannotmeetthehorizontalandverticalextension,butalsodifficulttoachievetheperformancerequirements.Therefore,weneedtodesigntheagriculturalirrigationsystem,anoveldistributedplatformtosolvetheproblem.ThegoalofthissystemistoputforwardadesignmodelofagriculturalirrigationsystembasedondistributedplatformsandsolutionsinJ2EEtechnology.ProvidestheunderlyingservicedevelopmentofdistributedapplicationsinsupportofJ2EEtechnology.Thispapergivesafourlayerdesignmodel,whichincludesclientlayer,Weblayer,EJBlayeranddatalayer.Todemandandisresponsiblefortheperformanceorientedbusinessapplicationsystemastheobjecttodesignandimplementageneralframeworkfordistributedservices,iscommittedtoprovidehighperformanceandtransparentRPC(RemoteProcedureCall),MysqlbasedRDBMS(RelationalDatabaseManagementSystem)distributedprocessingschemeandMemcached.Becausetheprocessofdistributedapplicationsystemdevelopmentofmulti-layerstructure,developerswillfacehowtosolvethecouplingphenomenonbetweenthelayers,improvingtheflexibilityandtheefficiencyofthewholesystem,thecriticalissueof.Therefore,inthedesignmodelandintroducestheconceptofdesignpatterns.Thiscanmakethefunctionofthenewdemandforrapidresponsecanbeobtainedinthehighversion,whilereducingitseffectonstabilityoftheframeworkitself.Inthedesign,accordingtotheAPI(ApplicationProgrammingInterface)andtheextendedinterfacesingleresponsibility,friendlyCoC(ConventionoverConfiguration)agreementandtheincrementalexpansionprinciple.Inthetest,withtheversionagreedtoiterativedevelopmentandfunctionalregressiontesting,andstresstestsonitsperformance.Theframeworkusedinagriculturalirrigationsystemsdevelopmentandoperations.[Keywords]Distributed;AgriculturalIrrigation;EJB;Memcached;Mysql;DesignPattern目录任务书……………………Ⅰ开题报告…………………Ⅱ指导教师审查意见………………………Ⅲ评阅教师评语……………Ⅳ答辩会议记录……………Ⅴ中文摘要…………………Ⅵ外文摘要…………………Ⅶ1前言……………………12选题背景……………12.1分布式平台的农业滴灌系统的概念…………12.2农业滴灌系统平台搭建………12.3现有农业滴灌系统平台问题分析……………32.4课题的提出……………………52.5论文主要功能内容与组织结构………………63方案论证……………83.1分布式数据服务………………83.2分布式数据存储………………94过程论述……………134.1系统总体设计…………………134.2系统详细设计与实现…………185结果分析………………355.1测试环境………………………355.2测试程序与测试界面设计……………………355.3测试分析项目结果……………426总结……………………43参考文献…………………44致谢………………………45附录………………………46基于分布式平台的农业滴灌系统的设计与实现1前言基于分布式平台的农业滴灌系统是网络化、信息化、智能化等有机结合的新型滴灌平台。分布式平台的农业滴灌系统搭建可以提升传统滴灌的效率,拓展其功能。但是,一个区域往往拥有多块农田,而且各个区域相对来说比较分散,少则几公里,多则几十公里。现有的农业滴灌系统,是在区域相对集中,网络建设已经相当完善的基础和前提下进行设计开发的,这种集中式的农业滴灌系统容易产生信息孤岛[1],在新的的环境并不适用。因此,构建新的分布式平台的农业滴灌系统势在必行。本文研究了基于分布式平台的农业滴灌系统解决方案。在对分布式数据服务、分布式数据存储分析的基础上,提出了分布式平台的农业滴灌系统总体架构;并针对区别于集中式平台设计遇到的一些问题,进行了分析并提出了解决方案;完成了分布式平台的农业滴灌系统中接口的设计,业务逻辑的实现;构建了分布式平台的农业滴灌系统客户端测试程序,并进行了系统测试与结果分析。2选题背景2.1分布式平台的农业滴灌系统的概念分布式平台的农业滴灌系统是近几年在国内出现的一个名词,它是一个网络化、信息化、智能化、高度应用化等有机结合的新型滴灌,它是以网络为基础,利用信息化手段和工具,实现从环境、资源的全部分布式化[2]。同时,它是指对现有独立运行的农业滴灌系统的整合,统一技术与规范,达到基础信息的互相兼容,资源合理配置,数据共享目标的手段。2.2农业滴灌系统平台搭建为了达到上述系统整合、数据共享等目标,需要建立一个统一的管理平台,这个平台就称之为分布式平台的农业滴灌系统。分布式平台的农业滴灌系统功能包括:表1滴灌系统平台的功能名称功能功能说明分布式平台的农业滴灌系统数据共享按照信息化标准存储数据数据传输与交换平台数据访问,数据传输与交换统一门户统一入口,单点登录管理与控制中心核心平台管理与维护目前,农业滴灌系统一般采用三层结构[3]体系来设计,依次分别是:数据存储层、业务逻辑层和表示层。数据存储层保存着系统的各种数据信息;业务逻辑层控制系统的核心业务,并提供数据访问和数据交换的接口;表示层提供人机交互的界面及系统专有的业务逻辑。其中,数据存储层和业务逻辑层合在一起,统称农业滴灌系统。分布式农业滴灌系统结构图如下:气象信息泵房能效地图绘制滴灌控制土壤墒情气象信息泵房能效地图绘制滴灌控制土壤墒情表表示层业务逻辑层业务逻辑层分布式平台的农业滴灌系统分布式平台的农业滴灌系统数据存储层数据存储层图1滴灌系统系统结构(1)数据存储层目前,分布式平台的农业滴灌系统的数据存储层在物理上包括一台或多台服务器,运行大型数据库系统或者其他的数据存储系统。分布式平台的农业滴灌系统需要进行共享的数据,全部在平台的数据存储层保存。(2)业务逻辑层业务逻辑层是数据存储层与各种控制系统之间的中间层。各种业务系统不能直接与数据存储层发生联系,都是通过业务逻辑层的接口与数据存储层进行数据访问和数据交换。目前的分布式平台的农业滴灌系统的业务逻辑层在物理上是一台或若干台应用服务器的集群[4],经常使用的应用服务器中间件有:IBM公司的Websphere、BEA公司的Weblogic、开源项目的JBoss、微软公司的.Net。2.3现有农业滴灌系统平台问题分析现有的农业滴灌系统,是在区域相对集中,区域网络建设已经相当完善的基础和前提下进行设计开发的。在这里我们把现有的农业滴灌系统称之为:集中式的农业滴灌系统。但是近年来随着农田的不断合并扩充,一个区域往往拥有多块农田,而且各个区域相对来说比较分散,少则几公里,多则几十公里。集中式的农业滴灌系统在这种环境下进行使用,就会有很大的局限性,甚至在应用的过程中会产生很大的问题。这并不奇怪,因为环境已经改变了,原有的平台并不是为这个新的环境量身定做的,当然就不能很好的适应新的应用环境了。在这个新的分布式环境中,集中式的农业滴灌系统主要采用两种部署方案:(1)各个区域平台独立使用这是一种平行部署集中式农业滴灌系统的方案,各个区域间的平台独立部署,独立使用。各个区域的平台没有任何的耦合性和关联性。独立使用的滴灌系统平台的结构图如图所示:控制系统控制系统控制系统数据存储层数据存储层数据存储层数据存储层业务逻辑层业务逻辑层业务逻辑层业务逻辑层区域B表示层表示层区域B表示层表示层控制系统区域A控制系统区域A数据存储层区域C表示层数据存储层区域C表示层业务逻辑层业务逻辑层图2独立使用的滴灌系统平台结构图在这种方案中,各个区域的数据和资源是独立的。由于平台的独立性,不同平台的数据无法交换共享,会产生更大范围的数据信息孤岛。独立的各个区域部署滴灌系统的方案,值可以作为一时的权宜之计,在网络条件得到改善后,需要马上采用新的方案来替代。(2)农业滴灌系统的集中部署在系统逻辑结构上,这种方案和一个区域的集中式农业滴灌系统的部署没什么两样。各个区域的广域网取代了局域网的连接。集中部署的滴灌系统平台结构图如下: 控制系统控制系统数据存储层数据存储层业务逻辑层业务逻辑层表示层区域A表示层区域A表示层控制系统广域网表示层控制系统广域网区域B表示层控制区域B表示层控制系统区域区域C图3集中部署的滴灌系统平台从图中可以看出,在这种方案中,区域B和区域C中的数据全部流向区域A,这给区域A造成了很大的数据压力,若接着增加区域,区域A的数据服务和存储服务很快就会瘫痪,整个系统的瓶颈也很快到来。2.4课题的提出根据上面分析,在多区域存在的情况下,需要设计出一种新型的分布式平台的农业滴灌系统来解决上述的种种问题。因此,本论文旨在设计一个以分布式平台为基础的新型的农业滴灌系统。这个平台既平行分布于各个区域,平台之间又有一定联系,各个区域内大量的数据的访问和交换通过网络来进行。由于这个新型平台的分布式的特点,所以称之为分布式平台的农业滴灌系统。对比于集中式的农业滴灌系统,设计和实现分布式平台的农业滴灌系统,需要解决很多难题,主要有下面几点:(1)数据透明性设计系统中数据存储层的数量不再是一个,其数量应等同于区域的数量。在设计期无法预知区域的实际数量,因此数据存储层的数量也就不能确定,这给业务逻辑层的设计增加了很大的复杂度,应用软件的设计和编制上也就产生了很大的不确定性。数据存储层需要提供给业务逻辑层一定程度的透明性,业务逻辑层需要提供给表示层完全的透明性才能解决这一问题。因此如何解决好两个层次的透明性,在新的分布式平台设计者将是一个重点。(2)冗余数据的设计由于有多个数据存储层,而且新平台的设计目标之一是减少广域网的数据交换量,这就需要设计一定量的冗余数据。但如果冗余数据过于泛滥,会导致上面分析的方案一中的情况发生,大量产生数据二义性的现象;如果冗余数据设计的过少,必然还会产生大量数据通过广域网进行访问交换的情况。因此,如何合理的设计冗余数据是分布式平台设计中的另一个重点。综上所述,分布式平台的农业滴灌系统的设计和实现是一个巨大的挑战,也是一种全新的尝试。本论文将以用户数据分析要点来解决分布式平台的农业滴灌系统设计中面临的上述问题,论文工作也将为类似分布式系统的设计和实现提供借鉴。2.5论文主要功能内容与组织结构2.5.1论文主要工作内容论文工作基于分布式服务、分布式存储,主要工作内容包括:(1)研究了分布式服务技术与分布式存储;(2)分析了分布式平台的农业滴灌系统的透明性特点,完成了各种数据对象及各种应用接口的设计实现工作;(3)构建了农业滴灌系统客户端程序,并进行了系统测试与分析。2.5.2论文组织结构第一章:阐述论文工作背景与研究意义,并进行相关文献综述。第二章:首先简要介绍了农业滴灌系统研究现状,分析了现有农业滴灌系统中存在的问题;进而提出了设计新的分布式平台的农业滴灌系统,对现实难点进行了分析;最后给出了论文的主要工作内容以及论文的章节安排。第三章:深入分析研究了相关的关键技术,是整个论文的技术支撑。第四章:提出系统的总体设计方案。第五章:通过对用户数据透明性分析,设计并实现了系统的数据接口。研究了分布式平台的农业滴灌系统的数据分布特点,提出了数据迁移的规则和算法,并在分布式平台中加以实现。第六章:在局域网与广域网中对所设计实现的分布式平台的农业滴灌系统进行了测试与分析。最后,对论文工作进行了全面总结与展望。整个论文的正文框架如图4所示。第四章结果论述第五章结果分析第六章结论或总结第三章方案论证第二章选题背景第一章前言第四章结果论述第五章结果分析第六章结论或总结第三章方案论证第二章选题背景第一章前言图4论文框架结构整个论文的功能图如图5所示:分布式平台的农业滴灌系统分布式平台的农业滴灌系统作物长势泵房能效作物长势泵房能效导入配置信息保存配置信息气象显示土壤墒情滴灌控制地图绘制导入配置信息保存配置信息气象显示土壤墒情滴灌控制地图绘制采集硬件信息采集硬件信息图5论文功能结构3方案论证3.1分布式数据服务技术是为客户需求而服务的,分布式服务框架也同样如此,它不是凭空诞生的也是因为有这样的需求才会有分布式服务框架这样的东西诞生;本论文的分布式数据服务面向三个方面:移动客户端、桌面电脑和浏览器。服务采用EJB组件[5],EJB是EnterpriseJavaBean的简称。EJB是sun的服务器端组建模型,设计目标与核心应用是部署分布式应用程序。凭借Java跨平台的优势,用EJB技术部署的分布式系统可以不限于特定的平台。EJB是J2EE的一部分,定义了一个用于开发基于组件的企业多重应用程序的标准。在J2EE里,EJB称为Java企业Bean,是Java的核心代码,分别是会话Bean(SessionBean),实体Bean(EntityBean)和消息驱动Bean(MessageDrivenBean)。SessionBean用于实现业务逻辑,它可以是有状态的,也可以是无状态的。每当客户端请求时,容器就会选择一个SessionBean来为客户端服务。SessionBean可以直接访问数据库,但更多时候,它会通过EntityBean实现数据访问。EntityBean是域模型对象,用于实现O/R映射,负责将数据库中的表记录映射为内存中的Entity对象,事实上,创建一个EntityBean对象相当于新建一条记录,删除一个EntityBean会同时从数据库中删除对应记录,修改一个EntityBean时,容器会自动将EntityBean的状态和数据库同步。MessageDrivenBean是EJB2.0中引入的新的企业Bean,它基于JMS消息,只能接收客户端发送的JMS消息然后处理。MDB实际上是一个异步的无状态SessionBean,客户端调用MDB后无需等待,立刻返回,MDB将异步处理客户请求。这适合于需要异步处理请求的场合,比如订单处理,这样就能避免客户端长时间的等待一个方法调用直到返回结果。本系统中提供给移动客户端、桌面电脑和浏览器的核心服务采用EJB组件,部分框架图如下:EJBEJB服务JMSWEB服务JMSWEB服务GrizzlyGrizzly服务智能手机智能手机PC机PC机Web浏览器图6EJB服务框架图3.2分布式数据存储本论文的存储[7]采用分布式的方式,存储类型在本系统中采用两种类型:MySQL数据库和Memcached。EJB服务EJB服务 MemcachedMySQLMemcachedMySQL图7存储服务框架图3.2.1MySQL数据库MySQL是一个关系型数据库管理系统,MySQL是最流行的关系型数据库管理系统,在WEB应用方面MySQL是最好的RDBMS[8-10](RelationalDatabaseManagementSystem:关系数据库管理系统)应用软件之一。MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言。MySQL软件采用了双授权政策,它分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择MySQL作为网站数据库。与其他的大型数据库例如Oracle、DB2、SqlServer等相比,MySQL自有它的不足之处,但是这丝毫也没用减少它受欢迎的程度。对于一般的个人使用者和中小型企业来说,MySQL提供的功能已经绰绰有余,而且由于MySQL是开放源码软件,因此可以大大降低总体拥有成本。Linux作为操作系统,Apache和Nginx作为Web服务器,MySQL作为数据库,PHP/Perl/Python作为服务器端脚本解释器。由于这四个软件都是免费或开放源码软件(FLOSS),因此使用这种方式不用花一分钱(除开人工成本)就可以搭建起一个稳定、免费的网站系统,被业界称为LAMP组合。3.2.2MySQL数据库的特性(1)使用C和C++编写,并使用了多种编译器进行测试,保证源代码的可移植性。(2)支持AIX、FreeBSD、HP-UX、Linux、MacOS、NovellNetware、OpenBSD、OS/2Wrap、Solaris、Windows等多种操作系统。(3)为多种编程语言提供了API。这些编程语言包括C、C++、Python、Java、Perl、PHP、Eiffel、Ruby和Tcl等。(4)支持多线程,充分利用CPU资源。(5)优化的SQL查询算法,有效地提高查询速度。(6)既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入到其他的软件中。(7)提供多语言支持,常见的编码如中文的GB2312、BIG5,日文的Shift_JIS等都可以用作数据表名和数据列名。(8)提供TCP/IP、ODBC和JDBC等多种数据库连接途径。(9)提供用于管理、查询、优化数据库操作的管理工具。(10)支持大型数据库。可以处理拥有上千万条记录的大型数据库。(11)支持多种存储引擎。(12)MySQL是开源的,所以你不需要支付额外的费用。(13)MySQL使用标准的SQL数据语言形式。(14)MySQL是可以定制的,采用了GPL协议,你可以修改源码来开发自己的MySQL系统。3.2.3MemcachedMemcached是一个高性能[11]的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库次数,从而提高动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。其守护进程(daemon)是用C写的,但是客户端可以用任何语言来编写,并通过Memcached协议与守护进程通信。Memcached是一套分布式的快取系统,当初是DangaInteractive为了LiveJournal所发展的,但被许多软件所使用。这是一套开放源码软件,以BSDlicense授权协议发布。Memcached缺乏认证以及安全管理,这代表应该将Memcached服务器放置在防火墙后。Memcached的API使用32位元的循环冗余校验(CRC-32)计算键值后,将资料分散在不同的机器上。当表格满了以后,接下来新增的资料会以LRU机制替换掉。由于Memcached通常只是当作快取系统使用,所以使用Memcached的应用程式在写回较慢的系统时(像后端的数据库)需要额外的程式码更新Memcached内的资料。Memcached是以LiveJournal旗下DangaInteractive公司的BradFitzpatric为首开发的一款软件。已成为mixi、hatena、Facebook、Vox、LiveJournal等众多服务中提高Web应用扩展性的重要因素。许多Web应用都将数据保存到RDBMS中,应用服务器从中读取数据并在浏览器中显示。但随着数据量的增大、访问的集中,就会出现RDBMS的负担加重、数据库响应恶化、网站显示延时等重大影响[12]。这时就该Memcached大显身手了。Memcached是高性能你的分布式内存缓存服务器。一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、提高可扩展性[13-16]。3.2.4Memcached特性(1)高性能:当传统数据库面临大规模数据访问时,磁盘I/O往往成为性能瓶颈,从而导致过高的响应延迟。分布式缓存将高速内存作为数据对象的存储介质,数据以key/value形式存储,理想情况下可以获得DRAM(DynamicRandomAccessMemory)级的读写性能。(2)动态扩展性:支持弹性扩展,通过动态增加或减少节点应对变化的数据访问负载,提供可预测的性能与扩展性;同时,最大限度地提供资源利用率。(3)高可用性:可用性包含数据可用性与服务可用性两方面。基于冗余机制实现高可用性,无单点失效(singlepointoffailure),支持故障的自动发现,透明地实施故障切换,不会因服务器故障而导致缓存服务中断或数据丢失。动态扩展时自动均衡数据分区,同时保障缓存服务持续可用。(4)易用性:提供单一的数据与管理视图,API接口简单,且与拓扑结构无关;动态扩展或失效恢复时无需人工配制,自动选取备份节点,多数缓存系统提供了图形化的管理控制台,便于统一维护。3.2.5Memcached应用场景(1)页面缓存:用来缓存web页面的内容片段,包括HTML、CSS和图片等,多应用于社交网站等。(2)应用对象缓存:缓存系统作为ORM框架的二级缓存对外提供服务,目的是减轻数据库的负载压力,加速应用访问。(3)状态缓存:缓存包括session会话状态及应用横向扩展时的状态数据等,这类数据一般是难以恢复的,对可用性要求较高,多应用于高可用集群。(4)并行处理:通常涉及大量中间计算结果需要共享。(5)事件处理:分布式缓存提供了针对事件流的连续查询处理技术,满足实时性需求。(6)极限事务处理:分布式缓存为事务型应用提供高吞吐率、低延时的解决方案,支持高并发事务请求处理,多应用于铁路、金融服务和电信等领域。4过程论述4.1系统的总体设计4.1.1系统的总体架构 基于前面的分析,论文给出了分布式平台的农业滴灌的总体架构。如图8所示,分布式平台的农业滴灌系统采用了平行的三(N)层架构体系。这个平台分为两部分:一是分布式数据存储为主体的数据层,二是基于J2EE的分布式数据服务的业务逻辑层。基于分布式平台的农业滴灌系统的总体架构图如下所示: 图8分布式滴灌系统总体架构从图8可以看出,基于分布式平台的农业滴灌系统与基于集中式平台的农业滴灌系统有下面相同点:(1)表示层的各个系统与单独的一个平台进行连接,并不需要连接其他区域的平台。这样就没有增加原有的表示层各个系统的复杂性,原有的系统几乎可以在不改变的情况下加入到新的系统中。(2)数据的访问和交换均通过平台的业务逻辑层来完成,所以它们不需要了解所有请求数据的实际位置。在整个系统的架构上依然具有比较优良的透明性。经过对基于分布式平台的农业滴灌系统和基于集中式平台的农业滴灌系统在网络架构、数据交换流程进行分析后,发现二者又有着显著的区别:(1)基于分布式平台的农业滴灌系统在各个区域均可部署平台,各个平台通过广域网进行连接;基于集中式平台的农业滴灌系统的平台在一个区域部署;(2)基于分布式平台的农业滴灌系统的各个区域中的系统与各自区域的平台连接,二者间的数据交换可通过局域网(或广域网)来进行;基于集中式平台的农业滴灌系统中的各个区域中的系统与统一的平台连接,与平台在一个区域的各个系统与平台通过局域网进行数据交换,其他区域的系统通过广域网与平台进行数据交换;(3)在基于分布式平台的农业滴灌系统中,在各个平台通过区域间的广域网来进行数据交换;在基于集中式平台的农业滴灌系统中,其他区域与平台请求、交换数据均通过广域网进行。4.1.2数据存储层的设计数据存储层的设计是本论文一大核心,数据存储层设计好坏直接影响系统的稳定性;同时,也会对业务逻辑层的透明性造成一定的影响,为了降低业务逻辑层软件的设计复杂性,在数据层为业务逻辑层尽量提供分段透明性。本系统的服务对象是农田、温室大棚,服务区域在新疆,由于地理位置的因素,一个区域有很多兵团,一个兵团下面管辖很多农场,农场下面有分有若干块农田或大棚,所以这数据表的设计上尤为重要。因此,数据表的设计原则如下:(1)核心数据保存在MySQL数据库[17]中,需要频繁查询的数据保存在Memcached中。(2)其他站点的MySQL数据库作为冗余数据进行存储,定期与核心数据同步更新。在系统中存储量最大的数据就是资源数据,资源数据包括结构化的数据;大部分资源数据在生成之后,在使用过程中基本上不会发生改变,所以资源数据采用在各个站点进行冗余存储的设计原则,即在各个站点拥有资源数据的完全备份。这样做主要有下面三点原因:(1)就近访问可以得到较好的系统性能;(2)规避广域网故障的影响;(3)存储介质相对于广域网带宽来说比较廉价。数据存储层的设计图:数据源冗余备份MySQL核心数据频繁查询的数据MemcachedMySQL数据源冗余备份MySQL核心数据频繁查询的数据MemcachedMySQL图9存储框架图4.1.3业务逻辑层的设计业务逻辑层是农业滴灌系统架构中最能体现核心价值的部分,它集中体现了系统的业务规则的制定、业务流程的实现等与业务需求相关的系统设计。业务逻辑层在农业滴灌系统中的位置非常关键,它处于数据存储层与表示层的中间,起到了数据交换中承上启下的作用[18]。农业滴灌系统中的各个层是一种弱耦合结构,层与层之间的依赖是向下的:表示层中的各个区域的系统通过业务逻辑层的接口来完成数据访问和数据交换的过程;业务逻辑层对于表示层来说是“透明”的,改变表示层中的各个控制化系统的设计实现对于其调用的业务逻辑层而言没有任何影响。农业滴灌系统的业务逻辑层需要与数据存储层通信。在本论文实现的分布式平台的农业滴灌系统中采用业界流行的Hibernate框架构建的数据访问层来访问数据库。在整体架构上,数据访问层可以看作业务逻辑层的一部分,是业务逻辑层的最靠近数据库的部分。为了使控制业务逻辑中控制业务规则、业务流程的部分与数据访问层实现弱依赖,数据访问层引入接口工作集和设计模式中的工厂模式。在所有的业务流程模块中对数据访问层的数据对象的调用,都采用面向对象语言中的多态原理和抽象接口技术。先定义出抽象的数据接口对象,然后使用工厂对象中的工厂方法创建出具体的数据对象。在农业滴灌系统中业务逻辑层与表示层要实现弱耦合结构。业务逻辑层最理想的方式是面向接口设计。在面向接口设计的系统中,系统的功能是由各个层来协作完成,各个层次中如果实现自身的业务流程对整个系统框架来说不再重要,而各个层次间的协作关系则成为系统设计的关键。由于采用面向接口的设计,农业滴灌系统由于升级换代而产生的表示层中的发生改变,业务逻辑层中的实现是完全不用改变的。不同区域中使用的各个控制化系统的建设情况十分复杂,具体的实现技术也是不一而同。数据逻辑层提供的接口是标准技术规范,才能方便的把各式各样的系统进行整合。目前,EJB是标准的接口技术,绝大多数的技术框架均提供对它的支持[19]。因此业务逻辑层的接口发布技术采用EJB[20]对其接口进行发布。在EJB的配置文件standalone.xml中进行配置就可以完成其接口的发布功能,下面是在EJB服务器中的配置:(1)添加security-realm,安全域(即表示如果使用这个安全域的话,就使用这个域的密码)<security-realmname="ejb-security-realm"> <server-identities> <secretvalue="c21hcnRsYWI0MTEq"/> </server-identities></security-realm>(2)在配置中新建一个外连接实例,将安全域与远程地址配置关联起来<outbound-connections> <remote-outbound-connectionname="remote-ejb-connection"outbound-socket-binding-ref="remote-ejb"username="ejb"security-realm="ejb-security-realm"> <properties> <propertyname="SASL_POLICY_NOANONYMOUS"value="false"/><propertyname="SSL_ENABLED"value="false"/></properties></remote-outbound-connection></outbound-connections>这个远程连接实例“remote-ejb-connection”将上述所配置的连接与安全域联系在一起,并且使用EJB服务器创建的applicationuser:ejb。最后这个连接实例随着Web服务器程序的启动而启动。由于配置安全域的账号和密码是在EJB服务器那里申请,配置完Web服务器后,Web服务器就可以获得访问EJB服务器的权限。业务逻辑层的设计框架图:向向EJB服务器申请访问的权限EJBEJB服务Web服务EJB服务器授权给Web服务EJB服务器授权给Web服务器图10业务框架图4.2系统详细设计与实现4.2.1用户表的设计用户表保存有登录用户的ID、密码、身份、权限等信息。用户表的表结构定义为:表2用户表结构序号字段名称类型长度空否主键说明1IDINTY用户代码2CNAMEVARCHAR20用户姓名3STATUSCHAR1用户状态4SEXCHAR1性别5CRDATEDATE创建日期6CADATEDATE注销日期7IDCARDVARCHAR24身份证号8PWDVARCHAR32用户密码(1)实现功能用户创建接口提供创建用户的服务,将客户端传入的用户数据保存到数据库中。调用这个接口的客户端软件有可能是PC版的控制系统,可能是Web版的注册,也有可能是移动端。(2)设计思路 从本系统的角度出发,用户创建接口是一个局部应用。它只是访问和接口所在的应用服务器,接口的参数是用户的数据结构,如果用户数据创建成功,则返回新创建的用户代码,失败则返回相应异常。(3)主要程序实现描述,用户创建接口流程图如下:开始开始返回登录状态写日志返回登录状态写日志客户调用客户调用CreateUser检查传入数据结构不合法检查传入数据结构不合法合法合法执行sql执行sql语句成功成功写日志写日志返回登录状态返回登录状态图11用户创建接口流程图在Java的代码中使用throw语句直接抛出异常,异常抛出后中断了函数调用,直接返回到被调用代码处。这个特性在远程调用的Web服务中的函数也不例外。异常抛出后,直接返回到调用函数,调用函数对异常进行处理,如果调用函数没有对该异常进行处理,异常会再次被抛出,一直到有代码对它进行了处理。由于EJB中有自带的事务机制,它能够在操作中对异常进行处理,做相应的提交或回滚。认证登录日志表记录登录用户ID,登录时间、认证登录地点(IP地址)、是否认证登录成功标示等等。在各个数据库(将来拓展为站点)均有相同结构的认证登录日志表。在某个区域进行过登录的用户,不论登录成功与否,应用系统均记录该次认证或登录的情况。认证登录日志表的表结构设计为:表3认证登录日志表结构序号字段名类型大小主键外键说明1IDINTY主键2USRIDINTY用户代码3INSTIMEDATA登录时间4OPTIPVARCHAR100登录IP5LGNSTATUSCHAR1用户状态由于采用EJB编写,EJB中集成了Hibernate框架,使用Hibernate框架操作用户对象;如果用户数据不存在,写登录日志表,返回登录失败。如果用户数据存在,写登录日志表,笔记输入的用户账号和密码和数据库中保存的用户账号和密码是否一致,如果一致,返回登录成功;如果不一致,返回登录不成功。认证流程图如图所示:开始开始 查询备份数据库查询用户是否存在查询备份数据库查询用户是否存在写登录日志表写登录日志表写登录日志表是否存在检查密码写登录日志表写登录日志表写登录日志表是否存在检查密码失败失败成功成功抛出响应异常构造用户对象抛出响应异常抛出响应异常构造用户对象抛出响应异常开始开始图12认证接口流程4.2.2基本信息类表结构1预警联系人表(1)预警联系人表用于存储接收预警信息的相关人员信息。(2)表标识:XJ_PREWARMAN_B。(3)表编号:XJ_002_0001。表4序号字段名字段标识类型及长度是否允许空值计量单位主键序号1姓名NAMEC(10)N12电话TELC(15)N3职务DUTYC(30)N4行政区划名称ADMNAMEC(30)N5行政区划代码ADMCODEC(30)N2灌溉设备配置表(1)灌溉设备配置表用于存储灌溉设备对应的实际地块信息。(2)表标识:XJ_CONFIGURATION_B。(3)表编号:XJ_002_0002。表5序号字段名字段标识类型及长度是否允许空值计量单位主键序号1设备编号C(30)N12设备名称C(30)N3设备序列号C(30)N4设备大类C(30)N5供电方式C(30)N6设备型号C(30)N7设备IMSIC(30)N8购买时间C(30)N9生效时间C(30)N10服务到期时间C(10)N11经度C(30)N12设备使用状态C(10)N13纬度C(30)N14父设备编号C(30)N15组态图地址C(30)N16项目IDC(50)N17手机号码C(30)N18备注C(50)19设备地址C(30)N20显示名称C(30)N21应用类型C(30)N22转发设备地址C(30)N23转发通道序号C(30)N24设备C(30)N25业务信息C(30)N26基本信息C(30)N27GPRSC(10)N28类型编号C(30)N29网关列表C(30)N3灌溉流程配置表(1)灌溉流程配置表用于存储灌溉设备控制灌溉的流程信息。(2)表标识:XJ_PROCONF_B。(3)表编号:XJ_002_0003。表6序号字段名字段标识类型及长度是否允许空值计量单位主键序号1设备编号C(30)N12设备名称C(30)N3开阀代号C(30)N4关阀代号C(30)N5开阀通道C(30)N6关阀通道C(30)N7类型C(30)N8开阀指令C(30)N9关阀指令C(30)N10阀编号C(10)N11阀名称C(30)N12上报状态位C(10)N13报警通道序号C(30)N4轮灌组配置表(1)轮灌组配置表用于存储整个项目的轮灌方式。(2)表标识:XJ_RATIRRGRO_B。(3)表编号:XJ_002_0004。表7序号字段名字段标识类型及长度是否允许空值计量单位主键序号1名称C(30)N12项目外键C(30)N3编号C(30)N4序号C(20)N5灌溉种植配置表(1)灌溉种植配置表用于存储灌溉设备对应地块的详细信息(2)表标识:XJ_PLANTCONF_B。(3)表编号:XJ_002_0005。表8序号字段名字段标识类型及长度是否允许空值计量单位主键序号1编号C(30)N12阀门在用情况C(5)N3自由水头C(30)N4阀一地块面积C(30)N5阀二地块面积C(30)N6阀一作物名称C(30)N7阀二作物名称C(30)N8阀一作物代码C(30)N9阀二作物代码C(30)N10阀一用户信息C(50)N11阀二用户信息C(50)N12阀一土壤类型C(10)N13阀二土壤类型C(10)N14阀一土壤类型C(10)N15阀二土壤类型C(10)N16阀一土层深度C(10)N17阀二土层深度C(10)N18阀一土层深度C(10)N19阀二土层深度C(10)N20阀一耗水系数C(10)N21阀二耗水系数C(10)N22阀一滴头流量C(30)N23阀二滴头流量C(30)N24阀一滴头间距C(30)N25阀二滴头间距C(30)N26阀一支管长度C(10)N27阀二支管长度C(10)N28阀一自由水头C(30)N29阀二自由水头C(30)N30阀一支管管径C(30)N31阀二支管管径C(30)N32阀一滴灌带间距C(30)N33阀二滴灌带间距C(30)N6设备表(1)设备表用于存储灌溉设备的相关信息。(2)表标识:XJ_DEVICE_B。(3)表编号:XJ_002_0006。表9序号字段名字段标识类型及长度是否允许空值计量单位主键序号1设备编号C(10)N12设备名称C(18)N3设备序列号C(18)N4设备大类C(18)5供电方式C(18)6设备型号C(18)N7设备IMSIC(18)8购买时间C(18)9生效时间C(18)10服务到期时间C(18)11经度C(20)N12设备使用状态C(18)N13纬度C(20)N14父设备编号C(18)N15组态图地址C(18)N16项目IDC(18)N17手机号码C(18)N18备注C(30)19设备地址C(10)N20显示名称C(18)N21应用类型C(10)22转发设备地址C(10)N23转发通道序号C(10)N24设备C(10)N25业务信息C(18)26基本信息C(18)27GPRSC(10)N28类型编号C(10)N29网关列表C(10)N7项目表(1)项目表用于存储灌溉项目的详细信息及配置所属该项目下的设备。(2)表标识:XJ_PROJECT_B。(3)表编号:XJ_002_0007。 表10序号字段名字段标识类型及长度是否允许空值计量单位主键序号1项目编号C(10)N12项目名称C(18)N3项目创建者C(10)4父项目编号C(10)N5项目创建时间C(18)6项目描述C(30)7所属行政区划C(18)N8项目类型C(18)N9经度C(20)N10纬度C(20)N11比例尺C(20)N12地图类型C(10)N13页面地址C(20)14开关对应C(10)N15二级域名C(10)N16设备列表C(10)N17项目图片C(18)18网关选择C(10)N8网络表(1)网络表用于存储灌溉项目的网络信息及配置所属该网络下的设备。(2)表标识:XJ_NETWORK_B。(3)表编号:XJ_002_0008。表11序号字段名字段标识类型及长度是否允许空值计量单位主键序号1编号C(10)N12名称C(18)N3父项目编号C(10)N4设备编号列表C(18)N9预警信息表(1)预警信息表用于存储设备的预警记录。(2)表标识:XJ_WARMEG_B。(3)表编号:XJ_002_0009。表12序号字段名字段标识类型及长度是否允许空值计量单位主键序号1外键C(10)N12设备地址C(10)N3通道序号C(10)N4gprs地址C(10)N5报警时间C(18)N6报警类型C(10)N7数据报文C(20)N8解析数据C(20)N10未处理设备历史数据表(1)未处理设备历史数据表用于存储设备通讯的原始数据。(2)表标识:XJ_UNTREATDATA_B。(3)表编号:XJ_002_0010。表13序号字段名字段标识类型及长度是否允许空值计量单位主键序号1设备地址C(10)N12gprs地址C(10)N3日期C(18)N4最新时间C(18)N5采集时间C(18)N6上报时间C(18)N7通道一C(18)8通道二C(18)9通道三C(18)10通道四C(18)11通道五C(20)12通道六C(18)13通道七C(28)14通道八C(18)15通道九C(18)16通道十C(18)17通道十一C(18)18通道十二C(18)19通道十三C(18)20通道十四C(18)21通道十五C(18)22通道十六C(18)11处理后设备历史数据表(1)处理后设备历史数据表用于存储设备通讯经处理后的原始数据。(2)表标识:XJ_HANDLEDATA_B。(3)表编号:XJ_002_0011。 表14序号字段名字段标识类型及长度是否允许空值计量单位主键序号1设备地址C(10)N12gprs地址C(10)N3时间C(18)N4最新时间C(18)N5采集时间C(18)N6上报时间C(18)N7通道一C(18)8通道二C(18)9通道三C(18)10通道四C(18)11通道五C(28)12通道六C(18)13通道七C(18)14通道八C(18)15通道九C(18)16通道十C(18)17通道十一C(18)18通道十二C(18)19通道十三C(18)20通道十四C(18)21通道十五C(18)22通道十六C(18)4.2.3分布式服务的设计与实现本系统的核心服务采用的技术是EJB,EJB是sun的服务器端组件模型,设计目标与核心应用是部署分布式应用程序。凭借Java跨平台的优势,用EJB技术部署的分布式系统可以不限于特定的平台。EJB(EnterpriseJavaBean)是J2EE的一部分,定义了一个用于开发基于组件的企业多重应用程序的标准。其特点包括网络服务支持和核心开发工具(SDK)。在J2EE里,EnterpriseJavaBeans(EJB)称为Java企业Bean,是Java的核心代码,分别是会话Bean(SessionBean),实体Bean(EntityBean)和消息驱动Bean(MessageDrivenBean)。设计分布式服务并不是只为实现当前的功能,而且还来考虑将来的扩展性,所以设计的时候必须认真、仔细的考虑;分布式服务的设计原则如下:(1)对外提供服务接口(Web浏览器、智能手机、PC机等调用相应的接口)。(2)可扩展,方便以后组建EJB服务集群分布式服务实现框架图如下所示:图13分布式服务框架图4.2.4分布式存储设计与实现本系统的存储采用MySQL和Memcached两种存储机制,采用MySQL是因为它体积小,成本低,完全可以满足一般企业的要求;采用Memcached的好处在于,它能够实现内存共享;同时它的可扩展性强,若将来Memcached的内存不够用,可以和其他的Memcached组合起来构成Memcached集群,设计分布式存储的原则如下:(1)双机备份;(2)冗余数据存储;这样能够保存,当某个数据库(MySQL或是Memcached)崩溃后,不会影响整个系统的运行。分布式存储实现框架图:图14分布式存储框架图5结果分析5.1测试环境(1)2台Linux操作系统,MySQL5.5、Memcached1.4、JBoss7.0。(2)1台Linux操作系统,安装Tomcat。作为客户端软件的Web服务器;(3)1台PC机,Windows8操作系统。作为C/S软件、B/S软件的客户端;(4)1台安卓手机。作为移动客户端;(5)100M带宽的局域网和10M带宽的ADSL广域网连接;(6)Jmeter2.11压力测试工具;5.2测试程序与测试界面设计(1)基于.Net平台的滴灌系统之PC端的控制程序用户操作滴灌系统,操作功能包含:滴灌启动、采集水阀状态、电压采集等。首先是登录界面,如图15所示: 图15登录界面登陆成功后进入主界面,如图16所示:图16主界面滴灌控制界面能够显示节点下挂的水阀个数,如图17所示:图17滴灌控制滴灌控制功能包含信息采集,例如:水阀状态、节点电压。如图18所示:图18信息采集土壤墒情是采集当天含水量的记录,如图19所示:图19土壤墒情气象显示包含降雨量、风速、风向、太阳辐射、空气温度、空气湿度和大气压力。图20气象显示(2)基于J2EE技术的WEB应用程序滴灌系统之WEB应用程序功能包含:泵房管理、气象数据、滴灌操作等。 图21浏览器泵房管理Web滴灌控制可参考桌面电脑的操作,如图22是滴灌控制界面:图22浏览器滴灌控制 图23浏览器气象数据(3)Android手机客户端程序农业小助手启动界面,如图24所示:图24农业滴灌系统启动界面进入登录界面,如图25所示:图25农业滴灌系统启动界面农业小助手主界面,如图26所示:图26农业滴灌系统主界面农业滴灌系统控制界面,如图27所示: 图27农业滴灌系统滴灌控制农业滴灌系统气象显示,如图28所示:图28农业滴灌系统气象显示5.3测试分析项目结果分布式平台的农业滴灌系统性能分析主要包括并发量和吞吐量及容错率。下面对系统进行压力测试并分析:分布式平台的农业滴灌系统采用了三层架构,数据的访问流程由业务逻辑层控制。下面对传统的平台和分布式平台的应用进行性能的类比分析。测试结果如下:表15 注:Samples表示并发量,90%Line表示响应时间,Error%表示容错率,KB/sec表示吞吐量。通过上面分析,当并发量达到1000时,响应时间和容错率及吞吐量,在分布式平台下明显比传统的平台有优势。6总结分布式平台的农业滴灌系统是以网络为基础,利用控制化手段和工具,实现从环境、资源到活动的全部分布式化。分布式平台的农业滴灌系统是网络化、控制化、智能化、高度应用化等有机结合的新型分布式平台。分布式平台的农业滴灌系统的建设可以提升传统农业滴灌系统的效率,拓展其功能。但是近年来随着农田的不断合并扩充,一个区域往往拥有多块农田,而且各个区域相对来说比较分散,少则几公里,多则几十公里。现有的农业滴灌系统,是在区域相对集中,网络建设已经相当完善的基础和前提下进行设计开发的,这种集中式的农业滴灌系统在新的的环境并不适用。因此,构建新的分布式平台的农业滴灌系统势在必行。本文提出了基于分布式数据存储和EJB架构的分布式数据服务解决方案,并以用户数据和滴灌系统产生的数据为分析要点,解决了分布式平台的农业滴灌系统设计中面临的一些问题。论文主要工作包括:(1)研究、分析了分布式数据存储、EJB接口技术;(2)提出了分布式平台的农业滴灌系统的总体架构;(3)分布式平台的农业滴灌系统中数据库对象,有效解决了分布式平台中业务逻辑层接口设计的复杂性问题;(4)布式平台中用户数据分布的特点,并通过数据库对象设计和后台服务进程设计加以实现;(5)构建了分布式平台的农业滴灌系统客户端测试程序,并进行了系统测试与结果分析。由于时间有限以及经验的不足,系统中仍有很多方面有待进一步的探索。例如,在滴灌系统中,如何保证资源数据的一致性、如何进一步提高分布式数据的效率等问题,需要在今后的工作中不断改进和完善参考文献[1]李晓蕾.基于信息孤岛消除的资源优化模型研究[J].科技通报,2013.[2]阮跃.分布式化工大机组智能故障诊断系统[J].化工自动化及仪表,2004.[3]SethLadd,DarrenDavison.深入解析SpringMVC与WebFlow[M].人民邮电出版社,2008[4]刘鹏.云计算[M].北京:电子工业出版社,2010[5]DEEPAKA,JOHNC.J2EE核心模式[M].北京:机械工业出版社,2005.[6]JohnWiley&Sons,MateringEnterpriseJavaBeans[M].电子工业出版社,2005.[7]M.TAMEROZSU,PATRICKV.PrinciplesofDistributedDatabaseSystems(英文影印版)[M].北京:清华大学出版社,2002.[8]MINORDH,BURRUSSJR.DistributedMDSplusdatabaseperformancewithLinuxclusters[J].FusionEngineeringandDesign.2006.[9]SALLYM,BRYANS,PHILIPM,etal.Knowledgediscoverybyprobabilisticclusteringofdistributeddatabases[J].Data&KnowledgeEngineering,2005.[10]ZHANGF,XUED.Distributeddatabaseandknowledgebasemodelingforconcurrentdesign[J].Computer-AidedDesign,2002.[11]HASSANA,MANALS,HAIDARS.AdistributedmobiledatabaseimplementationonPocketPCmobiledevicescommunicationoverBluetooth[J].JournalofNetworkandComputerApplications,2009.[12]ALIA,FAWAZS.APSOandaTabusearchheuristicsfortheassemblyschedulingproblemofthetwo-stagedistributeddatabaseapplication[J].Computer&OperationsResearch,2006.[13]NICOLAPB,DistributedDatabasesforthedevelopmentofMechanismsTopology[J].MechanismandMachineTheory,2000.[14]王君,祝永志,魏荣晖,等.基于Oracle分布式数据库的查询优化[J].计算机技术与发展,2008.[15]马程.分布式数据库系统中的查询优化[J].科技信息(学术版),2008.[16]高维维,王海健.浅谈分布式数据库的安全管理技术[J].科技资讯,2008.[17]BHAVANIT.SecurityofDistributedDatabases[J].InformationSecurityTechnicalReport.2001.[18]XUED,XUY.Web-baseddistributedsystemanddatabasemodelingforconcurrentdesign[J].Computer-AidedDesign,2003.[19]FABRIZIOF,CLAUDIOG,FAUSTOR,etal.Distancebrowsingindistributedmultimediadatabases[J].FutureGenerationComputerSystems.2009.[20]LEONARDR.RESTfulWebServices[M].北京:电子工业出版社,2008.致谢非常感谢王珏辉老师,在我大学的最后学习阶段——毕业设计阶段给我的指导,从最初的定题到资料收集,到写作、修改,到论文定稿,他给了我耐心的指导和无私的帮助。为了指导我的毕业论文,他放弃了自己的休息时间,这种无私奉献的敬业精神令人佩服,导师严谨的治学态度、高度的责任心和实事求是的工作风格令我受益匪浅,在此我向王珏辉老师表示我最诚挚的谢意。同时,感谢所有任课老师和所有同学在这四年来给我的指导和帮助,是他们教会了我专业知识,教会了我如何学习,教会了我如何做人。正是由于他们,我才能在各方面取得显著的进步,在此向他们表示我由衷的谢意,并祝所有的老师培养出越来越多的优秀人才,桃李满天下。衷心感谢我的家人,他们的爱与关怀是我力量的源泉。最后,再次向所有支持和帮助过我的老师、同学表示衷心的感谢!附录下面是Java语言为实现整个农业滴灌系统提供服务的数据结构:(1)农场实体packagecom.argejb.model.entity;importjava.io.Serializable;importjava.util.HashSet;importjava.util.Set;importjavax.persistence.Column;importjavax.persistence.Entity;importjavax.persistence.FetchType;importjavax.persistence.GeneratedValue;importjavax.persistence.GenerationType;importjavax.persistence.Id;importjavax.persistence.OneToMany;importjavax.validation.constraints.Size;importorg.hibernate.validator.constraints.NotEmpty;@EntitypublicclassFarmimplementsSerializable{ privatestaticfinallongserialVersionUID=-5475036180850719561L; @Id @GeneratedValue(strategy=GenerationType.IDENTITY) privateLongid; @NotEmpty @Column(unique=true) @Size(min=1,max=20) privateStringfarmname; privatedoublelongitude; privatedoublelatitude; @Size(max=500) privateStringdescription; @OneToMany(fetch=FetchType.EAGER,mappedBy="farm") privateSet<FarmArea>farmAreas=newHashSet<FarmArea>(); publicLonggetId(){ returnid; } publicvoidsetId(Longid){ this.id=id; } publicStringgetFarmname(){ returnfarmname; } publicvoidsetFarmname(Stringfarmname){ this.farmname=farmname; } publicdoublegetLongitude(){ returnlongitude; } publicvoidsetLongitude(doublelongitude){ this.longitude=longitude; } publicdoublegetLatitude(){ returnlatitude; } publicvoidsetLatitude(doublelatitude){ this.latitude=latitude; } publicStringgetDescription(){ returndescription; } publicvoidsetDescription(Stringdescription){ this.description=description; } publicSet<FarmArea>getFarmAreas(){ returnfarmAreas; } publicvoidsetFarmAreas(Set<FarmArea>farmAreas){ this.farmAreas=farmAreas; } @Override publicStringtoString(){ return"Farm[id="+id+",farmname="+farmname+",longitude=" +longitude+",latitude="+latitude+",description=" +description+",farmAreas="+farmAreas.toString()+"]"; } @Override publicinthashCode(){ finalintprime=31; intresult=1; result=prime*result +((farmname==null)?0:farmname.hashCode()); result=prime*result+((id==null)?0:id.hashCode()); returnresult; } @Override publicbooleanequals(Objectobj){ if(this==obj) returntrue; if(obj==null) returnfalse; if(getClass()!=obj.getClass()) returnfalse; Farmother=(Farm)obj; if(farmname==null){ if(other.farmname!=null) returnfalse; }elseif(!farmname.equals(other.farmname)) returnfalse; if(id==null){ if(other.id!=null) returnfalse; }elseif(!id.equals(other.id)) returnfalse; returntrue; }}(2)EJB配置文件信息<?xmlversion='1.0'encoding='UTF-8'?><serverxmlns="urn:jboss:domain:1.4"><extensions><extensionmodule="org.jboss.as.clustering.infinispan"/><extensionmodule="org.jboss.as.connector"/><extension

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论