[Axis2与Eclipse整合开发Web Service系列之二] Top-Down方式,通过WSDL逆向生成服务端(续)

前言

本篇是承接上一篇: 

[Axis2与Eclipse整合开发Web Service系列之二] Top-Down方式,通过WSDL逆向生成服务端


在上一篇粗略地介绍了如何使用Top-Down的方式创建一个web service .  但是对于如何部署及调用,以及一些细节的部分基本上没有介绍。

应某些博友的要求, 也适逢自己有空, 接下来就详细介绍一下整个部分如何进行。


环境准备

JDK 肯定要安装了, 这个就不多讲了。

1. eclipse  3.5.2

对eclipse 版本的要求其实不是很严, 但是要按照了wtp 插件。



2.  Tomcat6

下载后正常安装就可以了。



创建Web Service 的步骤

这里创建一个运算两个数加法的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 中复制过来的。

到此,开发工作基本完成。


打包、部署war 档

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 或是域名)





测试

测试的方式,当然可以使用
[Axis2与Eclipse整合开发Web Service系列之一] 生成Web Service Client(将WSDl 转化成 Java代码)
的方式。
但是, 简单来说,可以使用 SoapUI 这个工具来调用。

soapui 下载地址:
http://www.soapui.org/Downloads/

下载启动之后的界面如下: (在页面上就可以操作调用webservice,不过soapui 目前已经开始收费了,可以找一个key或是下一个破解版 ^^)


1上是
11

待定
11
1

你可能感兴趣的:([Axis2与Eclipse整合开发Web Service系列之二] Top-Down方式,通过WSDL逆向生成服务端(续))