




免费预览已结束,剩余7页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于WebService的多源数据库数据访问方法ISSN10093044CompurKnowledgeandTechnology电脑知识与技术Vo1.5,No.31,November2009,PP.8628-8631基于WebService的多源数据库数据访问方法邬海波.吴保国(北京林业大学,北京100083)E-mail:Tel:+8655l一56909635690964摘要:网络远程数据获取与应用的需求日渐丰富,如何安全有效的将数据提供给用户成为普遍关注的问题.提供一种以WebService技术为基础.对用户屏蔽掉底层数据库种类不同,通过Java平台开发的远程多源数据库数据访问方法.用Java语言编写服务,Axis2框架发布WebServiceJSON格式处理数据交换,通过WebService,Java,JSON,Axis2等关键技术的应用,实现跨平台的远程数据访问服务.关键词:数据库:WebService;数据访问;JSON;Axis2中图分类号:TP311文献标识码:A文章编号:10093044(2009)31862804TheMethodofAccessingMulti-SourceDatabaseBasedonWebseviceWUHaibo.WUBaoguo(BeijingForestryUniversity,Beijing100083,China)Abstract:WiththeIncreasinglyrichofaccessandapplicationofNetworkremonngdata,howtoprovidedatatOvidingakindoftechnologybasedonwebservice,ShieldingthedifferenttypesofunderlyingdatabasetOuserswiththemethodofremotingMultiSourceaccessingtOthedatabase,whichisdevelopedbyJAVAplatform.PreparingservicewithJAVAlanguage,releasingWebServicewithAxis2Framework,andhandlingdataexc13ngeinJSONFormattoachievecrossplatformremotedataaccessservicewithapplicationofmanykeytechnologiessuchasWebServicedavaJSON.Axis2Keywords:database;webservice;dateaccess;json;axis2随着计算机及数据库技术的不断发展,如今几乎所有的网络系统都需要数据库的支持,都存在着大量数据的传输与交换需求.通常.数据的提供方以其固肴的方式向数据需求方提供其需要的数据,数据的展现方式被人为的固定下来,在需求变化层出不穷的应用背景下.这种数据发布与访问的方式显得力不从心,捉襟见肘.本研究基于以一h考虑,要提供一种可以由数据需求方自定义其所要获取数据的内容及得到数据后自定义数据的呈现方式的数据访问方式,并提供统一的数据操作接口.为了适应不同平台的应用需求,数据访问及服务发布的具体实现采用具有平台无关性特点的java语言.l数据访问的整体架构设计1.1WebService技术WebServices是分布式计算领域发展的前沿技术,具有很多其他技术无法比拟的优势.WebSmwiee是一种通过Web部署提供对业务功能访问的技术,它具有跨平台,简单和高度可集成能力等特点.WebService采取简单易理解的标准Web协议作为组件界面描述和协同描述规范.通过XML,SOAP,WSDL,UDDI等技术手段,屏蔽不同软件平台的差异IJ1.表面t看,WebService就是一个应用程序.但这个程序向外界提供一个能够通过网络进行调用的API(ApplicationProgrammingInterface,应用程序编程接口).WebService发布后.能够用编程的方法通过web来调用这个应用程序,而调用服务的应用程序就是WebService的客户端.正是由于WebSerivce良好的跨平台及互操作性等优势,很好的满足了多源数据库数据访问的需求.数据访问的客户端与服务器间的通信.可以简单的依赖于HrrP协议来进行,同时,当前许多防火墙也配置为只允许H1TrP连接.1.2系统整体设计通常来说.数据用户只关心具体的数据,而并不会关心数据是如何存放,存放存何种数据库里的.本文的数据访问就是要对用户屏蔽掉数据库源的不同,而只专注于数据的利用.用户向服务器发出调用请求,请求巾将包括用户信息以及用户对数据所要进行的操作信息.服务器端在接收到用户的请求之后,首先对用户的权限进行验证,确认其中否有进行相应操作的权限.如果验证通过,则执行用户所请求的操作,最后将操作的结果返回给请求用户.数据访问的总体设计如图1所示.2数据访问方法的具体实现2.1数据访问所支持的数据库类型根据目前商业数据库的总体应用情况,本研究所支持的数据库将有以下三种.分别为:11Miscrosoft公司的SQLServer200021Oracle公司的Oracle10GF一l用户勰认证ll数撼霹l:=L1e匝圃fl求解薪暮鞴&|E库匝困l!:=:.l诗砑辖舞邋目lc口图1数据访问系统总体设计图收稿日期:2009-09-14作者简介:(1981一),男,辽宁铁岭市人,硕士,主要研究方向为林业信息管理;吴保国,教授,博士生导师,主要研究方向为林业信息管理,管理信息系统,数据库应用技术.8628;数鼍库与僖息曩;本栏目责任编辑:闻翔军第5卷第31期(2009年11月)CompeerKnowledgeandTechnology电脑知识与技术31IBM公司的DB2V9.5对于以上这三种数据库的优劣对比,各行业问可谓说法不一,但不可否认的是它们都有着各自的优点长处,也都有各自的不足本文这里就不对三种数据库的选择做过多的探讨.用户在具体的应用中可以根据自己的实际情况做出选择.应该指出的是,想要加入对其它数据库的支持,则需加入相应的数据库驱动包以及对数据库的数据类型进行对应的处理.2.2不同数据库的数据类型处理在实际的应用当中,不同的数据库所定义的数据类型是不尽相同的,很多时候还存在着很大的区别.数据访问要同时对不同的数据库进行支持就不可避免的要对不同的数据类型进行区别对待,细化处理.以数值型数据来说,DB2及SQLServer有多种不同的数据类型对应数值型数据,如int,d0uble,n0at,decimal等,但Oracle中只有number类型一种于其相对应.下面给出三种数据库主要数据类型的对照表:表1主要数据类型的对照表从总体上来说.这三种数据库的数据类型可以分为以下五大类,分别是:数值型,字符型,时间型,文本型,多媒体型.在执行远程数据访问的插入或更新操作时.通常用户的数据都是以字符串的形式发送到服务器端,这种情况下要能够将用户的数据正确体现到数据库当中,就必需在执行插入或更新操作前将用户数据转换成适当的Java数据类型.数值型.数值型数据具体还可再细分为整型,双字节型及浮点型三种类型,对应的数据库数据类型主要有整型:NUMBER,BIT,SMALLINT,INT,INTEGER,BIGINT,TINYINT,双字节型:DOUBLE,BINARYDOUBLE,MONEY,SMALLMONEY,DECIMAL,浮点型:FLOAT,REAL,BINARYFLOAT.对整型数据,本可以转换为int型后进行数据库操作,但在实际操作中发现,由于Oracle数据库对于数值型数据只有NUMBER一种,当以NUMBER(p,s)形式定义数据时,而只能将NUMBER判断为整型数据,此时若统一转换为int.则会发生小数点后数据丢失的数据错误.因此,对于此种情况可对用户数据不做特殊处理,而直接以用户输入的String格式,或直接以Object对象进行数据库操作.对于双字节型和浮点型数据则应对应的转换为Double和Float对象类型.字符型.字符型数据主要有VARCHAR,VARCHAR2,NVARCHAR,NVARCHAR2,L0NGVARCHAR,CHARACTER,IJ0NGVARCHAR等.对于字符型的数据,直接按String类型进行处理即可.时间型.对于时间型数据,可以再细分为日期型,时间型及时间戳型.对应的数据库数据类型主要有日期型:DATE,DATETIME,SMALLDAIETIME,时间型:TIME时间戳型TIMESTAMP.日期型数据以类似y一mmdd的格式输人,在iava代码中转换为Date对象类型,时间型则以类似hh:mm:ss的格式输入,应转换为Time对象类型,相应的对于时间戳型数据应转换为Timestamp对象类型.文本型.文本型数据主要有CLOB,TEXT,NTEXT,DBCLOB.文本型数据在本质上与字符型数据相近,只是可存放的数据量更大,用于满足大文本数据的存储需求,因此同字符型数据一样,只需将数据以String类型提交处理即可.多媒体型.多媒体型数据是指图片,音频,视频以及其它文件数据等大文件对象.在数据库中存放这类数据的字段类型主要有BL0B,NBLOB,BINARY,LONGRAW,VARBINARY,IMAGE.对于这类大字段数据,为了能够正确的写人数据库,要将其处理成byte口数组.通过以上的数据处理,已基本涵盖了数据库应用中所能遇到的字段类型,这样就保证了数据操作中对绝大多数数据库数据类型的支持,从而提升了系统的适应性.2-3数据的安全性网络系统的数据安全性一直是被关注的焦点,任何一种非法用户的非法操作或合法用户的越权错误操作都可能给系统数据以及系统本身带来灾难性的后果,如何保证数据的安全是所有网络系统设计的重点所在.数据访问应设置两种用户角色,负责数据服务发布的系统管理员以及使用数据服务的数据访问用户.需要说明的是,这里的数据访问用户是指数据的使用用户而非实际的数据库连接用户.出于系统数据安全的考虑,底层数据库连接用户是不能暴露给系统用户的.管理员的职责主要有两点:1)发布服务将数据库中特定的表或视图发布为webservice服务,同时给用户提供出服务发布的具体信息,比如访问地址,表名称,表字段信息等.2)用户权限管理用户权限是数据安全的关键所在,权限控制要根据实际系统的安全需求及业务需求来确定权限划分的粒度.对于数据库数据的操作而言,用户权限可分为两个维度,三个层次,从访问对象来说是:库级权限,表级权限,字段级权限.从数据操作类型上来说是:select权限,insert/update权限,delete权限.对数据访问权限的控制要达到字段一级,系统管理员可对数据访问用户所能操作的具体表及表字段进行细化定义,并区分不同操作类型权限进行授权.当用户请求调用服务进行数据操作时,服务端首先对用户的权限信息进行验证.根据请求中的用户信息在系统的权限表中进行查询,确认其是否具有所请求操作的权限.用户权限表中记录着用户的具体权限信息.粒度达到数据字段一级.对于数据字段一级的权限是指是否允许用户对数据表的某一具体数据字段进行select,update操作.操作权限的验证要一层层分级进行,在不同层级验证不能通过,相应的要返回不同的验证结果.权限验证流程如图2所示.本栏目责任编辑:闻翔军t;羹曩瘁与信息f曩8629ComputerKnowledgeandTechnology电脑知识与技术2.4访问结果的返回2.4.1结果返回形式的选择数据访问的最终目的是得到访问的数据结果集,以什么样的形式将结果返回同样是一个值得研究的问题.数据返回形式的选择应遵循以下两点原则:1)平台无关2)数据解析方便.就平台无关性来讲,XML语言无疑是这些年来陪受推崇的一种.XML(ExtensibleMarkupLanguage)即可扩展标记语言,它与HTML一样.都是SGML(StandardGeneralizedMarkupLanguage,标准通用标记语言).Xml是Internet环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具.从Java,.NET等主流平台中的配置和部署描述符到应用集成场景中更复杂的应用.XML第5卷第31期(2009年11月):藏鼍谤茸结果:j图2权限验证流程图与生俱来的语言无关性使之在软件架构师心目中占据着独特的地位21.同时,XML也被应用于异构数据的整合及发布当中【引.然而,XML并非无懈可击.WebService的客户端通常是以浏览器为基础进行构建,用户接收到的数据要在浏览器中进行解析,需要整合到HTML页面的总体布局中.完成这个任务,通常是使用DOM来实现,而这正是复杂的所在.DOM编程的复杂性源于其基于函数的根,这使得对数据树的简单修改和访问都需要进行无数次的方法调用41.另外,各种不同浏览器中的实现细节也不尽相同,为了实现跨浏览器的兼容,也将增加巨大的开发工作量51.为了克服以上不足.我们应选择一种以所有主流浏览器都支持的通用组件-JavaScript引擎为基础的数据交换格式,也就是JSON.JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成.它基于JavaScript(StandardECMA一2623rdEditionDecember1999)的一个子集.JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯.这些特性使JSON成为理想的数据交换语言.JSON允许轻松地将JavaScript对象转换成可以随请求发送的数据61.简单地说,JSON可以将JavaScript对象中表示的一组数据转换为字符串,然后就可以在函数之间轻松地传递这个字符串,或者在异步应用程序中将字符串从Web客户机传递给服务器端程序.JSON使用类似Java中Map对象的key/value对的数据组织方式.JSON使用包含一系列无序的key/value对来表示一条数据,也可以将这一条数据理解为一个对象,同时JSON还支持对象的嵌套及对象数组.用JSON来组织数据库中的一条数据可以以如下的格式:字段名1:字段值1,字段名2:字段值2.可见,JSON数据格式的可读性是相当强的.2.4.2服务器端的JSON数据处理JSON数据的处理包括服务端数据的组装及客户端数据的解析两大部分.在服务器端,要将用户访问的结果组装成JSON的数据格式.如果不借助第三方类库而仅使用iava基本对象的话,可以用字符串拼接的方式来生成符合JSON格式要求的字符串,通常来说推荐使用StringBuffer或StringBuilder对象来完成这一任务.显然,这种操作方式是笨拙且繁琐的,想要更简便更直观的生成JSON字符串,应该借助其它专门的JSON软件包来实现.目前Java用于支持JSON比较成熟的软件包org.json包及net.sf.json包,两种方式并没有本质上的区别,选择使用哪一种完全可由程序开发者的熟悉程度及项目的具体情况来决定.以org.json包为例,它提供了多种对象用于JSON数据的处理,如JSONArray,JSONObjeet等.JSON的数据组织方式很像Java中的Map对象,而利用JSONArray对象就可以直接将Map对象转换为JSON格式.简单实现代码如下:/声名Map对象.用于存放查寻数据结果Map<String,Object>map=newHashMap<String,Object>0;,/将结果放入Map对象中map.put(key,value);|庐名JSONArray对象JSONArrayjsonarray;,/转换map对象jsonarray.put(map);/以String类型返回json字符串Returnjsonarray.toString0;2.4.3客户端的JSoN数据处理JSON的一大优势就是它是完全基于Javascfipt的,那么客户端如果用浏览器来呈现数据结果,就可以在不依赖任何第三方AP1支持的情况下轻松的实现数据的解释.在浏览器中可以像读取本地Javascfipt对象一样使用服务端传递过来的JSON数据.如得到查询结果数据格式如下:id:1,nanle:jimmy,age:27).在浏览器中,可直接将访问结果附给Javascfipt对象,如:Vatuser=.id:l,name:jimmly,age:27,接下来就可以用的方式来获取name字段的具体值.对于一些大字段类型的多媒体数据就需要使用Java语言进行再次解析了.以Blob类型的数据为例,服务器端已经将该种数据处理成byte数组并转换成字段串格式再返回给客户端,客户端要想还数据以本来面目就不得不进行再一次的反向转换.客户端得到的数据类似如下格式123,24,46,9,一23,一78,36,.,这时候同样需要借助第三方软件包来还数据于原始形式.将如前所诉的字符串转换成字符串数组再转换为byte数组中,继而可以将byte数组的数据转换为具体的文件.简单代码如下:bytebytes=newbytestrArray.1ength;intindex=0:,/将数据存人byte数组中for(Strings:strArray)bytesindex=Byte.valueOf(s);index+;,/实现byte数组到文件的转换8630数据库与信息蕾曩;本栏目责任编辑:闻翔军第5卷第31期(2009年11月)ComputerKnowledgeandTechnology电脑知识与技术tryFileUtils.writeByteArrayToFile(newFile(pic.JPg),bytes);lcatch(Exceptione)e.printStackTrace0;2.5Axis2发布和调用WebService数据访问服务远程数据访问的最终实现,是要将编译好的程序代码发布为WebService服务.发布为服务的程序中包括了对数据库进行操作的具体方法.分别有实现insert,update,select,delete的方法以及批量insert,update等方法.服务的发布将借助axis2框架来完成.Axis2是一个成熟的WebService发布和调用框架,通过axis2可以轻松的将iava类发布为WebService,一个POJO中所有的Dublic方法都将被发布成WebService方法.同时,axis2可以支持服务的热发布(hotdeploy)及热更新(hotupdate),即服务的发布及更新过程中,都不用重新启动服务器,这在许多应用中都是大有益处的目.简单的说,在应用项目中部署好axis2以后,只需将要发布的iava类编译好拷贝到特定的目录下,服务器运行后axis2就自己将其发布为WebService了.服务的访问则需要一定的代码工作来完成,从理论上说,WebService可以被任何支持SOAP协议的语言调用.以java为例,调用WebService的客户端代码如下:,RPC方式调用WebServiceRPCServiceClientserviceClient:newRPCServiceClient0;Optionsoptions=serviceClient.getOptions0;,指定要调用的WebService的URLEndpointReferencetarget=newEndpointReference(http:/localhost:8080/axis2/services/dateTable);options.setTo(target);,/指定要调用方法的参数值Object】opAddEntryArgs=newObjectfuser,123l;,/指定要调用方法的返回值数据类型的Class对象Class】classes=newClassString.class;,/指定要调用的方法及WSDL文件的命名空间QNameopAddEntry
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025光纤施工合同
- 2025出租车股份转让合同
- 新技术引进及人才培养计划
- 汽车电子设备调试与维修手册
- 生物技术制药产业试题
- 2025年海口货运从业资格证模拟考试题库及答案详解
- 2025年贵阳道路运输货运从业资格证模拟考试题库
- 2025年青海货运从业资格考试题目大全
- 2025年昌吉道路货运输从业资格证模拟考试题库
- 智能能源数据分析服务协议
- 河北省部分重点中学2024-2025学年高三下学期3月联合测评(T8联考)化学试题(含答案)
- 住宅老旧电梯更新改造工作指南汇报- 中国电梯协会
- 物流企业防汛演练方案与流程
- 2024年重庆联合产权交易所集团股份有限公司招聘考试真题
- 2024年陕西省县以下医疗卫生机构定向招聘考试真题
- 广西柳州银行招聘考试真题2024
- DB34T 5102-2025巢湖流域农田面源污染防控技术指南
- 传统机械切削加工行业车间绩效考核方案
- 7.2做中华人文精神的弘扬者 教学设计-2024-2025学年统编版道德与法治七年级下册
- 四川省宜宾市2024-2025学年高一上学期期末学业质量监测物理试卷(含答案)
- T-SEEPLA 08-2024 水生态监测环境 DNA荧光定量PCR法
评论
0/150
提交评论