论文部分内容阅读
〔摘 要〕研究了使用XML结合SOAP、WSDL等技术解决校园信息化建设中数据重复和信息孤岛等问题的方案。首先进行数据建模,将校园异构系统信息表述为标准的XML格式,通过SOAP封装、WSDL描述实现对信息的请求、响应和传输,解决校园分布式环境下数据格式不一致的难题,实现异构系统之间的通讯,实现的资源共享。
〔关键词〕可扩展标记语言;简单对象访问协议;Web服务描述语言;统一描述、发现和集成
〔中图分类号〕G203 〔文献标识码〕A 〔文章编号〕1008-0821(2009)07-0076-03
Research and Design on the Campus Information
Shared Scheme Based on XML/SOAPDu Juan
(College of Economy and Management,Southwest University of Science and Technology,Mianyang 621010,China)
〔Abstract〕This paper studied the scheme that solved the problems of data repetition and isolated information island in the campus information construction using XML and SOAP,WSDL and other Web services technology.First,set data modeling,described the campus heterogeneous systems information to standard XML format,then realized the request,response and transmission of information through SOAP packaging and WSDL description,solved the difficult problem of inconsistent data formats in campus distributed environment,realized the communications of heterogeneous systems,realized resources sharing.
〔Key words〕XML;SOAP;WSDL;UDDI
现阶段高校内部教学、科研、办公、管理等各方面事务都逐渐从单纯的手工、文档管理方式向信息化、系统化管理发展。然而,在实现多个基于本地数据库的信息管理系统的同时,出现了信息重复、资源浪费、交互困难的情况,随之而来的还有信息不同步、形成资源孤岛等问题。
以XML作为信息存储和交换的格式,可以很好的解决校园中存在的“信息孤岛”问题,实现不同系统之间的集成与交互以及异构数据库间的数据共享。XML不仅提供具有意义的数据,也提供了验证的方式(XML Schema),使得程序能轻易地获得内容,并能够彻底地完成内容数据和表达方式的分离。将XML作为标准的信息表示格式,同时利用基于XML的开放的数据接口和分布式数据管理能力,实现对跨平台、各种异构数据库的统一数据交换和管理,实现数据在全校部门、学院之间顺畅的流通。数据交换的核心问题是信息的标准化,主要解决信息的可理解性问题,包括人和机器对信息的理解,最重要的是机器对信息的识别,并能根据数据进行自动处理。XML为信息的标准化提供了有力的工具。在校园信息平台中,各部门、学院之间使用XML作为数据交换的统一格式,用XML统一表示来自不同数据源的数据,可以实现系统间的数据交换,实现信息共享[4]。
其次,还必须有一种方法来进行消息的传递。基于XML的简单对象访问协议SOAP可以和任何的传输协议联合使用,可以方便地穿越防火墙,面向服务体系结构中的发布、查找和绑定操作都可以得到SOAP的支持。将SOAP HTTP应用于校园分布式信息平台中,实现对校园分布式环境中XML格式的数据的封装和传输,进而实现部门之间的便利信息交互。另外,使用WSDL来描述Web服务,对服务的实现和接口进行标准化的定义,为部门、学院之间的服务调用提供具体的方法。
1 数据建模
在XML的项目中,首先应该创建标准的数据格式。为此我们首先要考虑在本校园分布式信息平台的开发模块中涉及到哪些数据,定义描述数据交换中所涉及事实的数据模型。具有高置信度的模型一旦被创建,数据模型便可以转换成为schema,然后才能继续开展以后的工作。
首先,让我们对校园信息化建设中的“党建”、“人事”信息进行数据分析。学校的“党建”管理工作的目的在于管理全校党员的党建信息,其中的党建信息涉及到很多数据项。通过走访和调查,经过分析和整理,得到“党建”管理模块的数据逻辑结构,其中包括姓名、所在支部、申请入党时间、党校学习情况、入党时间、转正时间等数据项。同理,“人事”管理模块的数据逻辑结构包括编号、姓名、性别、出生年月、参加工作时间、职称、学历等数据项,如图1所示。
接下来,为了可以结构化地定义有关数据,需要对以上两个模块进行数据建模。一般来说,就是定义Schema文件,在定义了Schema后,所有的数据都将按照这个Schema来组织和检查。XML Schema是一种控制文档结构的方法,使用XML语法,具有XML的特点。作为XML语言的主要模块,Schema对标识的标准化模式起着极其重要的作用。因为模式在发送者和接收者之间规定了强制性的协议,有利于文档之间的信息交流,而且可以在不同的群体之间共享,使得在不同的应用程序间创建、管理和处理相同的文件变得容易,共享数据模式极大地简化了XML词汇的创建和维护,提高了数据的可靠性[5]。
在开发过程中,我们采用Axis这个Soap引擎来实现对数据的建模:
首先在服务提供方开发Java接口和类,然后使用Axis中的Java2WSDL工具从Java接口和类创建WSDL,WSDL中的types元素描述了数据的Schema。数据项信息体现在定义的Java类中,该类的编写符合JavaBean的规范,简单地说就是通过get/set方法来定义数据项。例如,组织部定义“党建”模块的Java类:
public class Dangjian implements java.io.Serializable{
private java.lang.String JPTime;∥定义“入党时间”
……
public java.lang.String getJPTime(){
? return JPTime;}
public void setJPTime(java.lang.String JPTime){
? this.JPTime=JPTime;}
……}
同时,把方法的参数和返回值数据类型设为对象,比如提供一个接口用来发送短信息,那么希望接口的参数是一个消息对象,这个消息对象封装了一条信息的所有内容包括发送者、接收者、发送时间、信息内容等等。因为如果把每个内容都做成一个参数,那这个接口的参数可能会非常的多,因此封装成对象是很有必要的。Axis要求复杂类型对象的编写必须符合JavaBean的规范,就是对象的属性是通过get/set方法来访问的。
创建的Java接口部分代码如下:
public interface DangjianService extends java.rmi.Remote{
public dj7.Dangjian getDangjianInfo(java.lang.String in0);∥查询单条记录的方法
public boolean deleteDangjianInfo(java.lang.String in0);∥删除记录的方法
public dj7.Dangjian[] getAllDangjianInfo(java.lang.String in0);∥查询多条记录的方法
public boolean addDangjianInfo(java.lang.String[] in0);∥添加记录的方法
public boolean modifyDangjianInfo(java.lang.String[] in0);∥修改记录的方法
public int getRowCount(java.lang.String in0);∥返回记录条数
}
用Java2WSDL工具从上述接口、类创建WSDL文件。生成的WSDL文档的types元素是Dangjian这个JavaBean到WSDL的映射,它描述了Web服务与用户之间交换的消息的所有数据类型,XML Schema是默认的类型系统。部分WSDL文档:
……
上述Schema文件分别定义了Web Services环境中传输“党建信息”“人事信息”时所要遵守的的格式。如:人事处的“人事信息”包含“姓名”、“职称”、“学历”等项,元素ZhiChen为string类型,可以为空……组织部的“党员信息”包含“入党时间”、“共青团推优时间”、“入党证书编号”等项,元素JPTime为string类型,可以为空……人事处、组织部服务器端将包含调用结果的实例对象按照这个Schema文件的格式要求转换成客户端所要求的XML文档,进而构造返回给客户端的SOAP消息,完成服务的请求;客户端可以根据这个Schema文件完成对响应SOAP消息的解析(具体通过WSDL中types元素映射生成的类来实现,该类实现了序列化接口)。
2 信息的传输
其次,是要实现将XML格式的数据通过SOAP进行传输。采用Axis引擎实现数据的SOAP传输,主要通过jaxrpc来实现。对于客户端,主要使用Call类来完成调用Web服务,在客户端的stub类中,设置一个org.apache.axis.client.Call对象来调用服务,实际上,服务的请求和响应都是靠Call类中的invoke()方法来实现的,在调用invoke()方法前,需要对Call的属性进行设置,其中,setTargetEndpointAddress()方法设置了服务的endpoint,这个标志着服务地址的参数是从Locator类中传来的,在本系统中的值为:http:∥222.196.35.143:8080/axis/services/DangjianService7,setOperationName()方法设置了服务操作名称及其方法。invoke()方法把Call对象转换成XML SOAP请求,并把请求发送给endpoint,当返回应答后,invoke()方法返回一个java.lang.Object对象,这个对象中包含的或者是客户端需要得到的服务器应答,或者是错误信息。服务器端响应过程如图2所示。
在Axis处理SOAP消息时,会涉及到序列化或反序列化问题。序列化指的是把一个Java对象写到一个XML文档上的过程;反序列化则指从一个XML文档中读取一个对象定义并基于该定义创建一个Java对象的过程。Axis提供了许多类来实现内建支持类型的序列化和反序列化,用Java的基本数据类型及其对象形式作为方法参数时是无缝的,不需要考虑序列化和反序列化的问题。Call对象的registerTypeMapping()方法起到为序列化/反序列化器注册类型映射信息的作用。
实现了SOAP封装后,信息以一个标准的xml格式在校园分布式环境中进行传输。同理,其他部门如科技处、学生处等也能制订自己的模式文件,以XML格式表述信息,解决数据格式不一致的难题和异构系统之间的通讯,从而使不同应用系统之间交换数据变得容易,实现校园分布式环境下的资源共享。符合模式文件,含有党员信息的XML示例文件如下:
<?xml version=″1.0″……>
?
?1999-02-08
?2435646
张三 ……
?
3 服务的发布和发现
最后,我们需要让所设计的Web服务能够让其他部门所找到,所以要应用一些方法来让服务开发者发布服务,让服务的使用者发现Web服务,UDDI确定了一种机制,使得校园分布式环境下的Web服务提供者可以为其Web服务作广告,也使得Web服务调用者能找到其感兴趣的Web服务。
参考文献
[1]张云涛,温浩宇.应用Web Services降低供应链信息系统总拥有成本[J].现代情报,2008,(7):53-55.
[2]柳巧玲,丛秋实,等.基于Web服务的业务流程管理集成应用研究[J].情报杂志,2007,(2):51-52.
[3]Fu X,Bultan T,Su J.WSAT:A Tool for Formal Analysis of Web Services[C].Proceedings of the 16th International Conference on Computer Aided Verification,2004.7.
[4]孙霞.基于XML的数字化校园信息发布与交换技术研究[D].武汉:武汉理工大学,2005:4-26.
[5]李益红,王娟.XML及其在电子商务中的应用[J].福建电脑,2004,(3):34.
〔关键词〕可扩展标记语言;简单对象访问协议;Web服务描述语言;统一描述、发现和集成
〔中图分类号〕G203 〔文献标识码〕A 〔文章编号〕1008-0821(2009)07-0076-03
Research and Design on the Campus Information
Shared Scheme Based on XML/SOAPDu Juan
(College of Economy and Management,Southwest University of Science and Technology,Mianyang 621010,China)
〔Abstract〕This paper studied the scheme that solved the problems of data repetition and isolated information island in the campus information construction using XML and SOAP,WSDL and other Web services technology.First,set data modeling,described the campus heterogeneous systems information to standard XML format,then realized the request,response and transmission of information through SOAP packaging and WSDL description,solved the difficult problem of inconsistent data formats in campus distributed environment,realized the communications of heterogeneous systems,realized resources sharing.
〔Key words〕XML;SOAP;WSDL;UDDI
现阶段高校内部教学、科研、办公、管理等各方面事务都逐渐从单纯的手工、文档管理方式向信息化、系统化管理发展。然而,在实现多个基于本地数据库的信息管理系统的同时,出现了信息重复、资源浪费、交互困难的情况,随之而来的还有信息不同步、形成资源孤岛等问题。
以XML作为信息存储和交换的格式,可以很好的解决校园中存在的“信息孤岛”问题,实现不同系统之间的集成与交互以及异构数据库间的数据共享。XML不仅提供具有意义的数据,也提供了验证的方式(XML Schema),使得程序能轻易地获得内容,并能够彻底地完成内容数据和表达方式的分离。将XML作为标准的信息表示格式,同时利用基于XML的开放的数据接口和分布式数据管理能力,实现对跨平台、各种异构数据库的统一数据交换和管理,实现数据在全校部门、学院之间顺畅的流通。数据交换的核心问题是信息的标准化,主要解决信息的可理解性问题,包括人和机器对信息的理解,最重要的是机器对信息的识别,并能根据数据进行自动处理。XML为信息的标准化提供了有力的工具。在校园信息平台中,各部门、学院之间使用XML作为数据交换的统一格式,用XML统一表示来自不同数据源的数据,可以实现系统间的数据交换,实现信息共享[4]。
其次,还必须有一种方法来进行消息的传递。基于XML的简单对象访问协议SOAP可以和任何的传输协议联合使用,可以方便地穿越防火墙,面向服务体系结构中的发布、查找和绑定操作都可以得到SOAP的支持。将SOAP HTTP应用于校园分布式信息平台中,实现对校园分布式环境中XML格式的数据的封装和传输,进而实现部门之间的便利信息交互。另外,使用WSDL来描述Web服务,对服务的实现和接口进行标准化的定义,为部门、学院之间的服务调用提供具体的方法。
1 数据建模
在XML的项目中,首先应该创建标准的数据格式。为此我们首先要考虑在本校园分布式信息平台的开发模块中涉及到哪些数据,定义描述数据交换中所涉及事实的数据模型。具有高置信度的模型一旦被创建,数据模型便可以转换成为schema,然后才能继续开展以后的工作。
首先,让我们对校园信息化建设中的“党建”、“人事”信息进行数据分析。学校的“党建”管理工作的目的在于管理全校党员的党建信息,其中的党建信息涉及到很多数据项。通过走访和调查,经过分析和整理,得到“党建”管理模块的数据逻辑结构,其中包括姓名、所在支部、申请入党时间、党校学习情况、入党时间、转正时间等数据项。同理,“人事”管理模块的数据逻辑结构包括编号、姓名、性别、出生年月、参加工作时间、职称、学历等数据项,如图1所示。
接下来,为了可以结构化地定义有关数据,需要对以上两个模块进行数据建模。一般来说,就是定义Schema文件,在定义了Schema后,所有的数据都将按照这个Schema来组织和检查。XML Schema是一种控制文档结构的方法,使用XML语法,具有XML的特点。作为XML语言的主要模块,Schema对标识的标准化模式起着极其重要的作用。因为模式在发送者和接收者之间规定了强制性的协议,有利于文档之间的信息交流,而且可以在不同的群体之间共享,使得在不同的应用程序间创建、管理和处理相同的文件变得容易,共享数据模式极大地简化了XML词汇的创建和维护,提高了数据的可靠性[5]。
在开发过程中,我们采用Axis这个Soap引擎来实现对数据的建模:
首先在服务提供方开发Java接口和类,然后使用Axis中的Java2WSDL工具从Java接口和类创建WSDL,WSDL中的types元素描述了数据的Schema。数据项信息体现在定义的Java类中,该类的编写符合JavaBean的规范,简单地说就是通过get/set方法来定义数据项。例如,组织部定义“党建”模块的Java类:
public class Dangjian implements java.io.Serializable{
private java.lang.String JPTime;∥定义“入党时间”
……
public java.lang.String getJPTime(){
? return JPTime;}
public void setJPTime(java.lang.String JPTime){
? this.JPTime=JPTime;}
……}
同时,把方法的参数和返回值数据类型设为对象,比如提供一个接口用来发送短信息,那么希望接口的参数是一个消息对象,这个消息对象封装了一条信息的所有内容包括发送者、接收者、发送时间、信息内容等等。因为如果把每个内容都做成一个参数,那这个接口的参数可能会非常的多,因此封装成对象是很有必要的。Axis要求复杂类型对象的编写必须符合JavaBean的规范,就是对象的属性是通过get/set方法来访问的。
创建的Java接口部分代码如下:
public interface DangjianService extends java.rmi.Remote{
public dj7.Dangjian getDangjianInfo(java.lang.String in0);∥查询单条记录的方法
public boolean deleteDangjianInfo(java.lang.String in0);∥删除记录的方法
public dj7.Dangjian[] getAllDangjianInfo(java.lang.String in0);∥查询多条记录的方法
public boolean addDangjianInfo(java.lang.String[] in0);∥添加记录的方法
public boolean modifyDangjianInfo(java.lang.String[] in0);∥修改记录的方法
public int getRowCount(java.lang.String in0);∥返回记录条数
}
用Java2WSDL工具从上述接口、类创建WSDL文件。生成的WSDL文档的types元素是Dangjian这个JavaBean到WSDL的映射,它描述了Web服务与用户之间交换的消息的所有数据类型,XML Schema是默认的类型系统。部分WSDL文档:
上述Schema文件分别定义了Web Services环境中传输“党建信息”“人事信息”时所要遵守的的格式。如:人事处的“人事信息”包含“姓名”、“职称”、“学历”等项,元素ZhiChen为string类型,可以为空……组织部的“党员信息”包含“入党时间”、“共青团推优时间”、“入党证书编号”等项,元素JPTime为string类型,可以为空……人事处、组织部服务器端将包含调用结果的实例对象按照这个Schema文件的格式要求转换成客户端所要求的XML文档,进而构造返回给客户端的SOAP消息,完成服务的请求;客户端可以根据这个Schema文件完成对响应SOAP消息的解析(具体通过WSDL中types元素映射生成的类来实现,该类实现了序列化接口)。
2 信息的传输
其次,是要实现将XML格式的数据通过SOAP进行传输。采用Axis引擎实现数据的SOAP传输,主要通过jaxrpc来实现。对于客户端,主要使用Call类来完成调用Web服务,在客户端的stub类中,设置一个org.apache.axis.client.Call对象来调用服务,实际上,服务的请求和响应都是靠Call类中的invoke()方法来实现的,在调用invoke()方法前,需要对Call的属性进行设置,其中,setTargetEndpointAddress()方法设置了服务的endpoint,这个标志着服务地址的参数是从Locator类中传来的,在本系统中的值为:http:∥222.196.35.143:8080/axis/services/DangjianService7,setOperationName()方法设置了服务操作名称及其方法。invoke()方法把Call对象转换成XML SOAP请求,并把请求发送给endpoint,当返回应答后,invoke()方法返回一个java.lang.Object对象,这个对象中包含的或者是客户端需要得到的服务器应答,或者是错误信息。服务器端响应过程如图2所示。
在Axis处理SOAP消息时,会涉及到序列化或反序列化问题。序列化指的是把一个Java对象写到一个XML文档上的过程;反序列化则指从一个XML文档中读取一个对象定义并基于该定义创建一个Java对象的过程。Axis提供了许多类来实现内建支持类型的序列化和反序列化,用Java的基本数据类型及其对象形式作为方法参数时是无缝的,不需要考虑序列化和反序列化的问题。Call对象的registerTypeMapping()方法起到为序列化/反序列化器注册类型映射信息的作用。
实现了SOAP封装后,信息以一个标准的xml格式在校园分布式环境中进行传输。同理,其他部门如科技处、学生处等也能制订自己的模式文件,以XML格式表述信息,解决数据格式不一致的难题和异构系统之间的通讯,从而使不同应用系统之间交换数据变得容易,实现校园分布式环境下的资源共享。符合模式文件,含有党员信息的XML示例文件如下:
<?xml version=″1.0″……>
?
?
?
?
3 服务的发布和发现
最后,我们需要让所设计的Web服务能够让其他部门所找到,所以要应用一些方法来让服务开发者发布服务,让服务的使用者发现Web服务,UDDI确定了一种机制,使得校园分布式环境下的Web服务提供者可以为其Web服务作广告,也使得Web服务调用者能找到其感兴趣的Web服务。
参考文献
[1]张云涛,温浩宇.应用Web Services降低供应链信息系统总拥有成本[J].现代情报,2008,(7):53-55.
[2]柳巧玲,丛秋实,等.基于Web服务的业务流程管理集成应用研究[J].情报杂志,2007,(2):51-52.
[3]Fu X,Bultan T,Su J.WSAT:A Tool for Formal Analysis of Web Services[C].Proceedings of the 16th International Conference on Computer Aided Verification,2004.7.
[4]孙霞.基于XML的数字化校园信息发布与交换技术研究[D].武汉:武汉理工大学,2005:4-26.
[5]李益红,王娟.XML及其在电子商务中的应用[J].福建电脑,2004,(3):34.