corner imagecorner image
FeaturesPluginsDocs & SupportCommunityPartners

通过 Web 服务传递二进制数据,第 4 部分:修改模式和 WSDL 文件

在此部分,要向我们的应用程序添加 WSDL 文件和模式文件。然后对它们进行修改,以将字节数组转换为图像。还要调节应用程序的各个部分,以正确定位模式和 WSDL 文件。在此过程中,将向您介绍 IDE 中的各种工具,帮助您处理 WSDL 和模式文件。

本系列教程

本页中的内容适用于 NetBeans IDE 6.1
  1. 概述
  2. 创建 EJB 模块
  3. 创建 Web 服务
  4. 测试 Web 服务
  5. => 修改模式和 WSDL 文件传递二进制数据
  6. 创建 Swing 客户机
  7. 登录和优化 Web 服务

修改模式文件和 WSDL 文件传递二进制数据

在以下步骤中,将为您在以前的教程中创建的 Web 服务创建修改过的 WSDL 和 XML 模式文件。修改的 WSDL 和模式文件使 Web 服务以及使用它的客户机能够解析以二进制数据传递的 JPEG 图像数据。

要修改 WSDL 和模式文件,请执行以下操作:

  1. 展开 Web 应用程序至 wsdl 节点:
    使用 ws 的 Java 应用程序

    注意:现在该节点为空。WSDL 文件和模式是在部署中生成的,因为您使用的是默认设置。因此该节点(通常它们应该在该节点上)为空。想要将字节数组转换为图像,则需要提供自己的 WSDL 文件和模式。我们将它们放在这个节点。

  2. 右键单击 wsdl 项目节点并选择“新建”>“其他”选项。此时将打开“新建文件”向导。打开 XML 类别并选择“XML 模式”。将模式文件命名为 FlowerService.xsd
  3. 重复第二步,但是这次从 XML 类别选择“WDSL 文档”。将该文件命名为 FlowerService.wsdl

    wsdl 节点中您将看到以下内容:
    使用 ws 的 Java 应用程序

  4. 将浏览器中 WSDL 文件的内容复制到您创建时使用的模板。如果创建和部署 Web 服务时您使用了默认设置,则 WSDL 文件应该在这里:

    http://localhost:8080/FlowerService/FlowerService?WSDL

    编辑 WSDL 文件并插入名称空间声明。必须有这些声明 WSDL 才是有效的。替换文件开头的行:

    <!--
    Published by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is JAX-WS RI 2.1.2-hudson-182-RC1.
    -->
    
    <!--
    Generated by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is JAX-WS RI 2.1.2-hudson-182-RC1.
    -->
    
    <definitions targetNamespace="http://album.flower/" name="FlowerService">

    替换为以下内容:

    <definitions xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
    xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
    targetNamespace="http://album.flower/"
    xmlns="http://schemas.xmlsoap.org/wsdl/"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    name="FlowerService"
    xmlns:tns="http://album.flower/">
  5. 同样,将模式文件复制到您的模板文件。模式文件默认在这里:

    http://localhost:8080/FlowerService/FlowerService?xsd=1

    编辑模式文件并插入名称空间声明。必须有这些声明模式文件才是有效的。替换文件开头的行:

    <!--
    Published by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is JAX-WS RI 2.1.2-hudson-182-RC1.
    -->
    
    <xs:schema version="1.0" targetNamespace="http://album.flower/">

    替换为以下内容:

    <xs:schema xmlns:tns="http://album.flower/"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    version="1.0" targetNamespace="http://album.flower/">
  6. 接下来,我们将更改 WSDL 文件,这样将引用本地模式文件而不是联机模式文件。在“设计”模式下打开 WSDL 文件,如下所示。
    使用 ws 的 Java 应用程序

    展开 Types 节点。右键单击 Referenced Schema 节点。选择“添加”>“导入”。此时将打开“添加导入”对话框。
  7. 如下所示,现在您可以浏览到模式文件并进行选择。


    使用 ws 的 Java 应用程序

  8. 单击“确定”。

  9. 删除另一个模式引用(它引用联机模式文件,我们不想再引用它了),然后您将会发现可以访问模式文件中的节点了,这说明现在已经正确引用了它:
    使用 ws 的 Java 应用程序
  10. 我们需要在 Web 服务的注释中明确使应用服务器使用我们自己的 WSDL 文件版本,否则该应用服务器将会生成其自己的 WSDL 文件。
    @WebService(serviceName = "FlowerService",
    wsdlLocation = "WEB-INF/wsdl/FlowerService.wsdl")

    现在您应该在 Web 服务类中看到以下内容:
    使用 ws 的 Java 应用程序

  11. 最后,整个这一部分的要点就是拥有一个修改过的模式文件,它指定返回元素的预期内容类型。为了识别模式文件中的返回元素,请打开该模式文件并查看以下行,以及 39 行中的代码,它们可能都位于您自己的应用程序中的不同行:
    使用 ws 的 Java 应用程序
  12. 保留所有现有元素,但是向它们添加 以下属性:

    xmime:expectedContentTypes="image/jpeg" xmlns:xmime="http://www.w3.org/2005/05/xmlmime"

    现在您应该在同一行中看到以下内容:
    使用 ws 的 Java 应用程序

  13. 现在,再次向 Tester 应用程序部署 Web 服务并调用其中一项操作时,您将会看到正确返回一幅图像:
    使用 ws 的 Java 应用程序

由于 Tester 应用程序已经确保图像被正确返回,所以我们可以创建 Swing 客户机来检索和显示它们。

注意:您可以在下载样例项目中找到正确修改的 WSDL 和模式文件。这两个文件都在 Web/WEB-INF/wsdl 文件夹下。

未来计划:

创建 Swing 客户机

要发送意见和建议,获取支持,了解关于 NetBeans IDE Java EE 开发特性的最新发展,请加入 邮件列表

Companion
Projects:
MySQL Database Server   GlassFish Community: an Open Source Application Server   Open Solaris  Open JDK: an Open SourceJDK   Mobile & Embedded Community     Sponsored by 
Sponsored by Sun Microsystems