< 上一课 | 下一课 >

课程 2:创建 Web Service

在本课程中,您将了解如何从上一课中导入的 WSDL 文件创建自顶向下 Java™ 地址簿 Web Service。

在开始之前,必须先完成课程 1:创建服务器和 Web 项目 .
  1. 切换至 Java EE 透视图:窗口 > 打开透视图>其他> Java EE。
  2. 在“企业资源管理器”视图中,选择您在上一课中导入的 WSDL 文件。
  3. 右键单击该 WSDL,然后选择 Web Service > 生成 Java Bean 框架
  4. Web Service 页面:选择自顶向下 Java Bean Web Service 作为 Web Service 类型,并确保将 AddressBook.wsdl 设置为服务定义。选择以下选项:
    1. 选择您要使用滑块完成的 Web Service 开发阶段。该滑块会设置其余向导页面上的缺省值,但您可以在执行过程中覆盖每一个页面上的缺省设置。对于本教程,请选择启动服务。这将创建 Web Service 所需的所有代码,将其部署至服务器并尝试启动该服务器。
    2. 选择服务器:单击服务器链接并确保已选择 WebSphere® V8 服务器。
    3. 选择运行时:确保已选择 IBM® JAX-WS 运行时。
    4. 选择服务项目:选择在上一课中创建的 jwsAddressBook 项目。
    5. 选择服务 EAR 项目:选择在上一课中创建的 jwsAddressBookEAR
    6. 稍后将创建客户机,以便确保将客户机滑块设置为无客户机
    单击下一步
  5. WebSphere JAX-WS 自顶向下 Web Service 配置页面:
    • 输出文件夹:接受将用于生成 Java 框架的缺省位置:jwsAddressBook/src
    • 目标软件包:接受缺省软件包名称
    • 启用包装器样式:启用从 WSDL 至 Java 的包装器样式映射。对于实现文档/文字包装模式的 WSDL 文档,将在 XML 模式中声明根元素并将其用作消息流的操作包装器。请求和响应各自具有单独的包装程序元素定义。接受缺省值。
    • 启用 MTOM 支持:如果选中此复选框,那么将启用 SOAP 消息传输优化机制以优化二进制内容的传输。接受缺省值。
    • 要生成的 JAX-WS 代码的版本:从 WebSphere Application Server V8.0 开始,您可以生成符合 JAX-WS 2.1 的代码。 对于本教程,请选择 2.1。
    • 将 WSDL 复制到项目:选择此项以将 WSDL 文件复制到服务项目中。由于您将稍后创建客户机,所以请选中此复选框。
    • 生成可序列化的 JAXB 类:在 WebSphere Application Server V7.0 及更高版本中启用 Java 6 构面时,您可以选择生成用于实现 java.io.Serializable 的 JAXB 类。 未实现此接口的类不会使它们的任何状态序列化或反序列化。对于本教程,请不要选择此项。
    • 指定 JAX-WS 或 JAXB 绑定文件:这允许您使用 JAX-WS 或 JAXB 定制绑定文件。对于本教程,请不要选择此项。
    • 定制服务实现类名:此项使您能够更改缺省端口名称至服务实现类名映射。对于本教程,请不要选择此项。
    • 生成模式库:选择此项将运行“JAX-WS 模式至 Java”编译器以生成模式。对于本教程,请不要选择此选项。
    • 生成 Web Service 部署描述符:对于 JAX-WS Web Service,将由运行时动态生成部署信息;不再需要静态部署描述符。 选中此复选框将生成它们。本教程不需要部署描述符。
    单击下一步
这时,已生成 Web Service 的所有必需代码。

将业务逻辑添加到框架 Bean

由 Web Service 向导生成的框架实现 Bean AddressBookPortImpl.java 不包含任何业务逻辑。但包含用于告诉运行时它是 JAX-WS Web Service 的注释 @javax.jws.WebService

为了使地址簿 Web Service 功能按预期工作,需要向此 Bean 添加代码。它应该在生成 Web Service 之后于编辑器中自动打开,但如果未自动打开,那么可在以下位置找到它:jwsAddressBook/Java Resources/src/com.addressbook

  1. 将当前的 saveAddress 方法:
        public boolean saveAddress(PersonType person) {
            return false; 
        }
    替换为以下静态字段和方法:
    	private static Hashtable<String,AddressType> addresses = new Hashtable<String,AddressType>();
        public boolean saveAddress(PersonType person) {
        			clonedMessage.setForwardRoutingPath(forwardRoutingPath);
            return true;
        }
  2. 将当前的 findAddress 方法:
        public AddressType findAddress(String name) throws FindAddressFault {
            return null; 
        }
    替换为以下内容:
        public AddressType findAddress(String name) throws FindAddressFault {
            return addresses.get(name);
        }
  3. 可能会显示几个错误标记。要更正这些错误,请通过单击 Ctrl+Shift+o 来组织导入。选择以导入 java.util.Hashtable。执行此操作之后,这些错误应该呈灰色显示。
  4. 保存已更新的实现 Bean。

使用通用服务客户机测试 Web Service

通用服务客户机允许您在不构建客户机的情况下测试 Web Service。您可以选择要测试的操作,输入必需的信息,结果将显示在“状态”窗格中。
  1. 选择所生成的 WSDL 文件 jwsAddressBook/WebContent/WEB-INF/wsdl/AddressBook.wsdl,单击鼠标右键并选择 Web Service > 使用通用服务客户机进行测试 或者,您可以选择“服务”视图中项目的服务节点或 JAX-WS Web Service 节点下面的服务,然后从该处启动通用服务客户机。
  2. 选择 SaveAddress 操作。
  3. 在每一个字段中输入值,然后单击调用
  4. 选择 FindAddress 操作。
  5. 输入您在调用 saveAddress 操作时选择的名称,然后单击调用
  6. 您保存至此名称的信息将显示在“状态”窗格中。

课程要点

< 上一课 | 下一课 >
指示主题类型的图标 教程课程主题
信息中心的条款和条件 | 反馈

时间戳记图标 最近一次更新时间: 2014 年 4 月 17 日

文件名:jaxwstd_exercise12.html