一个PortTypes栏中,可以有零个、单个或多个<portType>元素。由于抽象PortType定义可以放置在分开的文件中,在某个WSDL文件中没有<portType>元素是可能的。上面的例子里只是用了一个<portType>元素。而一个<portType>元素可在<operation>元素中定义一个或是多个操作。示例仅使用了一个名为"foo"的<operation>元素。这和某个函数名相同。<operation>元素可以有一个、两个、三个子元素:<input>, <output> 和<fault>元素。每个<input>和<output>元素中的消息都引用Message栏中的相关的<message>元素。
Bindings栏可以有零个、一个或者多个<binding>元素。它的意图是制定每个<operation>通过网络调用和回应。Services栏同样可以有零个、一个、多个<service>元素。它还包含了<port>元素,每个<port>元素引用一个Bindings栏里的<binding>元素。Bindings和Services栏都包含WSDL文档。
4. 准备工作
操作系统:winxp或win2k
开发工具:jdk 1.4以上版本,tomcat5.0以上版本+eclipsea3.2
Myeclipse5.1(可选)
注意:当使用jdk1.5 与tomcat5.0 全出异常。
异常信息为:provider org.apache.xalan.processor.T。
错误原因:
是由于jdk1.5 与tomcat5.0之间的关于TransformerFactoryImpl 类的冲突造成的。
解决方式:将会在异常处理中有详述。
5. 服务器编写
服务采用xfire方式,客户端有axis、xfire方式两种。
5.1 第一步: 新建web Service 工程项目

点击 【Next】 进入下一步个操作。

点击 【Next】 进入下一步个操作。

点击 【Next】 进入下一步个操作。

此步骤中Xfire 1.2 HTTP Client Libraries 中可选项。
点击 【Finish】 完成项目创建工作。
web.xml中配置XFire的Servlet及其配置

5.2 第二步: 提供服务接口




服务端接口定义如下 :
package com.smt.service;
/******************************************************
*
* 功能描述: WebService Xfire 对象提供服务接口类
*
* 作者:chenab
*
* 创建时间:2011-7-14 上午11:22:26
*
* 版本号:V1.0
*****************************************************/
public interface IBankingService {
public String transferFunds(String fromAccount);
}
5.3 第三步: 提供服务接口实现类
服务接口实现类如下:
package com.smt.service;
/*****************************************************
*
* 功能描述: webService XFire 服务接口实现类
*
* 作者:chenab
*
* 创建时间:2011-7-14 上午11:28:47
*
* 版本号:V1.0
*******************************************************/
public class BankingService implements IBankingService {
public BankingService() {
}// 空构造不可少
public String transferFunds(String fromAccount) {
String str=" 恭喜, 服务端测试成功! "+fromAccount;
System.out.println(str);
return str;
}
}
Web Servivce 的发布的-----services.xml的配置(此步也可手动修改)

生成后的的项目工程结构图, 如下图所示:

5.4 第四步: 发布服务
将项目发布到Tomcat 服务器,并运行Tomcat ,服务启动后,在地址栏中输入如下信息,如果有XML信息生成,则表示Web服务成功。

5.5 第五步: 测试
当服务启动后,打开Eclipse 。
第一步:在eclipse 工具栏上选择者Web Service Exploer 如下图1所示。
第二步:在打开的标签窗口中,选择WSDL如下图2所示。
第三步:选择左侧[WSDL Main],在右侧将会出现如下图3所示,在地址栏中输入“服务地址”。

然后点击[Go],将在弹出如下图所示信息,在窗口中输入 参数信息,然后点击[Go],如下图所示,要下栏出现如下图信息。

6. 异常处理
6.1 第一种:JDK 与Tomcat 版本不匹配
异常信息:provider org.apache.xalan.processor .TransformerFactoryImpl
原因:由于jdk1.5 与tomcat5.0之间的关于TransformerFactoryImpl 类的冲突造成的。tomcat-5.0.28\common\endorsed下有两个jar包:xercesImpl.jar和xml-apis.jar,其中的类javax.xml.transform.TransformerFactory与jdk1.5中的类org.apache.xalan.processor.TransformerFactoryImpl其实是同一个类。
解决办法一:
将xml-apis.jar移出endorsed文件夹。
用xalan系列jar包替换原来的xercesImpl.jar和xml-apis.jar。
xalan系列jar包:serializer.jar、xalan.jar、xercesImpl.jar和xml-apis.jar。
For other application, just check this file or dom3-xml-apis.jar in your class path.
解决办法二:
使用1.4的JDK和tomcat5.0 或者JDK1.5 tomcat5.5 这2种类型才是匹配