[摘要] web services为企业系统集成、电子商务、电子政务等提供了规范的、开放的分布式应用环境本。本文讨论了其基本概念和体系结构,并利用j2ee技术加以实现,最后给出了一个具体应用实例。
[关键词] j2ee web服务 soap 认证 apache axis
一、相关工作研究
1.web services的体系结构。各种高级和扩展的web services体系架构都是在这个三角形的基础上扩展而成的。
二、基于j2ee的web services体系
1.基于j2ee的多层结构
j2ee的多层体系结构可由图2所示。一个应用组件安装的位置,取决于该应用组件位于多层j2ee环境中的位置。这些层是客户层、web层、业务层和企业信息系统层(eis)。
(1)客户层。客户层普遍地支持html协议,也称客户代理。
(2)web层。web层由web容器运行,它包括web服务、jsp页面及显示html页面的servlet等web组件。
(3)业务层。业务层由ejb(enterprise javabean)容器运行,支持ejb、jms、jta等服务和技术。业务层和web层一起构成三层j2ee应用的中间层。
(4)企业信息系统层(eis)。提供数据存储的服务,这里主要指数据库。
2.apache axis框架
axis(apache extensible interaction system)是apache软件基金会(apache software foundation)开发的一个soap标准的java实现,是早期apache soap项目的后继。它基于java语言的soap规范(soap1.2)和soap with attachments规范的开放源代码实现。下面是该axis框架的主要特征:
● 灵活的消息传递框架;
● 灵活的传输框架;
● 数据编码支持;
● 其他特征:axis完全支持wsdl以及日志记录、出错以及故障处理机制。
axis框架主要包括以下几个关键部件:
● axis引擎:它是axis 消息处理模型的主要入口点,负责保证遵循soap的语义,还负责协调其他部件的调用次序。
● 处理器:是axis的基本构件块,又可称为处理程序。用于检查和修改soap消息,以便完成自己的工作。
● 链:也是处理器,表示的是有序的处理器的集合。
三、开发实例
在校园信息管理系统中,包括学生信息管理、教务信息管理、人事信息管理、财务管理、校园卡管理、科研信息管理、资产信息管理、行政办公系统等子系统,在这些系统中,需要重复地使用到学校各部门的信息、教职工信息、学生信息、登录权限管理信息等,采用web services技术就很好地解决了这个问题,为信息跨平台集成提供了解决方案。以下笔者以校园信息管理系统项目中的使用权限信息发布与集成为例,具体阐述web services的建立与应用。为了节省篇幅,程序进行了删简与修改。
1.web services服务程序
提供登录验证并返回权限等级的服务程序如下:
import com.sspu.util.dbconn;//连接数据库的bean
public class loginservice {
public string getpowerid(string username, string password) {
dbconn conn = new dbconn();//创建数据库连接
string powerid=null;
try {
resultset rs = conn.executequery (“select * from login where username='” + username +”' and password='” + password + “'”);
if (rs.next()) {
powerid=rs.getstring ("powerid");//返回权限等级
…… }
2.服务部署文件
服务程序需要部署到soap服务器上,可用部署文件wsdd来完成。以下是部署文件代码:
执行java org.apache.axis.client.adminclient 部署文件名.wsdd,则可将前面的web services服务程序部署到指定的soap服务器上。
3.web services发布
web services的发布、绑定与调用的接口由wsdl文件来完成。
4.web services的客户端测试
经过测试,实现了跨平台获取用户权限的功能,实现了系统集成。但是,测试中发现通过web services获取信息的效率低,影响了系统的正常运行速度,因而采用在开发过程中采用以下方法提高web services的传输速度:
(1)尽量避免soap格式序列化,首先对java而言,soap格式返回的类型有一定的局限性,给编码带来诸多不便,不能返回一定自定义的类。所以,首先把所有要传输的对象全部通过java.io包中的objectoutputstream类将对象写入字节流,objectinputstream从字节流重构对象。然后通过objectinputstream类将对象反序列化,这样可以传递本来不允许的一些对象。
(2)将序列化后的二进制流用算法实时压缩后再发送(相应在另一端必须实现首先进行解压缩后再进行反序列化),这一步应该是提高速度的关键,一般数据在压缩后会变成原来的十分之一还不到,经测试,在2m的adsl上如果采用原来的方式传递一个1000行数据的resultset需要3秒,改进后只需要0.5秒;如果在连接速度更低的网络环境下,改善效率更明显。
通过以上的改进,提高了web services的运行速度。进而把经验推广,对整个系统中的各子系统进行分析,将教务、科研、人事、财务、图书馆、网络中心、学生各管理系统(包括电子政务)中的学院信息、专业信息、专业方向信息、学生信息、教工信息这些共同的内容利用web services进行整合,逐步构建一个完成的学校信息化管理平台。
四、结论
由于j2ee的平台无关性和web services的组件性,它将成为开发web应用的一种良好选择。它不仅满足众多web应用的需求,而且简化了电子商务的开发流程。可以预见,基于j2ee的web services应用具有非常广阔的发展前景。
参考文献:
[1]p.alvarez, j.a.banares, p.r.muro-medrao, j.nogueras, f.j.zarazaga. a java coordination tool for web-service architectures: the location-based service context[j], revised papers from the international workshop on scientfic engineering for distributed java applications, 2002.11, 28~29:1~4
[2]zhou zhu, james bailey. fast discovery of interesting collections of web services. proceedings of the 2006 ieee/wic/acm international conference on web intelligence wi '06, 2006:152~160
[3]ethan cerami, simo n st.laurent, web services essentials[m], o’reilly&associates, inc., sebastopol, ca, 2002
[4]范玉珍:基于web services构架的企业应用系统的开发方法[d],中国科学院软件研究所硕士论文,2003
[5]杨德华. 利用j2ee实现web services模型与应用[j].计算机工程与应用,2004,9:122~125
[6]冉春玉赵凌燕郝锐陈才贤:用apache axis开发web服务[j],计算机应用,2004,24(5):140~142
[7]梁俊斌苏德富:开发基于j2ee的web services应用研究[j].微计算机应用,2005,26(1):26~29
[8]李慧盈李德昌段羽吕邦国:利用j2ee构建xml web services的研究[j].计算机工程与应用,2004,5:128~130
[9]钟涛:一种基于j2ee的web service体系的研究与实践[d].复旦大学硕士论文,2002:11~19