基于WebService的数据共享设计.doc
Data Sharing Design Based on WebService涂雨晨Tu Yuchen(江西财经大学外国语学院,江西 南昌 330013)(Faculty of Foreign Languages,Jiangxi University of Finance & Economics,Jiangxi Nanchang 330013)摘要:随着计算机技术的不断发展,基于网络教学的软件也越来越多。然而每个软件都是一个独立的个体,无法与其他系统进行数据共享。如何把各种软件系统中有关联的信息融合到一起?本文提出一种基于 Java 的 WebService 数据共享的解决方案。该设计方案能解决在不同系统中实现数据共享的问题,而且还具 有一定的通用性。关键词:网络教学;WebService;数据共享中图分类号:TP311文献标识码:A文章编号:1671-4792(2012)05-0036-03Abs tra ct: With the development of computer technology, there appears more and more teaching softwarebased on the network. Every software is an independent subject, it's impossible to share data with other system. How to put the related information of all kinds of software system together? This paper proposes a WebService data sharing solution based on Java. The design can solve the problem of data sharing in different systems, and also has some versatility.Ke ywords : Network Teaching; WebService; Data Sharing0 引言随着信息化水平的不断提高,特别是近年来,高 等教育迅猛发展,有许多高校都存在多校区问题,这 给教学资源的分配带来了一定的麻烦。然而通过网 络教学软件就可以发挥其不受地域限制的优势,解 决这一难题。但由于各种软件建设和开发都是自成 体系,缺乏统一的标准和规范,不同语言、平台的软 件间很难形成数据资源的共享。如何把不同软件厂 商生产的各种软件通过某种传递通道方便、快捷、安 全地集成起来呢?WebService 技术可以说是一种很 好的解决方案。1 We bS e rvice 工作原理WebService 可以完全基于 XML、XSD 等独立 于平台、独立于软件供应商的一种标准。通过 Web- Service,我们可以使用任何语言在任何支持网络通 信的平台中实施运行。WebService 通过网络协议和一定的标准来发布这种服务。发布的一端叫 Web-Service 服务端,该服务端用一种方法来描述服务的 使用,这就属于 WSDL。网络的另一端即 WebSer- vice 客户端,该客户端需要以一种标准的协议来调 用此服务,这属于 SOAP。具体工作原理如图一所 示。图一 We bS e rvice 工作原理图基于WebService 的数据共享设计2 基于 We bS e rvice 的中间层设计方案在一般的网络教学系统中,用户数据往往需要 自行注册,或者通过某种数据格式进行导入,如 ex- cel 文件、文本文件等。这些数据往往来自于教务管 理系统,如果这些数据有变化,那对于网络教学系统 中的用户数据管理来说,管理起来将更加麻烦,所以 按照以往的经验,我们需要对网络教学系统进行程 序改造,使之能和现有的教务管理系统进行对接。 但由于网络教学系统与教务管理系统的开发平台、 开发语言都不同,这种对接几乎成了不可能完成的 任务。但是利用 WebService 技术可以轻松解决这一 难题,下面我们将以传递一个学生对象集合为例来 讲述 WebService 传递数据的整个过程。首先,我们需要开发一个 WebService 服务端。 服务端的开发可以根据实际需求来做,应用系统需 要什么,开发时我们就提供什么。我们可以把具体 的业务需求封装成方法,待方法实现后,生成描述 WebService 应用的 WSDL 文档,然后加入 web 发 布。WebService 客户端根据提供的 WSDL 文档得到 具体的方法说明,然后可以调用此方法。客户端将 调用信息包括方法名和参数加入到 SOAP 格式消 息中通过 http 传送给 WebService 服务端。服务端从 SOAP 消息中获得调用信息,然后执行方法,将返回 对象序列集合结果加入到 SOAP 消息中通过 http 传回。客户端代理得到这个 SOAP 消息后,解析处 理生成对象集合结果。在下面的例子中我们将用传 递学生对象为例来描述 WebService 的工作流程。2.1 WebService 服务端 在此实例中,我们将开发一个 WebService 服务端,服务端的主要功能是将教务管理系统中的学生 数据取出,然后生成接口,进行发布,接收客户端发 来的 SOAP 请求消息,解析其中的方法调用和参数 格式。根据 WSDL 和 WSML 的描述,调用相应的 COM 对象来完成指定功能,并把返回值放入 SOAP 回应消息返回给用户。具体来说,开发重点可以分 为三部分:获取数据、对象转换、WSDL 发布。2.1.1 获取数据样可以更好地为数据的获取打下基础。2.1.2 对象转换根据具体的业务需求从数据库中获取数据,然 后建立 Student 对象。再将查询出来的 ResultSet 集 合,通过字段与对象属性的一一对应转换成 Student 对象集合。这样可以使得业务更加明确,使用方法也 更加方便。2.1.3 WSDL 发布本例中采用了 JAX-WS 工具包对具体的业务 方法进行封装与发布。我们只需要通过 Java 语言定 义远程调用所需要实现的接口 SEI (Service End- point Interface),并提供相关的实现, 通 过 调 用 JAX-WS 的服务发布接口就可以将其发布为 Web- Service 接口。JAX-WS 会自动帮我们生成 WSDL 文 档(服务描述文件)以供客户端调用。2.2 WebService 客户端几乎任何语言都可以调用 WebService 提供的 服务。在调用 WebService 服务前,首先取得描述服 务端的标准文档即 WSDL 文档,通过解析文档中的 内容,可明白服务端调用的方式、输入参数与输出结 果的类型与要求,然后客户端根据需要,生成恰当的 SOAP 请求消息 (指定调用的方法和已经调用的参 数),发往服务端。在客户端,首先要创建一个 Http- Connector 对象,负责 HTTP 连接。设定 Connector 的一些头部信息,比如 EndPoinURL 和 SoapAction 等。如果网络连接需要使用代理服务器,那也要在这里设定相关的信息。接着创建 SoapSerializer 对象,用于生成 SOAP 消息。按照 WSDL 里定义,把所有参数按顺序序列化,得到一个完整的 SOAP 请求消 息。该 SOAP 消息,通过 HttpConnector 被发送到服 务端。最后,生成一个 SoapReader 对象,负责读取服 务端返回的 SOAP 消息,取得其中的返回值。在这 里我们使用 JAX-WS 工具,通过 URL 得到的 WS- DL 文件 JAX-WS API 可以解析 WSDL 标准文档产生 相应的调用方法并在内部生成所有 WebService 的方 法和参数信息。之后,你就可以像调用接口里的方法一 样,调用里面所有的方法。调用示意图如图二所示。con.close(); / 关闭数据连接return list; / 返回对象集合4 结束语本文所述 WebService 技术在网络教学系统中 得到了使用,实现了不同系统之间的数据对象传递 过程。由于其结构简单、使用方便、通用性强,在实际 应用中有着良好的效果。通过使用 WebService 技术 能够使不同系统在不同平台中进行信息共享,使单 个系统不再是“信息孤岛”,是系统间进行数据传递 的很好的解决方案。public class QueryTeacherSchedule public List<ScheduleYjsRs> findres (String term, String teacherCode) / 通过学期,教师编号,查询教学课表集合Conn con = new Conn("YjsScheduleRs"); / 获取 连接String creditsql=" SELECT * FROM V_Teacher- Schedule WHERE (Term = ? ) AND (firstteachercode= ? ) " / 查询 sql 语句List<ScheduleYjsRs>list=newAr-rayList<ScheduleYjsRs>(); / 准备 Listtry PreparedStatement s = con.prepareStatement(creditsql);s.setString(1,term); / 学期参数 s.setString(2,teacherCode); / 教师参数 ResultSet rs = s.executeQuery(); / 取得结果集list = DbUtils.populate (rs, ScheduleYjsRs.class);/ 返回结果的列表集合,并强制转换成教学课表对 象集合。 catch (SQLException e) e.printStackTrace(); catch (InstantiationException e) e.printStackTrace(); catch (IllegalAccessException e) e.printStackTrace();finally参考文献1庄秀丽,孙波.基于 WebService 异构教育资 源库数据共享方法的研究与实现J.电化教育研究,2003, (02):47-50.2丁永刚,雷体南.基于 Web Service 的校际教 育资源库系统集成研究J.中国教育信息化:高教职 教,2008,(08):41-43.3郭剑毅,申立中,马桂芳,等.基于 C/S 与 B/S 的高校科研管理信息系统的设计与实现J.计算机 工程与应用,2003,(01):212-214.作者简介涂雨晨,江西南昌人,讲师,硕士。