本篇是承接上一篇:
[Axis2与Eclipse整合开发Web Service系列之二] Top-Down方式,通过WSDL逆向生成服务端
在上一篇粗略地介绍了如何使用Top-Down的方式创建一个web service . 但是对于如何部署及调用,以及一些细节的部分基本上没有介绍。
应某些博友的要求, 也适逢自己有空, 接下来就详细介绍一下整个部分如何进行。
JDK 肯定要安装了, 这个就不多讲了。
1. eclipse 3.5.2
对eclipse 版本的要求其实不是很严, 但是要按照了wtp 插件。
2. Tomcat6
下载后正常安装就可以了。
这里创建一个运算两个数加法的web service. 给定两个数, 算出它们的和。
(当然, 这里只是个例子, 在实际的状况中,可能是像传入城市名,得到城市天气预报的例子 )
1. 新建一个Dynamic Web Project - 命名为webServicePrj
项目结构很简单, web.xml 的内容也很简单, 只有配置了首页面的配置。
2. 在 webServicePrj 上右键单击, 选择新建 WSDL
3. 命名为 CalculateSOAP.wsdl
下一步
4 点击 完成 之后就会在项目的跟路径下创建一个 CalculateSOAP.wsdl 的文件,默认以 Design 视图的方式打开。
5. 修改方法名 NewOperation 为 AddOperation
6. 修改输入,输入参数
点击红色部分, 进入编辑的子视图
7. 修改参数名及添加需要的参数
结果如下:
Output 部分类似处理, 结果如下:
修改完成之后, 保存。 WSDL 的部分基本上就完成了。
WSDL 只是一个服务的描述, 至于这个服务实际要做的事情,就要产生web service 的代码了。 就是使用top down 的方式产生Web service.
8. 右键 单击项目, 创建 Web service
9. Next
10. 一直 next , 直到完成, 看看 eclipse 帮我们产生了那些文件
1) 产生的服务端 Java代码。
impl 结尾的java 文件就是写实际逻辑的地方。
2)自动导入的axis 的一些jar 包
3)产生的部署的描述 (后面有用)
4)这个web.xml 被修改了。 自动增加了一些axis 的servlet 的配置
5) 在WebContent 下会产生一个 wsdl 目录和 CalculateSOAPSOAP.wsdl 的文件。
这个内容和 之前创建的CalculateSOAP.wsdl 类似(所以好的命名方式是之前的wsdl不要加SOAP)
到此, 并没有结束。还需要把这个 web service 部署起来。
11. deploy 这个webservice 方式有很多种, 简单的一种方式, 就是在WEB-INF 下创建一个 server-config.wsdd
内容如下:
<?xml version="1.0" encoding="UTF-8"?> <deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"> <globalConfiguration> <parameter name="adminPassword" value="admin" /> <parameter name="attachments.Directory" value="D:\Tomcat\temp\axis\WEB-INF\attachments" /> <parameter name="attachments.implementation" value="org.apache.axis.attachments.AttachmentsImpl" /> <parameter name="sendXsiTypes" value="true" /> <parameter name="sendMultiRefs" value="true" /> <parameter name="sendXMLDeclaration" value="true" /> <parameter name="axis.sendMinimizedElements" value="true" /> <requestFlow> <handler type="java:org.apache.axis.handlers.JWSHandler"> <parameter name="scope" value="session" /> </handler> <handler type="java:org.apache.axis.handlers.JWSHandler"> <parameter name="scope" value="request" /> <parameter name="extension" value=".jwr" /> </handler> </requestFlow> </globalConfiguration> <handler name="LocalResponder" type="java:org.apache.axis.transport.local.LocalResponder" /> <handler name="URLMapper" type="java:org.apache.axis.handlers.http.URLMapper" /> <handler name="Authenticate" type="java:org.apache.axis.handlers.SimpleAuthenticationHandler" /> <service name="AdminService" provider="java:MSG"> <parameter name="allowedMethods" value="AdminService" /> <parameter name="enableRemoteAdmin" value="false" /> <parameter name="className" value="org.apache.axis.utils.Admin" /> <namespace>http://xml.apache.org/axis/wsdd/</namespace> </service> <service name="Version" provider="java:RPC"> <parameter name="allowedMethods" value="getVersion" /> <parameter name="className" value="org.apache.axis.Version" /> </service> <!--myself webservice--> <service name="CalculateSOAPSOAP" provider="java:RPC" style="wrapped" use="literal"> <parameter name="wsdlTargetNamespace" value="http://localhost:8080/CalculateSOAP/"/> <parameter name="wsdlServiceElement" value="CalculateSOAP"/> <parameter name="schemaUnqualified" value="http://localhost:8080/CalculateSOAP/"/> <parameter name="wsdlServicePort" value="CalculateSOAPSOAP"/> <parameter name="className" value="localhost.CalculateSOAP.CalculateSOAPSOAPSkeleton"/> <parameter name="wsdlPortType" value="CalculateSOAP"/> <parameter name="typeMappingVersion" value="1.2"/> <parameter name="allowedMethods" value="*"/> </service> <transport name="http"> <requestFlow> <handler type="URLMapper" /> <handler type="java:org.apache.axis.handlers.http.HTTPAuthHandler" /> </requestFlow> <parameter name="qs:list" value="org.apache.axis.transport.http.QSListHandler" /> <parameter name="qs.list" value="org.apache.axis.transport.http.QSListHandler" /> <parameter name="qs:method" value="org.apache.axis.transport.http.QSMethodHandler" /> <parameter name="qs.method" value="org.apache.axis.transport.http.QSMethodHandler" /> <parameter name="qs:wsdl" value="org.apache.axis.transport.http.QSWSDLHandler" /> <parameter name="qs.wsdl" value="org.apache.axis.transport.http.QSWSDLHandler" /> </transport> <transport name="local"> <responseFlow> <handler type="LocalResponder" /> </responseFlow> </transport> </deployment>
只是中间的这块
是从 之前产生的deploy.wsdd 中复制过来的。
到此,开发工作基本完成。
1. 打包
右键单击项目, 导出 war 档, war 名为webServicePrj.war
2. 将 webServicePrj.war 拷到 tomcat 的 webapps 下
3. 浏览器进入: http://localhost:8080/webServicePrj/services
第一个web service 就是我们新加的。
后面两个是axis 的本身的。
点击第一个 wsdl 链接。
进入: http://localhost:8080/webServicePrj/services/CalculateSOAPSOAP?wsdl
这就是服务发布的地址(实际开发中当然不会使用 localhost,而用实际的IP 或是域名)