网上书店系统开发说明文档
姓名:陆旭 学号:1122110061
1 开发环境搭建过程
1.1 软件下载
开发环境所使用的软件名称及其版本信息如下表所示:
软件名称 JDK Tomcat MyEclipse 版本信息 1.6.0_02 5.5 5.5.1 bin_1.5.4 Axis2 war_1.5.4 Axis2_Codegen_Wizard_1.3.0 Axis2_Service_Archiver_1.3.0 1.2 搭建步骤
(1). 安装JDK,Tomcat服务器和MyEclipse开发环境; (2). 启动MyEclipse,配置JDK和Tomcat相关参数;
(3). 将Axis2_Codegen_Wizard_1.3.0和Axis2_Service_Archiver_1.3.0放至
Myeclipse安装目录下的plugins子目录(D:\\Program Files\\MyEclipse 5.5.1 GA\\eclipse\\plugins);
(4). 将axis2.war包拷贝到Tomcat安装目录下的webapps子目录; (5). 启动Tomcat服务器,打开浏览器,输入并访问地址
http://localhost:8080/axis2/,成功得到Axis2部署成功的信息。
1.3 所遇问题
搭建过程中以及在在服务实现及部署时均遇到了一些问题。下面简要介绍所遇问题及解决方法。
(1). 在1.2第(3)步,MyEclipse没有识别Axis2的两个插件
(Axis2_Codegen_Wizard_1.3.0和Axis2_Service_Archiver_1.3.0)。解决方法:需要在D:\\Program Files\\MyEclipse 5.5.1 GA\\eclipse\\links目录下新建文件并命名为axis-eclipse-plugin.link,文件中的内容为path=D:\\Program Files\\MyEclipse 5.5.1 GA\\eclipse\\plugins;
(2). 在使用Codegen插件来从WSDL文件生成代码时,到了最后一步出现
“
An
error
occurred
while
completing
process
-java.lang.reflect.InvocationTargetException”错误。解决方法:从axis2的
lib
库中复制“geronimo-stax-api_1.0_spec-1.0.1.jar”和
“backport-util-concurrent-3.1.jar”(这个文件我没有找到,直接从网上下载的)文件到Codegen的lib目录中,同时修改plugin.xml文件,添加
到plugin.xml文件中,保存后重新启动MyEclipse即可。
(3). 在使用Codegen插件来从WSDL文件生成代码后,代码出现错误。解
决方法:在工程中添加axis2的lib文件。
2 服务端实现及服务部署
2.1 服务实现
(1). 创建Web工程:启动MyEclipse,File->New->Project->Web Project,Project
name取名为OnlineBookstore;
(2). 导入axis2库:右键工程名OnlineBookstore->Build Path->Add External
Archives…,导入axis2的所有jar包;
(3). 生成WSDL文件:右键工程名OnlineBookstore->New->Other…->WSDL,
按照向导填写WSDL文件内容。文件名称为OnlineBookstore.wsdl,其中包含一个操作QueryBook,输入为QueryBookRequest,输出为QueryBookResponse,QueryBookRequest含有三个string类型的参数,名称分别为bookName、authorName和ISBN,QueryBookResponse也含有三个string类型的参数,名称分别为bookName、authorName和ISBN;
(4). 由
WSDL
生成服务端代码:右键工程名
OnlineBookstore->New->Other->Axis2 Wizards->Axis2 Code Generator,根据向导一步步填写相关信息,完成后需要修改服务包的名称以及test case文件的两个错误(利用MyEclipse提供的自动提示功能);
(5). 编写服务端代码:修改OnlineBookstoreSkeleton.java文件和
OnlineBookstoreTest.java文件,增加BookInfo.java文件(用于记录查询结果)。由于系统并未采用数据库支持,因此假设只提供四本书的检索(四大名著)。
OnlineBookstoreSkeleton.java代码片段
OnlineBookstoreTest.java代码片段
BookInfo.java代码片段
2.2 服务部署
(1). 将服务实现打包:右键工程名OnlineBookstore->New->Other->Axis2
Wizards->Axis2 Service Archiver,根据向导一步步填写相关信息,最终生成OnlineBookstore.aar文件;
(2). 服务部署:将打包好的OnlineBookstore.aar文件,拷贝至D:\\Program
Files\\Apache
Software
Foundation\\Tomcat
5.5\\webapps\\axis2\\WEB-INF\\services目录下;
(3). 服务发布:启动Tomcat服务器,在浏览器中输入地址
http://localhost:8080/axis2,点击其中的“service”链接,看到OnlineBookstore的Web服务发布成功。
3 客户端实现
客户端采用简单的一个JSP页面呈现,主要分为两部分,其中一部分是用户查询界面,采用表单实现,包括书名、作者名和ISBN号输入框以及查询、取消按钮;另外一部分为查询结果界面,为了简单起见,只给出该书是否存在的信息以及书名、作者名和ISBN号等信息。
JSP页面主要代码主要包括四部分内容:
(1). 第一部分:根据用户输入调用服务,如果没有得到用户输入或所查询书
籍不存在,返回信息为空,否则返回书籍的相应信息。
(2). 第二部分:表单提交验证代码,需要用户至少输入书名、作者名或ISBN
号三者其中之一,然后才允许用户查询操作。
(3). 第三部分:用户查询表单界面,包括三个输入框,分别记录用户对书名、
作者名以及ISBN号的输入信息。一个查询按钮和一个取消按钮,分别用于提交查询信息以及取消当前输入信息。
(4). 第四部分:返回信息界面,包括显示是否查询成功,以及书名、作者名
和ISBN号的信息。
4 运行结果
(1). 服务端只提供四大名著书籍的检索,如下表所示,对于其它输入,均提
示不存在信息。
书名 三国演义 红楼梦 作者名 罗贯中 曹雪芹 ISBN号 001 002 西游记 水浒传 吴承恩 施耐庵 003 004 (2). 要求用户至少输入书名、作者名或ISBN号其中之一,服务端根据输入
情况匹配书籍的相关信息。如果用户未输入任何信息便点击“查询”按钮,则提示用户填写信息。
(3). 任意输入一个书名,如“形式语义学”,点击“查询”按钮,显示“不
存在您所需要的书”,结果如下图所示。作者名或ISBN号同理,也可以同时输入两个或三个信息。
(4). 如果用户输入的是(1)中表的信息,则显示“存在您所需要的书”,结果
如下图所示,同时返回相关书籍信息。