corner imagecorner image
IDEPlatformPluginsDocs & SupportCommunityPartners

バイナリデータを渡す 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 6.9-7.1 が対象です
  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」)、「了解」をクリックします。

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

    コピーした WSDL ファイルとスキーマファイルが表示された「プロジェクト」ウィンドウ
  6. アプリケーションサーバーが独自バージョンの WSDL ファイルを使用するように明示します。明示しない場合、アプリケーションサーバー自体が WSDL ファイルを生成します。FlowerService.java を開き、@WebService 注釈を探します。次に示すように、この注釈に wsdlLocation="WEB-INF/wsdl/FlowerService.wsdl" パラメータを追加します。
    @WebService(wsdlLocation = "WEB-INF/wsdl/FlowerService.wsdl")

    警告: GlassFish Server Open Source Edition 3.1 以降を使用する必要があります。wsdlLocation 属性は GlassFish 3.0.1 では無視されます。

  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 開発機能に関するご意見やご提案を送信したり、サポートを受けたり、最新の開発情報を入手したりできます。