バイナリ・データを渡すWebサービス(パート4): スキーマ・ファイルおよびWSDLファイルの変更

このレッスンでは、WSDLファイルとスキーマ・ファイルをWebアプリケーションに追加します。次に、バイトの配列をイメージとして解釈するようスキーマ・ファイルを変更します。また、スキーマ・ファイルとWSDLファイルを正しく検索できるようWebサービスのソース・コードを編集します。このプロセスでは、WSDLファイルとスキーマ・ファイルを扱うのに役立つ、IDEの様々なツールを紹介します。

この項の手順をJAX-WS Webサービスに適用すると、任意のMIMEタイプをバイナリ・データとして渡すことができます。まず、バイナリ・データを渡すWebサービスを作成し、レッスン2および3で作成したように、WebサービスのWSDLとXMLスキーマをカスタマイズします。カスタマイズしたXMLスキーマ・ファイルで、expectedContentTypes="mime_type"属性を、バイナリ・データの戻り要素に追加します。この属性は、クライアントがMIMEからJava型へのマッピングを行って、バイナリ・データをバイト配列ではなくJava型にマップする必要があることを通知します。このチュートリアルでは、バイナリ・データをjava.awt.Imageにマップしますが、JAX-WSユーザー・ガイドで説明しているように、バイナリ・データはJAXB 2.0仕様で規定されている任意のJava型にマップできます。

Webサービスの完全版サンプルは、NetBeansサンプル・カタログからダウンロードできます。

このチュートリアルのレッスン

このページの内容は、NetBeans IDE 7.2、7.3、7.4および8.0に適用されます
  1. 概要
  2. Webサービスの作成
  3. Webサービスのコーディングおよびテスト
  4. => バイナリ・データを渡すためのスキーマ・ファイルおよびWSDLファイルの変更
  5. Swingクライアントの作成

バイナリ・データを渡すためのスキーマ・ファイルおよびWSDLファイルの変更

次の手順では、前のチュートリアルで作成したWebサービス用に、変更したWSDLファイルとXMLスキーマ・ファイルを作成します。変更されたWSDLファイルとスキーマ・ファイルにより、Webサービスと、それを使用するクライアントは、バイナリ・データとして渡されるJPEGイメージ・データを解析できます。

WSDLファイルおよびスキーマ・ファイルを変更するには:

  1. 「プロジェクト」ウィンドウで、「FlowerService」Webアプリケーション・ノードを展開し、「WEB-INF」ノードを表示します。「WEB-INF」フォルダを右クリックし、「新規」>「フォルダ」を選択します。「新規」>「その他」を選択し、「その他」カテゴリを選択することが必要な場合もあります。
    FlowerServiceプロジェクトのノードとWEB-INFディレクトリ
  2. 「次」をクリックします。名前と場所ページが開きます。フォルダにwsdlという名前を付けます。
    新規フォルダに対する「新規ファイル」ウィザードの「名前と場所」ページに、wsdlという名前とweb/WEB-INFという場所が表示された状態
  3. 「終了」をクリックします。「wsdl」フォルダが「プロジェクト」ウィンドウに表示されます。
    「プロジェクト」ウィンドウの「wsdl」フォルダ
  4. 「Webサービス」ノードを展開し、「FlowerService」ノードを右クリックします。「WSDLを生成してコピー...」を選択します。
  5. 「WSDLを生成してコピー」ダイアログが開き、ナビゲーション・ツリーが表示されます。作成したwsdlフォルダに移動し(「FlowerAlbumService」>「web」>「WEB-INF」>「wsdl」)、「OK」をクリックします。

    FlowerService.wsdl」と「FlowerService_schema1.xsd」が「wsdl」ノードに表示されます。また、「生成されたソース(jax-ws)」という新しいノードが表示されます。

    コピーしたwsdlとスキーマ・ファイルが表示された「プロジェクト」ウィンドウ
  6. アプリケーション・サーバーが独自バージョンのWSDLファイルを使用するように明示します。そうでない場合、アプリケーション・サーバー自体がWSDLファイルを生成します。FlowerService.javaを開き、@WebService注釈を探します。次に示すように、この注釈にwsdlLocation="WEB-INF/wsdl/FlowerService.wsdl"パラメータを追加します。
    @WebService(serviceName = "FlowerService", wsdlLocation = "WEB-INF/wsdl/FlowerService.wsdl")
  7. FlowerService_schema1.xsdスキーマ・ファイルを変更し、戻り要素に予想されるコンテンツ・タイプを指定します。戻り要素をスキーマ・ファイル内で識別するには、スキーマ・ファイルを開き、getThumbnailResponsegetFlowerResponseの複合型を探します。
    <xs:complexType name="getThumbnailsResponse">
    <xs:sequence>
    <xs:element name="return" type="xs:base64Binary" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
    </xs:complexType>
    <xs:complexType name="getFlowerResponse">
    <xs:sequence>
    <xs:element name="return" type="xs:base64Binary" minOccurs="0"/>
    </xs:sequence>
    </xs:complexType>
  8. 次の属性を両方の戻り要素(<xs:element name="return".../>)に追加します。
    xmime:expectedContentTypes="image/jpeg" xmlns:xmime="http://www.w3.org/2005/05/xmlmime"

    以下の内容が同じ行に表示されるようにする必要があります。

    <xs:complexType name="getThumbnailsResponse">
    <xs:sequence>
    <xs:element name="return" type="xs:base64Binary" minOccurs="0" maxOccurs="unbounded" xmime:expectedContentTypes="image/jpeg" xmlns:xmime="http://www.w3.org/2005/05/xmlmime"/>
    </xs:sequence>
    </xs:complexType>
    <xs:complexType name="getFlowerResponse">
    <xs:sequence>
    <xs:element name="return" type="xs:base64Binary" minOccurs="0" xmime:expectedContentTypes="image/jpeg" xmlns:xmime="http://www.w3.org/2005/05/xmlmime"/>
    </xs:sequence>
    </xs:complexType>
  9. これで、TesterアプリケーションにWebサービスを再デプロイしてどちらかの操作を呼び出すと、イメージが正しく返されます。
    使用しているWebサービスを含むJavaアプリケーション

これで、イメージが正しく返され、Swingクライアントを作成してイメージを取得および表示できることが、Testerアプリケーションで確認されました。

次の手順:

Swingクライアントの作成

メーリング・リストに登録することによって、NetBeans IDE Java EE開発機能に関するご意見やご提案を送信したり、サポートを受けたり、最新の開発情報を入手したりできます。

get support for the NetBeans

Support


By use of this website, you agree to the NetBeans Policies and Terms of Use. © 2013, Oracle Corporation and/or its affiliates. Sponsored by Oracle logo