级别: 初级 Ope-Oluwa Soyannwo (soyannwo@uk.ibm.com), 软件工程师,Hursley Solution Test , IBM Hursley
2003 年 10 月 01 日 本文分为两个部分,描述了如何用Application Developer和Visual Studio .NET构建Web服务。它演示了Application Developer和.NET之间的互操作性。它还为调用返回对象和嵌套对象的Web服务提供了详细的部署说明。第一部分描述了如何从用Application Developer开发的J2EE客户端调用部署在IIS中的.NET Web服务。
©IBM版权所有,2003年。保留所有权利。
引言
Web服务可以执行从简单的请求到复杂的业务交互范围广泛的功能。开放标准加之对人与应用程序之间的通信和协作的关注,已经创造了一种环境,在这种环境中,Web服务已经成为应用程序集成的媒介。它们可以称为Internet上转向分布式计算中的基础构件(building block)。可以利用来自不同源的多个Web服务构造应用程序,并且允许协同使用这些应用程序,而不用考虑它们驻留在哪里或如何进行实现。
Java 2平台企业版(J2EE)是为企业应用程序定义架构的Java平台。它支持Web服务,使得可以开发安全、健壮和互操作的商业应用程序。J2EE技术及其基于组件的模型旨在简化企业应用程序的开发和部署。IBM® WebSphere® Studio Application Developer(以下简称为Application Developer)是一种J2EE应用程序开发环境,它支持开发遵循J2EE 1.3规范的Web服务。 它提供了一种内置的WebSphere Application Server Version 5.0测试环境来测试J2EE应用程序。
Microsoft® .NET是Microsoft开发Web服务的软件平台。本文所使用的Web服务是用Microsoft Visual Studio® .NET开发而用Microsoft Internet Information Services(IIS)版本5.0进行测试的。
要了解关于Application Developer和Visual Studio .NET之间的主要区别的信息,请参阅
How IBM WebSphere Studio Application Developer Compares with Microsoft Visual Studio .NET -- Part 1: Conceptual Differences(来自IBM WebSphere Developer Technical Journal)。
Web服务的Extensible Markup Language(XML,可扩展标记语言)描述包含在Web Services Description Language(WSDL,Web服务描述语言)文件中。这些文件(为部署在Application Developer测试服务器中的J2EE Web服务开发的),可以导入Visual Studio .NET并用于开发.NET客户端。类似地,可以将为部署在IIS中的.NET Web生成的WSDL文件导入Application Developer,并且用于开发J2EE客户端。WSDL文件的这种导入/导出以及后面对两个平台之间Web服务的成功调用演示了用于这些平台的Web服务工具的互操作性。
这篇文章分为两个部分,描述了如何用Application Developer和Visual Studio .NET创建Web服务。它演示了Application Developer和.NET之间的互操作性。它还为调用返回对象和嵌套对象的Web服务提供了详细的部署说明。第一部分描述了如何从用Application Developer开发的J2EE客户端调用部署在IIS中的.NET Web服务。第二部分描述了如何从用Visual Studio .NET开发的.NET客户端调用部署在Application Developer测试服务器中的J2EE Web服务。
这篇文章假定您比较熟悉Application Developer和Visual Studio,目标读者为:
- 具有基本的Web服务知识
- 想要测试或演示.NET和Application Developer开发环境及工具之间的互操作性,特别关注Web服务开发
Credit Check(信用检查)Web服务
出于演示的目的,把J2EE和.NET Credit Check Web服务分别部署在Application Developer测试服务器和IIS中。该Web服务定为输出人的姓名、地址和policyID,而返回信用引用(credit quote),取决于调用哪一种方法。此信用引用可以是以下三种形式之一:
- 一个字符串(信用得分),表示此人是否合格
- 一个对象(person对象),包含关于此人的详细信息以及信用得分
- 一个嵌套的对象(complexperson对象),包含人员详细信息和信用得分,其中人员详细信息分为姓名详细信息(name对象)和地址详细信息(address对象)
在每次调用方法时,都会生成一个随机数(信用权重)。这个数决定该信用得分是合格还是不合格。因此,该信用得分是此人的信用引用的随机预测。
从Application Developer客户端调用.NET Web服务
要从Application Developer客户端调用.NET Web服务,您必须将.NET Web服务引用添加到该客户端中。此Web引用是.NET WSDLURL。该WSDL文件是客户端用来调用Web服务的键。从此WSDL文件中,Application Developer可以生成Web服务代理(Proxy)。该代理担当工作站和Internet之间的中介。客户端程序通过代理来与Web服务进行交互。因此,该代理相当于代表用户的客户端,并且从Internet上的服务器中请求页面。当所请求得页面返回时,它使该页面与最初的请求相关联,并且将其发送到Application Developer客户端。.NET Web服务驻留在担当服务器的IIS中。
从Application Developer客户端调用.NET Web服务,需要完成以下操作步骤:
- 创建一个.NET Web服务。可以采取以下两种方式之一来完成此操作:
-
从Application Developer客户端调用.NET Web服务。
步骤1:创建一个.NET Web服务
这一部分描述如何创建一个.NET Web服务,然后从Application Developer客户端调用该服务。在创建了改服务之后,它就驻留在您的工作站的IIS中。
从头开始创建一个.NET Web服务
下面是必备软件清单:
- WebSphere Studio Application Developer version 5.0
- Internet Information Services (IIS) version 5.0
- .NET Framework version 1.0 or later
- Microsoft Visual Studio .NET Professional 2002 or later
本文所提供的代码在
samplecode.zip 文件的
DiskA 文件夹中,您可以
在本文的底部下载。
首先,为该Web服务创建一个新的类库。
- 双击图标
或选择
Start Menu => Programs => Microsoft Visual Studio .NET –> Microsoft Visual Studio .NET来打开Visual Studio .NET。
- 创建一个新的类库来存储对象定义(Person对象)。
- 选择
File => New => Project。
- 选择
Visual C# Project(在左边的框中)和
Class Library(在右边的框忠)。
- 将Name字段从
ClassLibrary1 更改为
CreditCheckLib ,然后单击
OK.按钮。
图1. 创建一个新的类库
- 在Solution Explorer(右框)中,右键单击
Class1.cs ,选择Rename,然后输入
Person.cs 。
- 右键单击Person.cs并且选择
ViewCode来查看
Person.cs 的代码。
- 删除全部内容。
- 从.
zip 文件的
DiskA 文件夹中的
CreditCheckLib.txt 文件复制和粘贴代码。
这段代码包含定义Person和Complex Person对象的类库。Person对象由九个字符串(头衔、姓、名、地址1、地址2、邮政编码、国家、policyID、creditScore)和一个整数值(creditWeight)组成。Complex Person对象由一个Name对象、一个Address对象、一个字符串(creditScore)和一个整数值(creditWeight)组成。请参见代码注释以获得更详细的信息。
- 选择
Build => Build Solution来创建该解决方案。选择
File => Save All来保存该解决方案。
- 选择
File => Close Solution来关闭该解决方案。
创建一个新的Active Server Page(动态服务器页面,ASP).NET Web服务项目。实际上,这个Web服务项目将利用上面创建的类库(
Person.cs )。要创建一个ASP .NET Web服务项目,可以执行以下操作步骤:
- 选择
File => New => Project打开一个新的项目。
- 在左框中,选择Visual C# Projects。在右框中,选择
ASP .NET Web service。
- 将地址更改为
http://
machinename
:
port/CreditCheck
其中,
machinename是您的机器的名称,而
portWeb服务侦听的端口号。请参见
提示和技巧以获得关于如何检查机器名和端口号的说明。单击
OK按钮。
- 在Solution Explorer(右框)中,右键单击Service1.asmx,选择Rename和类型
CreditCheckWService.asmx 。
- 右键单击CreditCheckWService.asmx并选择
View Code来查看
CreditCheckWService.asmx 的代码。
- 删除全部代码。
- 将代码从
.zip 文件的
DiskA 文件夹中的
CreditCheckWS.txt 文件复制和粘贴到代码区。这段代码包含该Web服务。
为了使刚刚创建的类库(
Person.cs )与将要创建的Web服务相关联,您必须创建到
Person.cs 的引用。
- 右键单击
References(在Solution Explorer中)并选择
Add a reference。
- 在Add Reference对话框中,单击
Projects tab,然后单击
Browse。
- 双击前面创建的
CreditCheckLib.dll 。此文件应该在
My Documents\Visual Studio Projects\CreditCheckLib\bin\debug\CreditCheckLib.dll 中。
-
CreditCheckLib.dll 应该出现在该对话框的Selected Components部分。选择
OK。
- 从工具栏中,选择
Debug=>
Start without Debugging以运行Web服务。
图2是一个基于Web的样本应用程序客户端,作为该.NET Web服务的前端。
图2. 基于Web的样本应用程序客户端
该Web服务的URL在地址栏中。它是
http://
machinename
:
port/CreditCheck/CreditCheckWService.asmx
。
该WSDL URL是
http://
machinename
:
port/CreditCheck/CreditCheckWService.asmx?wsdl
。
图3. WSDL文件的URL的内容
<?xml version="1.0" encoding="utf-8" ?>
- <definitions xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:s="http://www.w3.org/2001/XMLSchema"
xmlns:s0="http://tempuri.org/"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/"
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
targetNamespace="http://tempuri.org/"
xmlns="http://schemas.xmlsoap.org/wsdl/">
- <types>
- <s:schema elementFormDefault="qualified"
targetNamespace="http://tempuri.org/">
- <s:element name="returnSimpleQuote">
- <s:complexType>
- <s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="title" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="surname" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="forename" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="houseNo" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="address1" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="postcode" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="country" type="s:string" />
</s:sequence>
</s:complexType>
</s:element>
- <s:element name="returnSimpleQuoteResponse">
- <s:complexType>
- <s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="returnSimpleQuoteResult" type="s:string" />
</s:sequence>
</s:complexType>
</s:element>
- <s:element name="returnComplexQuote">
- <s:complexType>
- <s:sequence>
...
|
单击每个方法和输入值的链接来测试该Web服务。单击
Invoke。每个方法的预期结果示于图5、7和9中。
图4显示了
returnComplexQuote 方法所需的输入参数。
图4. 复杂引用的.NET客户端输入表单
此方法返回一种复杂类型(Person对象),如图5所示。
图5. 来自该Web服务的复杂引用的结果
<?xml version="1.0" encoding="utf-8" ?>
- <Person xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://tempuri.org/">
<title>Miss</title>
<surname>Collins</surname>
<forename>Sarah</forename>
<address1>Farmhouse Mews</address1>
<address2>New waltham</address2>
<postcode>DN36 7HJ</postcode>
<country>UK</country>
<policyID>55637</policyID>
<creditScore>Sorry you have FAILED the Credit Check</creditScore>
<creditWeight>101</creditWeight>
</Person>
|
图6显示了
returnSimpleQuote 方法所需要的输入参数。
图6 简单引用的.NET客户端输入表单
此方法返回一个字符串值(creditScore),如图7所示。
图7. 来自该Web服务的简单引用的结果
<?xml version="1.0" encoding="utf-8" ?>
<string xmlns="http://tempuri.org/">Sorry you have FAILED the Credit Check
</string>
|
图8显示了
returnMComplexQuote 方法所需要的输入参数。
图8 更复杂的引用的.NET客户端输入表单
此方法返回一种复杂类型(Person对象),包含Address和Name对象、一个字符串值(creditScore)和一个整数值(creditWeight),如图9所示。
图9. 来自该Web服务的更复杂的引用的结果。
<?xml version="1.0" encoding="utf-8" ?>
- <complexPerson xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://tempuri.org/">
- <name>
<title>Miss</title>
<surname>Collins</surname>
<forename>Sarah</forename>
</name>
- <address>
<houseNo>1</houseNo>
<address1>Farmhouse Mews</address1>
<address2>New waltham</address2>
<postcode>DN36 7HJ</postcode>
<country>UK</country>
</address>
<creditScore>Sorry you have FAILED the Credit Check</creditScore>
<creditWeight>65</creditWeight>
</complexPerson>
|
仔细地观察上面的XML标记可以发现,更复杂的引用有缩排的名称和地址标记。这些是Person对象中的对象,缩排是为了使其与复杂引用结果相区别,在复杂引用结果中,没有标记示缩排的。
.NET Web服务已经生成了,这样它就可以返回一种简单类型(一个字符串)或两种复杂类型。其中,一种是简单的对象(Person对象),而另一种是嵌套的对象(Person对象,包含Address和Name对象、一个字符串和一个整数值)。该Web服务驻留在IIS中,作为.NET服务器。您应该有名为
CreditCheck 文件夹在
MyDocuments/ Visual Studio Projects/ 目录中以及名为
CreditCheck 的虚拟文件夹在
C:/inetpub/wwwroot/ 目录中。
安装本文所提供的.NET Web服务
这一部分描述如何安装本文所提供的Credit Check .NET Web服务示例。在安装好了之后(通过运行可执行文件进行安装),.NETWeb服务就驻留在工作站的IIS中。取决于从Application Developer客户端调用哪一种方法,该Web服务可以返回一种简单类型(字符串值),表示信用得分,也可以返回一种复杂类型(对象),包含关于某个人的详细信息。
以下是必备软件的清单:
- WebSphere Studio Application Developer version 5.0
- Internet Information Services (IIS) version 5.0
- .NET Framework version 1.0 or later
- .NET Web service provided with this article
Visual Studio .NET创建项目,以便它们可以部署在另一台工作站上。它创建一个可执行文件,这个文件可以把项目安装在工作站服务器上。在这种情况下,就可以把用.NET编写的Credit Check Web服务项目示例安装在工作站的IIS上了。所安装的文件(
CreditCheckSetup) 存储在
C:\inetpub\wwwroot\CreditCheckSetup\CreditCheckWService 目录中。为了使用这个Web服务,您不需要将 Visual Studio .NET安装在您的计算机上,但是必须安装.NET框架。
要安装Credit Check Web服务示例,可以使用
.zip fil文件的
DiskC fole.文件夹中的代码。
- 打开名为
CreditCheckSetup 的文件夹。
- 打开名为
Debug 的文件夹。
- 双击下面的图标以运行
Setup.exe 文件。
- 在Setup Wizard Welcome屏幕上单击
Next按钮。InstallationAddress提示屏幕会打开。
- 接受缺省值,或者将该端口号更改为所需的端口号。请参见
提示和技巧以获得关于如何检查端口号的信息。
- 在Confirm InstallationClick屏幕上单击
Next按钮,然后在Installation Complete屏幕上单击
Close按钮。
给定的Web服务的URL是
http://
machinename
:
port/CreditCheckSetup/CreditCheckWService.asmx
。需要在Application Developer中测试此Web服务的WSDL URL是
//
machinename
:
port/CreditCheckSetup/CreditCheckWService.asmx?wsdl
。
阅读下面的说明以理解所安装的Web服务及其作用:
- 该Web服务驻留在位于
C:\inetpub\wwwroot\CreditCheckSetup\CreditCheckWService 的IIS中的虚拟文件夹内。
- 把以下URL输入到浏览器中,可以查看需要导入Application Developer的Web服务样本客户端应用程序:
http://
localhost/CreditCheckSetup/CreditCheckWService.asmx
。可以由
machinename
:
port替换变量
localhost。
- 要测试Web服务,就必须提供WSDL。该.NET Web服务WSDL URL通常使用如下的形式:
//
machinename
:
port/<servicename>/<serviceasmx>?wsdl
。注意,它是带有
?wsdl 的样本客户端应用程序的URL。
图10是基于Web的样本应用程序客户端,作为.NET Web服务的前端。单击任何链接以测试该Web方法。
图10. 基于Web的样本应用程序客户端
填写所需的字段,并且单击
Invoke,以启动Web服务。
图11. 样本.NET客户端的输入表单
Web服务由下面描述的三种方法组成:
returnSimpleQuote
此方法采用七个参数:该人的头衔、姓、名、住宅编号、地址1、邮政编码和国家。它返回一个字符串值(creditScore)。示例如下:
<string xmlns =" http://tempuri.org/"> Sorry you have FAILED
the Credit Check
</string>
|
returnComplexQuote
此方法采用九个参数:该人的头衔、姓、名、住宅编号、地址1、地址2、邮政编码、国家和PolicyID。它返回一种复杂类型(Person对象),包含九个字符串值(头衔、姓、名、地址1、地址2、邮政编码、国家、PolicyID、creditScore)和一个整数值(creditWeight)。creditScore是来自该Web服务的“Pass”或“Fail”结果,并且是从一个随机的整数值推导出的。示例在清单1中。
图12.returnComplexQuote
<?xml version="1.0" encoding="utf-8" ?>
- <Person xmlns:xsd ="http://www.w3.org/2001/XMLSchema"
xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance"
xmlns ="http://tempuri.org/">
<title>Miss</title>
<surname>Miller</surname>
<forename>Kate</forename>
<address1>Miller Crescent</address1>
<address2>The Polygon</address2>
<postcode>SO 14 5Rf</postcode>
<country>UK</country>
<policyID>XXTY987</policyID>
<creditScore>You have PASSED the Credit Check</creditScore>
<creditWeight>694</creditWeight>
</Person>
|
returnMComplexQuote
此方法采用九个参数:该人的头衔、姓、名、住宅编号、地址1、地址2、邮政编码、国家和PolicyID。它返回一种复杂类型,包含两种复杂类型、一个字符串值和一个整数值。复杂类型Person对象包括一个Address对象、一个Name对象、字符串值creditScore和整数值creditWeight。示例在清单2。
图13.returnComplexMQuote
<?xml version="1.0" encoding="utf-8" ?>
<complexPerson xmlns:xsd ="http://www.w3.org/2001/XMLSchema"
xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance"
xmlns ="http://tempuri.org/">
<name>
<title>Miss</title>
<surname>Miller</surname>
<forename>Kate</forename>
</name>
<address>
<houseNo>1</houseNo>
<address1>Miller Crescent</address1>
<address2>The Polygon</address2>
<postcode>SO 14 5Rf</postcode>
<country>UK</country>
</address>
<creditScore>Sorry you have FAILED the Credit Check </creditScore>
<creditWeight>140</creditWeight>
</complexPerson>
|
步骤2:从Application Developer客户端调用.NET Web服务
这一部分中的过程利用刚用VisualStudio .NET创建好的Web服务URL。如果您已经注意到了该URL,就可以执行以下操作步骤:
- 选择
Start Menu=>
Programs=>
MicrosoftVisual Studio .NET–>
Microsoft Visual Studio.NET来打开VisualStudio
- 在Microsoft Development Environment中,选择
File=>
Open=>
Project。
- 双击
CreditCheckWService 文件夹,然后双击
CreditCheckWService.asmx 文件。
- 当该项目打开时,选择
Debug=>
Startwithout Debugging。
- 复制地址栏中的URL。该URL应该是
http://
machinename
:
port/CreditCheck/CreditCheckWService.asmx
。
- 将
?wsdl 添加到URL的末尾,例如,
http://
machinename
:
port/CreditCheck/CreditCheckWService.asmx?wsdl
。这是WSDLURL。
- 对于已安装的Web服务,该WSDL URL是:
http://
machinename
:
port/CreditCheckSetup/CreditCheckWService.asmx?wsdl
,其中,
machinename该服务所驻留的机器。
- 对于从头编写的Web服务,该WSDL URL是:
http://
machinename
:
port/CreditCheck/CreditCheckWService.asmx?wsdl
,其中,
machinename该服务所驻留的机器。
首先,创建一个Web项目。该Web项目包含调用.NETWeb服务的客户端。
- 打开Application Developer,然后单击
或选择
Start > Programs>
IBM WebSphere Studio>
Application Developer。
- 指定需要用于会话的目录,例如,
C:\WSAD v5 Projects\TestDotNet\workspace 。
- 在第一次使用时,Application Developer首先打开一个空的工作区和J2EE透视图。如果不是这样,则可以选择
Window=>
Open Perspective=>
J2EE。
- 选择
File=>
New=>
Other。再选择
Web(在左框中)和
Web Project(在右框中)。单击
Next按钮。
图14.创建一个新的Web项目
- 在Define Web Project屏幕上,通过输入
TestDotNet 作为新项目的名称来赋予给项目一个名称。单击
Next按钮。
- 在J2EE Settings Page,使用缺省值。在Web Project Features下,项目“J2EE WebProject”和“Create a default CSS file”应该被选中。
- 在Create Web Project窗口(J2EE Settings Page)中选取New,然后输入新项目的名称(
CreditCheckWebProject )。
- 使上下文根为Web Project名,即
TestDotNet 。
- 使J2EE级别为1.3,然后单击
Finish按钮。
接着,创建Web服务客户端。
- 选择
File=>
New=>
Other。
- 选择
Web services(在左框中),然后选择
Web service Client(在右框中)。单击
Next按钮。
图15.访问现有的XML Web服务
- 创建一个Java Client Proxy,以便在您的ApplicationDeveloper客户端和.NET Web服务之间进行通信。在Review Web服务选项中,缺省Client Proxy类型应该为JavaProxy。选取“Create folderswhen necessary”,然后单击
Next按钮。
- 在Web Service Client窗口中指定.NET Credit Check Web服务的位置。变量
machinename是该服务所驻留的机器。
已安装的Web服务的WSDL为
http://<machinename>:<port>/CreditCheckSetup/CreditCheckWService.asmx?wsdl 。
从头编写的Web服务的 WSDL为
http://<machinename>:<port>/CreditCheck/CreditCheckWService.asmx?wsdl 。
单击
Next按钮。
- 在Web Service Binding Proxy Generation屏幕上,接受缺省值(GenerateProxy、“returnQuoteServiceSoap”的Soap绑定“returnQuoteServiceSoap”)。
- 单击
Next按钮,然后在Web Service Test窗口中单击
Finish按钮。
测试Web服务
要测试Web服务,可以在Application Developer中生成一个样本客户端。此样本客户端生成一个输入表单,并且显示来自Web服务的结果。
- 在J2EE Navigator中,展开
TestDotNet/Java Source/proxy.soap ,然后右键单击
CreditCheckWServiceProxy.java 。
- 选择
Web Service-
Generate Sample Application。
- 选择您想要测试的方法。在缺省情况下,选择所有的方法。
- 接受缺省设置,然后单击
Finish按钮。 一个浏览器在Application Developer中打开,方法在该页面的Methods区段中列出。
- 在Methods区段中,单击方法链接以测试方法。这些方法有:
- returnSimpleQuote (
org.tempuri.ReturnSimpleQuoteElement )
- returnComplexQuote (
org.tempuri.ReturnComplexQuoteElement )
- returnMComplexQuote (
org.tempuri.ReturnMComplexQuoteElement )
图16. Web服务测试的结果浏览器
- 单击
Invoke按钮。测试结果显示在Inputs区段下的Result窗格中。
预期结果
以下清单描述了预期结果:
-
returnSimpleQuote 方法接受所有输入字段中的字符串值,并且返回一个字符串,这个字符串可以是“Sorry you have FAILED the Credit Check”,也可以是“You have PASSED the Credit Check”。
-
returnComplexQuote 方法接受和
returnSimpleQuote 方法一样,接受所有输入字段中的字符串值。然而,它返回一个Person对象,包含九个字符串(头衔、名、姓、地址1、地址2、邮政编码、国家、policyID和creditScore)和整数值(creditWeight)。creditWeight是指派给此人的一个随机数,用于决定此人是否有合格的creditScore(信用检查结果)。
-
returnMComplexQuote 方法接受所有输入字段中的字符串值,并且返回一个Person对象,包含Address对象、Name对象、一个字符串值(creditScore)和一个整数值(creditWeight)。
代理(proxy)类负责调用Web服务及其方法。此类存储在
Java Source/proxy.soap 目录下的TestDotNet项目中。样本应用程序存储在
Web Content/sample 目录下的TestDotNet项目中。
如果在关闭了Web浏览器之后,您决定重新测试Web服务,则可以如下手工运行样本客户端:
- 在J2EE Navigator中选择项目,展开TestDotNet并且打开
WebContent=>
Sample=>
project name
(在这种情况下为CreditCheckWService)。
- 右键单击
Test Client,选择
Run on Server,然后单击
Finish按钮。
正如所述,Application Developer调用.NET Web服务,并且自动生成一个代理和一个样本客户端应用程序。这是互操作性的一种典型演示,其中,成功地从Application Developer调用了.NET Web服务。可以用Java代理类来将此.NET Web服务加到应用程序中。您可以创建servlet或JSP前端,您也可以直接从Java客户端调用此Web服务。
提示和技巧
这一部分包含了关于如何完成一些普通任务的说明,在本文的剩余章节中没有对这些任务进行详细的讲解。
如何检查机器名
要检查机器名,可以执行以下操作步骤:
- 右键单击
My Computer,然后选择
Properties。
- 单击
Network Identification tab。机器名是完整的计算机名。
如何检查代理设置
要检查代理设置,可以执行以下操作步骤:
- 选择
Start=>
Settings=>
Control panel。
- 双击Internet选项。
- 单击
Connections Tab。
- 单击
Lan Settings。代理设置示于Proxy server(代理服务器)区段中。
如何检查.NET Web服务所侦听的端口号
要检查.NET Web服务所侦听的端口号,可以执行以下操作步骤:
- 右键单击
My Computer,然后选择
Manage。
- 展开Services和Applications,然后展开Internet Information Services。
- 右键单击Right-click Default Web Site,然后选择
Properties。
图17. 访问Web站点特性
在Web Site Identification选项卡中展示了TCP端口号、IP地址和描述。
在Visual Studio .NET中解决错误
当创建到Visual Studio .NET Web服务客户端中的Web服务的引用时,可能会出现以下错误:
c:\inetpub\wwwroot\CreditCheckApp2\CCheckForm3.aspx.cs(93): The type or namespace name 'creditCheckBeanService' does not exist in the class or namespace 'CreditCheckApp2.serviceRef' (are you missing an assembly reference?)
结束语
如果您看到这个错误信息,可以执行以下操作步骤:
- 检查存在于方法列表中可以从Web服务中调用的方法。一条绿色波浪线会出现在导致错误的代码行中。
- 删除句号之后的代码行。在图18的示例(
serviceRef.person )中,
person 下面划有一条绿色波浪线。删除
person 。
- 将光标放在
serviceRef 之后。同时按下Control键和空格键,以显示可以从Web服务中调用的方法的菜单。
- 双击正确的方法以选择它。在本示例中,列表中并不存在
person 方法,但是存在
Person (大写的P)方法。
图18. 在Visual Studio .NET中解决错误
- 如果方法不在列表中,可以检查您是否已经将引用添加到正确的Web服务或类库中。
- 重新创建项目。
互操作性是Web服务的成功因素。用WebSphere Studio Application Developer开发的Web服务客户端可以成功地调用.NET C# Web服务。同样,.NET Web服务客户端也可以成功地调用Application Developer Web服务。简单的和复杂的Web服务都可以互操作,而不用考虑所使用的技术(J2EE或.NET)和它们所驻留的服务器构架(WebSphere Application Server或IIS)。
本文演示了从Application Developer客户端调用.NET Web服务(部署在IIS上)。第二部分将演示从.NET客户端调用Application Developer Web服务(部署在WebSphere ApplicationServer上)。
相关信息
下载 | 名字 | 大小 | 下载方法 |
|---|
| samplecode.zip | 6 KB | HTTP |
关于作者  | |  |
Ope-Oluwa Soyannwo是一名Web服务测试员(Web
services tester),工作在IBM Hursley的IBM Hursley解决方案测试部门(IBM
Hursley Solution Test Department)。她从事IBM WebSphere产品和Microsoft Visual Studio
.NET产品之间的互操作性的测试工作。您可以通过
soyannwo@uk.ibm.com与Ope联系。
|
对本文的评价
|