使用 WSDL2WebService 工具创建 Web Service

可以从命令行使用 WSDL2WebService 工具来通过使用 IBM® WebSphere® 运行时环境从 WSDL 文件生成 Web Service。

先决条件:

使用此工具要经历下列三个阶段:

  1. 运行此工具并指定 -createService 自变量,以便为由特定 WSDL 文档描述的 Web Service 创建框架 Java 实现模板。
  2. 在模板中编写实现代码并使用第 1 阶段生成的构建脚本来编译该代码。
  3. 再次运行此工具并指定 -createEar 自变量,以从此实现构建启用了 Web Service 的归档。

注意:可以将第 1 阶段执行数次以便在同一个项目目录中创建相关的 Web Service。然后,在第 3 阶段,可以为这些 Web Service 中的每一个创建单独的模块并将这些模块添加至同一个 EAR 文件。

父主题: 使用命令行工具来创建 Web Service

命令行设置

在使用 WSDL2WebService 工具之前,必须设置 Web Service 命令行,如下所示:

  1. 从命令提示符,切换至 Rational® Developer 产品的 bin 目录。 
  2. 运行以下批处理脚本:
    • Windows®setupenv.bat
    • Linux:setupenv.sh
  3. 切换至要创建 Web Service 的目录。我们将把此目录称为命令行测试目录。 Linux:必须具有此目录的写访问权。

现在,可以运行 WSDL2WebService 工具的第 1 阶段了。  

创建框架 Web Service 实现

注意:WSDL2WebService 工具有两个版本。如果运行 WSDL2WebService 命令,该命令将使用 J2EE 1.4。也可以使用 WSDL2WebService13 命令,该命令将使用 J2EE 1.3。如果想要创建使用 J2EE 1.3 的 Web Service,则在下列任何命令中都可以用 WSDL2WebService13 代替 WSDL2WebService

要创建框架 Web Service 实现,请在命令提示符处输入以下命令:

  • Windows:WSDL2WebService [<optional arguments>] -createService <ServiceName> -project <ProjectDir> <WSDL URI>
  • Linux:WSDL2WebService.sh [<optional arguments>] -createService <ServiceName> -project <ProjectDir> <WSDL URI>

注意:最后一个自变量必须是 <WSDL URI>,它区分大小写。请参阅 WSDL2WebService 工具以获取可选自变量和必需自变量的列表。

提示:
  • 建议您指定可选自变量:-host <hostname:port>。命令的缺省端口是 6080,但是缺省 WebSphere Application Server 端口为 9080。
  • 请记录命令行测试目录路径和对 -project 指定的名称。您将需要此信息来部署和测试 Web Service。

在以 -createService <ServiceName> 自变量运行此工具之后,将在指定的项目之下创建称为 <ServiceName> 的目录,该目录包含数个子目录。这些子目录包含构建 Web Service 实现所需要的所有必需的 Java 模板。

下面是如何使用 WSDL2WebService 工具的示例:

WSDL2WebService -createService ejb1Service -project dir:\myproj\ejbDir -host localhost:9080 -contextRoot ejb1Service -type EJB -verbose dir:\TempConv.wsdl

编译实现代码

需要修改框架 Java 文件,以便它们能正确实现您要创建的 Web Service。一旦将正确的代码添加至 Java 框架,就需要对这些代码进行编译。还将生成称为 compile 的构建脚本以帮助您编译所有这些代码。

要编译实现代码:

  1. 切换至 <ServiceName> 目录。
  2. 如果实现代码具有依赖项,如 JAR 文件或包含 .class 文件的目录,请编辑编译脚本并将这些依赖项的全路径名添加至 USER_CLASSPATH 变量,例如:
    • Windows:set USER_CLASSPATH = c:\MyJars\webservice.jar;c:\MyClasses
    • Linux:USER_CLASSPATH = /home/MyJars/webservice.jar:/home/MyClasses
  3. 输入以下命令:
    • Windows:  compile
    • Linux:  compile.sh
    注意,运行该命令不需要任何参数。

