基于 Web 服务的信息系统集成
尧飘海,张云华,朱伟
(浙江理工大学,信电学院,杭州,310018)
[摘要]:本文主要通过介绍 web 服务的相关知识,引出采用 web 服务在信息系统集成中的应
用的想法,最后采用开源软件 XFire 来详细说明 web 服务在系统集成的运用,保证了各系统
间的松散耦合的集成。
[关键词]: web 服务,WSDL,信息系统集成,Java
Information System Integration Based on Web Service
Yao Piaohai, Zhang Yunhua,Zhu Wei
(The College of Information & Electronic, ZHEJIANG SCI-TECH UNIVERSITY, 310018, China)
[Abstract]:The main idea about the paper is that through introduce some relative knowledge about
web service, then shed light on how to integrate information system based on web service .at last,
by XFire open source, we implemented the system integration in detail, maintained loosely
coupled among system.
[Key words]: web service, WSDL, information system integration, Java
1.引言
随着信息化的加速发展,很多企业、科研所和单位都遗留着一个个单独孤立存在的信息
系统,形成了各个信息孤岛,造成了相关资源信息不一致性。同时各系统在物理和地点的分
布的位置不同。数据交互大部分靠人工的方式把各系统的资源集中统一,非常的低效,还给
管理带了极大的不便。把这些系统重新开发,在成本和时间等各方面有条件的限制。于是把
各系统高效低成本的集成起来就是这类企业,科研所和单位面对的问题。在互联网广泛普及
的今天,本文就如何把各孤立存在的系统集成起来提出了采用开源软件开发的基于 web 服
务模型的系统集成方案。
2.背景
目前,各企业、科研所和单位为了实现把各孤立的系统联系起来,打造一个信息统一服
务平台,主要有以下三种实现信息系统集成的方式:
(1) 共享数据库
各系统为了实现集成,采用共享公用数据的方式,也就是把各系统中所有的数据放
在同一个数据库中,各系统间有冲突的部分只能通过协商和讨论开发。由于各开发商
都倾向于各自的系统或存在上沟通上的困难,无论是在时间还是在成本上,都是非常
费时费力的,并且破坏了各系统间的独立性,形成了紧耦合。
(2) 人工中间文件
采用人工或系统定时到各系统中收集相关数据,再通过手工或系统自动定时的生成
固定格式的文件按照一定的规格分发再各个系统中去。不仅在文件格式方面存在极大的
不便,也无法达到系统的实时和效率要求。
(3) 中间件技术
采用 CORBA(Common Object Request Broker Architecture,公共对象请求代理体系
结构 ,通用对象请求代理体系结构) ,DCOM(分布式组件对象模型),EJB(Enterprise
- 1 -
JavaBeans)等技术来实现信息系统的集成。CORBA 实现复杂,难于短时间内掌握,同
时对以后的维护成本高,可扩展性差;目前,DCOM 还无法实现对跨平台,跨语言的支
持;EJB 存在着各厂商的规范不一样,部署困难,各系统问调用复杂。
综上所述,目前现有的实现技术无论在技术,成本还是可扩展性方面都有不足。随着
B/S(Browser/Server)架构的广泛运用,Web 服务(Web Service) 作为 web 应用程序分支,是
一种热门的企业级技术。它借用于XML元标记语言,并采用了标准的规范,如SOAP,WSDL,
UDDI 等;采用 HTTP 的传输方式,可以跨越防火墙的限制;是自包含、自描述、模块化的应
用;只要将服务功能发布和定位在互联网和企业内部网上,再通过 web 调用,就可以执行
从简单到复杂商务处理请求任务;Web 服务一旦部署以后,由于它是基于标准互联网的协
议,其他任何平台和任何应用程序可以通过协议定位并调用它部署的服务,具有异构性,跨
平台性及松散耦合性,可以支持分布式系统的集成应用;Web 服务被认为是当前基于
Internet 环境下的构件编程,因此具有组件的集成和重用性;下面将介绍在 web 服务中常
用的标准规范 Web 服务器描述语言和简单对象访问协议。
WSDL (Web Services Description Language) Web 服务器描述语言是用 XML 来描
述 Web 服务的最常用的接口定义语言标准,它描述了 Web 服务的三个基本属性:
(1.)服务功能——所提供的操作(方法);
(2.)服务标准——交互的数据格式以及协议;
(3.)服务定位——协议相关的地址,WSDL 包含了对操作(方法)和消息的抽象定义,
及具体协议和规范;详细内容请参考文献[1]。
SOAP(Simple Object Access Protocol)简单对象访问协议 SOAP 是一个基于 XML 在
分布式的环境中交换信息的简单的协议。SOAP 为在一个松散的、分布式的环境中使用 XM
L 对等的交换结构化的和类型化的信息提供了一中简单的机制。SOAP 本身并不定义任何应
用语义,如编程模型或特定语义实现,它只是定义了一种简单的机制,通过一个模块化的包
装模型和对模块中特定格式编码的数据的重编码机制来表示应用语义.它包括四个部分:SO
AP 封装(envelop),封装定义了一个描述消息中的内容是什么,是谁发送的,谁应当接受并
处理它以及如何处理它们的框架;SOAP 编码规则(encoding rules),用于表示应用程序需
要使用的数据类型的实例; SOAP RPC 表示(RPC representation),表示远程过程调用和应答
的协定;SOAP 绑定(binding),使用底层协议交换信息。详细内容请参考文献[2]。
在过去,对于 Java 开发人员,采用借助于 J2EE 技术来实现 web 服务,是一件非常复
杂和烦琐的事。根本没有.Net 提供的只要提供相关的元标识声明(Annoation)语言,就可
以向 Internet/intranet 提供 web 服务。但是随着开源领域用户的不断扩大和 EJB3 规范的发布,
采用声明接口的方式向外提供服务己变得非常的简便。
Codehaus XFire 是基于 Java 架构的快速开发 web 服务的开源软件;采用了下一代 Java(J
DK6) SOAP 协议的框架,它使得面向服务的开发简单的只要运用 API 和标准支持。XFire
- 2 -
同时也具有很好的性能。因为它是基于低内存 StAX[3]模型而架构的。它支持常用的 we
b 服务的标准,如:SOAP, WSDL,WS-Security 等;具有良好的性能;支持可插拔式的绑定,
如:POJOs,XMLBeans,JAXB 等;采用不同的传输方式如:HTTP, JMS XMPP 等;并提供嵌入式
和灵巧的 API 接口函数;同时支持客户端和服务器端存根的生成。
3.实现
采用基于 Web 服务的系统集成,需要每个孤立系统都向外提供 web 服务的统一
接口,通过数字签名和数学加密等技术手段来发送 SOAP 消息,来保证 web 服务的
完整性、机密性和安全性等需求。于是客户可以通过定位相关 web 服务来进行资源
的交互。一般来说,各系统接口通常包括用户认证,用户管理和业务操作等相关模
块。下面以用户统一认证模块为例,来实现用户单点登录的功能,
(1) 用户认证系统模型
3.1 过程如下:
用户采用表单的形式,提交用户名 userName 和用户密码到某系统登录进行认证,如
果通过此系统的认证,则把用户 IP,用户名 userName 和采用 MD5 加密用户登录信息(用
户 MAC+用户密码+登录时间,记为 vcode)保存在某服务器的持久层,此加密的信息将一
直到用户从任一系统注销或超时为止才进行清除。当用户跳转到其他某系统的资源进行访
问时,通过在本系统添加系统监听,用户不需要再次输入用户名和密码。而是通过监听首
先判断用户是否登录了本系统,如果未登录,则采用未登录直接跳转或提示用户输入用户
和密码;如果己通过了本系统的认证,则同时采用表单的形式提交 vcode 到另一系统进行
调用 web 服务提供的统一接口。此接口通过发送带 vcode 和用户 MAC 参数的 SOAP 消息进
行 web 服务的调用来认证用户此用户的身份的合法性和有效性,查询和返回当前的用户
名,并直接以此用户身份登录到其他某系统,这样就可以避免用户重复输入用户名和密码
来登录多个相关的系统,从而实现了用户单点登录的功能。
3.2 代码如下:
认证用户类:
package ;
public class User {
// 通过用户Mac地址和加密用户信息查询
public String userLogin(String userMac, String validCode) {
- 3 -
String userName = false;
username = validateUser(userMac, validCode);
return userName;
}
}
采用XFire 发布web服务,首先开发人员只要集中精力完成各系统的业务类,比如用户
认证,用户添加,编辑,删除等功能,然后在classes资源文件目录下建立
META-INF/xfire/文件,通过配置业务类的相关的对外公开业务方法名,复制相
关的包到WEB-INF目录下,启动相关的web服务器,就可以看到发布的Web服务。
文件配置内容见图2,自动生成的WSDL文件,见图3。
<beans xmlns="
<service>
<name>userLogin</name> // User类公共方法名
<serviceClass></serviceClass> // User类
<style>wrapped</style>
<use>literal</use>
<scope>application</scope>
</service>
</beans>
(2) 配置内容
(3)WSDL 文件
客户端调用代码如下:
import . Service;
import . Call;
import ;
// web 服务定位
String endpoint = "http://localhost:8080/szist/services/userLogin";
// web 服务方法
String method = "userLogin";
- 4 -
// web 服务绑定参数
Object[] param = new String[]{userMac,passWord};
String userName = "";
try{
Service service=new Service();
Call call = (Call) ();
(new URL(endpoint));
(method);
// 调用 web 服务
userName = (String) (param);
// 判断用户角色权限,跳转到相关页面
("/user/");
}
catch(Exception e){
("/user/");}
}
4.总结
由以上用户认证示例可以得出,采用基于 Web 服务实现系统集成,实现了各系统间的松散耦合性,
与语言无关,支持异构系统的跨平台性等 Web 服务优点;同时系统的集成变得既简单又方便,不再像从
前一样复杂而又烦琐,具有时间和成本的优越性;随着 SOA(Service-Oriented Architectures)面向服
务的体系结构技术的发展和运用,具有良好的可扩展性。尽管采用 web 服务来实现信息系统的集成在
C/S(Client/Server)架构存在局限性,同时对事务的支持还难以控制实现,我们将在下一步的信息系统
集成中进行讨论研究。
参考文献:
[1] W3C.Web Services Description Language[EB/OL]. 2001
[2] W3C. Simple Object Access Protocol[EB/OL] .
[3] Bea.Streaming API for XML[EB/OL].
[4]杨文波等.基于 Cookie 的门户系统单点登录模型[A].计算机应用研究.2006.1001-3695
[5] Jayson Falkner, Ben Galbraith, Romin Iran,i 等.JSPWeb 编程指南
[M].司光亚,牛红,等.北京:电子工业出版社, 2002. 493-501
[6] Nicholas Chase, Understanding SOA and Web Services [EB/OL].
- 5 -
作者简介:
尧飘海(1983-),男,在读硕士研究生,研究方向:软件工程、网络应用技术等。
张云华(1965-),男,副研究员,博士,研究方向:软件工程、系统仿真、智能信息处理等。
朱伟,女,在读硕士研究生,研究方向:信号处理、软件工程等。