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

This tutorial needs a review. You can open a JIRA issue, or edit it in GitHub following these contribution guidelines.

このレッスンでは、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 stamp 80 74 73
Figure 1. このページの内容は、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 」フォルダを右クリックし、「新規」>「フォルダ」を選択します。「新規」>「その他」を選択し、「その他」カテゴリを選択することが必要な場合もあります。

new file wiz folder
  1. 「次」をクリックします。名前と場所ページが開きます。フォルダに wsdl という名前を付けます。

wsdl folder name location
  1. 「終了」をクリックします。「 wsdl 」フォルダが「プロジェクト」ウィンドウに表示されます。

wsdl folder
  1. 「Webサービス」ノードを展開し、「FlowerService」ノードを右クリックします。「WSDLを生成してコピー…​」を選択します。

  1. 「WSDLを生成してコピー」ダイアログが開き、ナビゲーション・ツリーが表示されます。作成した wsdl フォルダに移動し(「FlowerAlbumService」>「web」>「WEB-INF」>「wsdl」)、「OK」をクリックします。

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

generated wsdl and schema
  1. アプリケーション・サーバーが独自バージョンのWSDLファイルを使用するように明示します。そうでない場合、アプリケーション・サーバー自体がWSDLファイルを生成します。 FlowerService.java を開き、 @WebService 注釈を探します。次に示すように、この注釈に wsdlLocation="WEB-INF/wsdl/FlowerService.wsdl" パラメータを追加します。

@WebService(serviceName = "FlowerService"*, wsdlLocation = "WEB-INF/wsdl/FlowerService.wsdl")*
  1. 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>
  1. 次の属性を両方の戻り要素( <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>
  1. これで、TesterアプリケーションにWebサービスを再デプロイしてどちらかの操作を呼び出すと、イメージが正しく返されます。

ws tester goodschema

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

次の手順:

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