WebService学习笔记(二)

2014-11-24 01:40:10 · 作者: · 浏览: 1
数的参数。<message>元素中的每个<part>子元素都和某个参数相符。输入参数在<message>元素中定义,与输出参数相隔离--输出参数有自己的<message>元素。兼作输入、输出的参数在输入输出的<message>元素中有它们相应的<part>元素。输出<message>元素以"Response"结尾,就像以前所用的"fooResponse"。每个<part>元素都有名字和类型属性,就像函数的参数有参数名和参数类型。

一个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及其配置

web.xml 配置

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的配置(此步也可手动修改)

services.xml的配置

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

生成后结构图

5.4 第四步: 发布服务

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

发布webService

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种类型才是匹配