创建 DADX 组和 DADX 文件后,使用 Web Service 向导来创建和部署 Web service。创建并部署
Web service 后,向导将帮助您生成客户机代理或样本应用程序以测试新的 Web service。当完成测试后,可以将 Web service 发布到“UDDI 企业注册中心”。
先决条件:
- 必须已经如 创建 DADX 组和配置 和 生成 DADX 文件 中所述创建 DADX 组和 DADX 文件。
- 如果正在使用 WebSphere® 服务器,则必须在“Web 应用程序管理控制台”中设置
JDBC 驱动程序的 JAR 文件的位置:
- 在“服务器”视图中,右键单击服务器并选择“运行管理控制台”。
- 从“管理控制台”中选择资源 > JDBC 提供程序。为 DB2® 通用 JDBC 驱动程序提供程序添加新的 DB2 通用 JDBC 提供程序。将
JDBC 驱动程序的实现类设置为在 group.properties 文件中指定的 JDBC 类。group.properties 文件中的缺省值为
com.ibm.db2.jcc.DB2Driver。
- 从“管理控制台”中选择“环境”->“WebSphere 变量”。将
DB2UNIVERSAL_JDBC_DRIVER_PATH 和 DB2_JDBC_DRIVER_PATH 的路径设置为 <sqllib>/java,其中 <sqllib> 是 DB2 的安装位置。
要创建 Web service:
- 选择 DADX 文件。
- 单击文件 > 新建 > 其它。选择 Web Service 以显示各种 Web Service 向导。选择 Web Service 向导。单击下一步。
- 在 Web Service 页面上,从 Web Service 类型下拉列表中选择 DADX Web Service。可以选择执行下列操作:
- 启动 Web 项目中的 Web Service - 如果不选择此选项,则将必须手工启动
Web Service。必须选择此选项才能启用此页面上的其它选项。
- 启动“Web Service 资源管理器”以将 Web Service 发布到 UDDI 注册中心。
- 为 Web Service 生成 Java™ bean 客户机代理。生成的 Java bean 客户机代理提供了 Web Service 的远程过程调用接口。
- 测试 Web Service - 这允许您在生成代理之前在“Web Service 资源管理器”中测试 Web Service。
- 通过“TCP/IP 监视器”来发送 Web Service 通信量,“TCP/IP 监视器”允许您监测由 Web Service 生成的 SOAP 流量,还可以测试此流量以保持 WS-I 一致性。
- 选择对象页面:浏览至想要从它创建 Web service 的 DADX 文件。
- “服务部署配置”页面:指定服务器和客户机部署设置。
- 单击编辑并选择适当的运行时环境,然后选择想要运行 Web
service 和 Web service 客户机的服务器。
- 接受想要创建 Web Service 的缺省 Web 项目和 EAR。确保所选择的项目包含一个 DADX 组,该 DADX 组中包含 DADX 文件。 如果它们尚不存在,则向导将为您创建它们。注意:必须接受缺省项目名称,否则向导可能不能继续。
- 接受想要创建 Web Service 客户机的项目的类型和名称。 注意:必须接受缺省项目名称,否则向导可能不能继续。
- 选择现有 EAR 或输入一个唯一名称以使 Web Service 客户机与 Web Service EAR 以外的另一 EAR 相关联。注意:对 Web Service 和 Web Service 客户机选择不同的 EAR 可以减少遇到运行时错误的机会,但是将使用较多系统资源。
- 在 DADX 组属性页面上输入 DADX 组的信息。 此信息应从您在创建 DADX 组配置中完成的 DADX 组配置中动态取得,但也可以在此面板上覆盖或修改该信息。
- “生成 Web Service 绑定代理”面板:如果已经选择了生成代理,则选择绑定和代理选项。
- “Web Service 客户机测试”页面:使用此页面来选择下列选项:
- 选择测试工具。可以在“通用测试客户机”或者“Web Service 资源管理器”中测试生成的代理,也可以生成样本 Web Service JSP。
- 如果选择通过 JSP 来测试代理,则可以选择 JSP 所在的文件夹,并且可以选择将包括在 JSP 中的方法。
- 选择在服务器上运行测试以自动为您启动服务器。
- “Web Service 发布”页面:选择是否想将此 Web Service 发布至 UDDI 注册中心。单击完成。
- 创建 Web Service 之后,根据您选择的选项不同,可能会发生下列情况:
- 创建或复制下列文件:
- 所选组中的文件和 DADX 文件被复制至 <Web
Project>/WebContent/WEB-INF/classes/groups 目录。
- 根据对项目设置的 DB2 Web service 提供程序的版本,plugins/com.ibm.etools.webservice.dadx_6.0.1/worfRuntime/worf_v81/runtime/* 和 plugins/com.ibm.etools.webservice.dadx_6.0.1/worfRuntime/worf_v82/runtime/* 文件被复制至 <Web Project>/WebContent/lib 目录。
- 创建 <Web Project>/WebContent/worf 目录并包含
.jsp、html 和 .gif 文件,用于测试页面。
- 在 <Web Project>/WebContent/WEB-INF 目录中创建下列文件:
- 对于 IBM® SOAP,为每个
DADX 创建一个部署描述符 <dadx>.isd 文件,并在部署 DADX 文件时创建一个 dds.xml 文件。
- 对于 Apache Axis,在部署 DADX 文件时为每个 DADX 文件创建一个 <dadx>.wsdd 文件。
- 包含 DADX Web 应用程序的 servlet 定义的 web.xml 文件。注意,对于
DADX Web Service 提供程序 V8.2,在 Web 应用程序的根上下文级别定义了两个附加的
servlet,一个用于 LIST 函数,另一个用于
inspection.wsil 侦听函数。对于 Apache SOAP,未设置 <soap-engine> 参数(缺省情况)。对于 Apache Axis,将
<soap-engine> 参数设置为 apache-axis。
注意,一些文件名位于同一位置,对于 DADX Web Service 提供程序的每个版本,它们是不相同的。一定不要手工从其它位置复制这些文件,也不要将它们复制至其它位置。
- 如果选择了使用 Web Service JSP 来测试生成的代理,则会在 Web 浏览器中的以下 URL 处启动代理:http://localhost: port/WebProjectClient/sampleBeanName/ WebService/TestClient.jsp。通过选择一种方法,为该方法输入一个值,然后单击调用,这样就可以使用此样本应用程序来测试 Web Service。该方法的结果将显示在结果窗格中。
- 如果选择了使用“通用测试客户机”来测试生成的代理,则将在浏览器窗口中的以下 URL 处启动该代理:http://localhost:9080/UTC/preload?object=proxy.soap. ProxyNameProxy。在“引用”窗格中的“对象引用”下面,展开该代理以显示 Web Service 的方法。单击想要测试的方法,在“参数”窗格中输入值并单击调用。将在下面生成结果。
- 如果选择了使用“Web Service 资源管理器”来测试 Web Service,则“Web Service 资源管理器”将打开。选择想要测试的操作,输入必需的信息并单击执行。结果将显示在“状态”窗格中。
- 如果选择了发布 Web Service,则会启动“Web Service 资源管理器”,它将显示把
Web Service 发布到“IBM UDDI 测试注册中心”所必需的页面。遵循发布 Web Service 中的指示信息来完成此任务。
如果要在远程服务器上运行 DADX,则必须手工将 worf.jar 从 plugins/com.ibm.etools.webservice.dadxtools/worfRuntim/version/runtime 文件夹复制到远程机器上的某个地方。然后,必须更新远程服务器的类路径才能引用此 worf.jar 文件。
要点:
- DADX Web Service 经常返回生成的样本应用程序不能处理的复杂类型。要测试返回“DOM 元素”的方法,调用代理的“DOM 元素”方法而不是代理的 Java bean 方法。
- 对于要用于生成 WebSphere 5.1 或 Apache Axis 客户机的
WSDL 文件中的 RPC 样式消息,不能混合 SOAP 编码与文字编码。因此,不能正确地从使用 RPC 为 DADX Web Service 生成的 WSDL 文件来创建 WebSphere
V51 或 Apache Axis 客户机。要防止发生这种情况,使用文档 样式创建
DADX Web Service。V5.1 WebSphere 运行时可以从此 WSDL 创建客户机而不会产生问题。要使用文档样式
DADX Web Service,将 DADX 组的 group.properties 文件中的 useDocumentStyle 参数设置为 true。这也可以通过 DADX 组配置向导来完成。
- 为了提高与
Microsoft® Web Service 的互操作性,DADX 运行时现在可以生成文档样式
Web Service。要启用此功能,使用 DADX 配置向导打开要使用的
DADX 组的属性页。在该属性页的底部,确保将“使用文档样式”输入字段设置为 true。
- DADX 模式不再将
WSDL 文档标记用于文档。此标记现在是 DADX 模式的一部分。这可能会造成未迁移以使用更新模式的旧 DADX
文件产生验证问题。例如,如果旧 DADX 文件包含以下
XML:
<wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
Provides queries for part order information at myco.com.
</wsdl:documentation>
则新文档条目将是:
<documentation>
Provides queries for part order information at myco.com.
</documentation>
- 如果您的方法包含样本不支持的类型(例如,数组、索引属性和集合),则这些方法将从样本中省略,并且您将接收到警告消息。
- 当使用存储过程来创建 DADX Web Service 时,存储过程参数不能包含下划线。例如,Java 存储过程看上去可能类似如下:
public static void test ( String class_code,
short day,
java.sql.Time starting,
java.sql.Time ending ) throws SQLException, Exception
在此示例中,class_code 参数将会导致 DADX 运行时失败。要避免此问题,应使用不带下划线的参数名称。
- 确保您选择的要转变为 Web Service 的 DADX 文件包含在 WebProject\JavaSource\groups\ DADXgroup 目录中。任何相关 DAD 文件也需要在此文件夹中。在运行时,将期望这些文件位于该目录中。否则,可能会发生数据库或服务器错误。
- 可以从“DADX 文件”向导在 DADXGroup 文件夹中生成 DADX 文件。要了解有关创建 DADX 文件的更多信息,请参阅 XML 工具。
- 通常,不支持 Web Service 中有多个输出。但是,如果将使用文档样式组属性设置为 true,则 DADX Web Service 支持多个输出。在此情况下,会将多个输出组合成单个 XML 文档。
- 在 DADX 组中,可以指定 JDBC 网络驱动程序。对于 DB2,网络驱动程序类为 COM.ibm.db2.jdbc.net.DB2Driver。对于较早版本的 DB2,需要将 db2java.zip 添加至服务器类路径,此 zip 文件包含驱动程序。但是,对于 DB2 版本 8.1 和更高版本,也需要将文件 db2jcc.jar 添加至服务器类路径。该文件通常与 db2java.zip 文件位于同一目录中。确保您的机器上的 DB2 客户机级别与要连接至的 DB2 服务器处于同一修订包级别。