16.1 系统功能简介和架构设计

本章所介绍的系统是一个Web Service项目,它以传统的Java EE应用为基础,在该应用的前端增加了CXF框架,从而可将应用中的业务方法暴露成Web Service操作,允许其他平台、其他语言的应用来调用。

16.1.1 系统功能简介

本章所介绍的系统是一个功能不太复杂的Web Service项目——电子拍卖系统,本系统从实际电子商务平台上抽取,只取出了其中部分核心功能实现,以作为示范应用。本系统遵循良好的Java EE系统架构,并将传统Java EE应用的业务方法暴露成了Web Service操作。

本章的电子拍卖系统其实就是一个电子商务平台,只要将该系统部署在互联网上,全球的客户都可以在该系统上发布想售出的商品,也可以对拍卖中的商品参与竞价。整个过程无须任何人工干预,由系统自动完成。

如果系统中提供与电子银行的接口,将可以通过电子银行的操作,实现从买家到卖家的自动付款。一旦付款成功,就可以利用全球物流供应系统将拍卖物品发送到买家手中。可见,这种电子拍卖系统是一种开放式的、成本极其低廉的系统,大部分工作无须人工干预,系统自动完成管理。当然,由于本系统是一个示范系统,因此不提供与电子银行的接口,只是模拟了用户添加拍卖物品、参与拍卖的基本行为。拍卖结束后,系统会判断物品被最高竞价者获得。

本电子拍卖系统模拟了eBuy系统的部分功能,抽取了实际电子拍卖系统的部分功能,但没有提供如个人身份认证、信用管理等细节,而只主要实现了电子拍卖系统的核心功能。

本系统要求用户在参与拍卖之前,必须先登录,但由于用户调用Web Service的操作总是单次调用,因此本应用并未维护客户端和服务器端的状态,每次客户端调用需要权限检查的Web Service操作时都应该传入用户名、密码作为参数。

对于物品的管理,本系统可以查询拍卖物品、添加拍卖物品、增加物品种类、竞价处理,以及发送邮件通知用户所参与的竞价。

注册用户可以添加用户物品,添加之前必须先登录系统,因此每次远程调用Web Service操作时都应该传入该用户的用户名、密码作为参数。

未登录用户可以浏览当前拍卖的物品,以及流拍的物品。

注册用户可以参与竞价,参与的竞价系统将提供邮件通知用户。

16.1.2 系统架构设计

本系统底层主要分为两层:业务逻辑层和数据服务层。其中业务规则由业务逻辑层负责完成,而数据服务层则提供数据持久化服务。

中间层采用Spring+Hibernate,为了分离控制层与业务逻辑层,又可细分为:

alt Service层(业务逻辑层),负责实现业务逻辑,对DAO对象进行正面模式的封装。

alt DAO层(数据访问对象层),负责与持久化对象交互,封装了数据的增、删、查、改等原子操作。

alt PO层(持久化对象层),通过实体/关系映射工具将关系型数据库的数据映射成对象,实现以面向对象方式操作数据库,这个系统采用Hibernate作为O/R Mapping框架。

系统中间层主要由上面几层组成,系统的所有业务逻辑功能都由业务逻辑组件提供。剩下就是通过前端将业务逻辑方法暴露出来,供客户端调用。为了暴露这些业务逻辑方法,本系统提供了两种方式:

alt 使用CXF作为前端框架,在业务逻辑层之上增加Web Service暴露,从而允许其他平台的、其他语言的程序调用这些业务逻辑方法。

alt 使用MVC框架暴露业务逻辑方法,并增加对应的表现层视图,从而允许客户端通过浏览器来访问该系统所提供的功能。

实际上本系统同时使用了上面两种方式,也就是说,本系统既可通过浏览器来访问,又对外提供了Web Service服务。

对于Struts 2框架而言,它提供了良好的MVC模式,所有的用户请求都由Struts 2的Action负责拦截,然后通过Spring提供的自动装配功能,定位Spring容器中的业务逻辑组件,调用业务逻辑组件方法来处理用户请求。

数据服务层使用MySQL数据库存放数据。

系统的总体架构如图16.1所示。

alt

图16.1 系统整体架构图

对本系统而言,关于Struts 2框架的内容不是本书介绍的重点,故本章不会对MVC层实现和Struts 2框架进行任何相关讲解,如果读者希望获取相关知识,可以参考笔者所著《Struts 2.1权威指南》。