当在已有项目中或是多模块项目中添加webservice,用eclipse的方式自动创建会对当前项目造成混乱,特别是在接口可能随时增减或改动的情况下,这时手动搭建成为了比较靠谱的方式,下面记录下手动创建的过程。这里主要用cmd的命令行脚本。
搭建项目
添加依赖
这里的搭建项目,只是指在工程中建立webservice的环境,仅指添加依赖与添加axis1的web.xml配置,无论是一般的web项目或是maven项目,这些基本的依赖包不可少,可根据实际情况进行版本选择或添加包。
web.xml配置
web.xml配置与前一篇的没有差别,如果工程中还有其它功能的配置,请注意顺序。
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
<display-name>axisWeb</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet>
<display-name>Apache-Axis Servlet</display-name>
<servlet-name>AxisServlet</servlet-name>
<servlet-class>org.apache.axis.transport.http.AxisServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>AxisServlet</servlet-name>
<url-pattern>/servlet/AxisServlet</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>AxisServlet</servlet-name>
<url-pattern>*.jws</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>AxisServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
<servlet>
<display-name>Axis Admin Servlet</display-name>
<servlet-name>AdminServlet</servlet-name>
<servlet-class>org.apache.axis.transport.http.AdminServlet</servlet-class>
<load-on-startup>100</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>AdminServlet</servlet-name>
<url-pattern>/servlet/AdminServlet</url-pattern>
</servlet-mapping>
</web-app>
当然要写的接口与服务实现是不可少的,因为要定义webservice接口。
生成
生成wsdl的协议文件
这里用命令行生成一个MainService的服务(以下cmd脚本放在classes目录)
set Axis_Lib=D:\axis-1_4\lib
set Java_Cmd=java -Djava.ext.dirs=%Axis_Lib%
set Output_Path=D:\wsdl\MainService.wsdl
set Package=com.estar.service
set namespace=urn:mainservice
set url=http://localhost:8080/axisWeb/services/MainService
%Java_Cmd% org.apache.axis.wsdl.Java2WSDL -o%Output_Path% -l%url% -n%namespace% -p%Package%=%namespace% -y rpc com.estar.service.MainService
@echo wsdl已经成功生成
@echo -----------------------------------------
@pause
成功后在D:\wsdl\目录里会生成MainService.wsdl的文件。
生成服务端
通过协议文件生成服务端
@echo -----------------------------------------
@echo 设置Output_Path设置为你要生成的路径
@echo Package设置为生成文件的包路径
@echo 最后是wsdl可以是文件路径 可以是URL
@echo WSDL2Java -o [放在那个包下面] -d Session -s -S true [wsdl路径]
@echo -----------------------------------------
@echo 切换到当前目录
set CURRENT_DIR=%cd%
@echo %CURRENT_DIR%
cd %CURRENT_DIR%
set Axis_Lib=D:\axis-1_4\lib
set Java_Cmd=java -Djava.ext.dirs=%Axis_Lib%
set Output_Path=D:\wsdl\
set Package=com.estar.service
%Java_Cmd% org.apache.axis.wsdl.WSDL2Java -o%Output_Path% -p%Package% -s -S true D:\wsdl\MainService.wsdl
@echo 服务端代码已经成功生成,代码在src目录下
@echo -----------------------------------------
@pause
执行完成后会生成一系列文件,我们只需要.wsdd的两个部署文件。
将这两个文件copy到工程目录里,然后就是与第一篇相同的步骤了,还是记录一下。
部署命令行脚本
这时启动工程,确保可以出现以下页面,然后执行部署命令脚本
部署脚本
set Axis_Lib=D:\axis-1_4\lib
set Java_Cmd=java -Djava.ext.dirs=%Axis_Lib%
set Axis_Servlet=http://localhost:8080/axisWeb/servlet/AxisServlet
%Java_Cmd% org.apache.axis.client.AdminClient -l%Axis_Servlet% G:\eclipse-mar\space\axisWeb\src\main\webapp\WEB-INF\CatalogServiceService\com\estar\service\deploy.wsdd
@echo 文件server-config.wsdd已经生成
@echo -----------------------------------------
@pause
同样,请将server-config.wsdd从容器中copy到工程的/WEB-INF/中,以免以后再次注册。
注册成功后便可以看见定义的webservice服务了。
取消注册服务
如果想取消注册的服务,以同样的方式运行以下脚本。
set Axis_Lib=D:\axis-1_4\lib
set Java_Cmd=java -Djava.ext.dirs=%Axis_Lib%
set Axis_Servlet=http://localhost:8080/axisWeb/servlet/AxisServlet
%Java_Cmd% org.apache.axis.client.AdminClient -l%Axis_Servlet% G:\eclipse-mar\space\axisWeb\src\main\webapp\WEB-INF\CatalogServiceService\com\estar\service\undeploy.wsdd
@echo 服务已经取消
@echo -----------------------------------------
@pause
生成测试端
webservcie服务启动后,生成客户端测试与上篇过程一样,不过此次用命令行生成客户端。
set Axis_Lib=D:\axis-1_4\lib
set Java_Cmd=java -Djava.ext.dirs=%Axis_Lib%
set Output_Path=D:\wsdl\
set Package=com.estar.service
%Java_Cmd% org.apache.axis.wsdl.WSDL2Java -o%Output_Path% -p%Package% D:\wsdl\MainService.wsdl
@echo 客户端代码已经成功生成,代码在src目录下
@echo -----------------------------------------
@pause
有wsdl目录可找到生成的客户端代码,新建工程,添加依赖便可进行测试了。