创建启用了 Web Service 的归档

一旦创建了 Web Service、已将实现代码添加至 Java 框架并且编译了新的代码,就需要创建启用了 Web Service 的归档。要创建启用了 Web Service 的归档,应在命令提示符处输入以下内容:

  • Windows:WSDL2WebService [<optional arguments>] -createEar <File.ear> -project <ProjectDir>
  • Linux:WSDL2WebService.sh [<optional arguments>] -createEar <File.ear> -project <ProjectDir>

请参阅 WSDL2WebService 工具以获取可选自变量和必需自变量的说明。

提示:如果要部署和测试 Web Service,请记录命令行测试目录路径和对 -project 指定的名称。

在编写实现代码、编译该代码并在指定 -createEar <File.ear> 自变量的情况下再次运行此工具之后,输出将是新的或更新的 EAR 文件。对于使用 -add 自变量指定的每个 Web Service 名称,此文件都将包含一个 Web Service 模块。您还将注意到,已将实现 Web Service 的服务器端类移至 WEB-INF\classes 目录中,这是通常的位置。如果不指定 -server-side-only 自变量,则还将创建一个 client-side 目录,该目录包含一些额外的 Java 文件,包括用于复杂类型的序列化器和反序列化器类。

一旦生成了 EAR 文件,就可以将其部署到服务器以供他人使用。

下面是如何创建启用了 Web Service 的归档的示例:
WSDL2WebService -createEAR dir:\myear\ejb1ear.ear -project dir:\myproj\ejbDir -add ejb1Service -verbose localhost:9080/ejb1Service/services/TempConv

对重用代码的支持

WSDL2WebService 工具通过允许将 JAR 或 EJB 文件(由一个或多个所包含的 Web Service 访问)放在 EAR 文件的根中来支持代码重用。可通过将所有类作为服务归档到同名的 JAR 文件中来重用 Web Service 实现。执行下列步骤来将类归档到 JAR 文件中:

  1. 在运行 WSDL2WebService 工具之后,将要重用的 JAR 文件放到项目根目录中。注意:这些文件可以是 JAR 或 EJB 文件。
  2. 对于项目中需要其中一个这些 JAR 文件的每个 Web Service,通过添加该 JAR 文件的完整路径来更新Web Service 的编译脚本中的 USER_CLASSPATH 变量。
  3. 正常地编译每个 Web Service。
  4. 通常以 -createEAR 自变量运行 WSDL2WebService 工具。WSDL2WebService 工具将自动地把 JAR 文件添加到 EAR 文件中并更新对这些 JAR 文件的所有引用。
要点
  • 如果运行 WSDL2WebService 命令以使用执行本地导入的一组 WSDL 文件来创建 EJB Web Service,则将会生成 EAR 文件,但一旦将该文件导入工作空间并将它部署到“单元测试环境”或远程服务器,则在服务器启动时将会出现异常。此异常是由于路由器 Web 项目中缺少 WSDL 而引起的。要消除此错误,执行下列其中一种操作:
    • 使用“管理控制台”部署至独立的 WebSphere Application Server。
    • 使用整体式的 WSDL - 即,不使用 -splitWsdl 自变量。
    • 手工将 EJB 项目中 META-INF/wsdl 目录下的所有 WSDL 文件复制至路由器 Web 项目的 WEB-INF/wsdl
  • 如果选择 -genResolver 自变量,则不能启动 EAR。产生问题的原因是,-genResolver 选项不能处理 WSDL 文档使用 <wsdl:import> 导入 XSD 的情况。要避免此问题,执行下列其中一种操作:
    • 编辑 WSDL 以使用 <types><schema><import> 来导入 XSD。
    • 不要在命令行工具上使用 -genResolver 选项。

相关任务
使用命令行工具来创建 Web Service
测试由命令行生成的 Web Service

相关参考
WSDL2WebService 工具参考

使用条款 | 反馈
(C) Copyright IBM Corporation 1999, 2005. All Rights Reserved.