バイナリデータを渡す 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 サンプルカタログ 」からダウンロードできます。
このチュートリアルのレッスン
概要
Web サービスの作成
Web サービスのコーディングおよびテスト
=> バイナリデータを渡すためのスキーマファイルおよび WSDL ファイルの変更
Swing クライアントの作成
バイナリデータを渡すためのスキーマファイルおよび WSDL ファイルの変更
次の手順では、前のチュートリアルで作成した Web サービス用に、変更した WSDL ファイルと XML スキーマファイルを作成します。変更された WSDL ファイルとスキーマファイルにより、Web サービスと、それを使用するクライアントは、バイナリデータとして渡される JPEG イメージデータを解析できます。
WSDL ファイルおよびスキーマファイルを変更するには、次の手順に従います。
「プロジェクト」ウィンドウで、「FlowerService」Web アプリケーションノードを展開し、「WEB-INF 」ノードを表示します。「WEB-INF 」フォルダを右クリックし、「新規」>「フォルダ」を選択します。「新規」>「その他」を選択し、「その他」カテゴリを選択することが必要な場合もあります。
「次へ」をクリックします。「名前と場所」ページが開きます。フォルダに wsdl という名前を付けます。
「完了」をクリックします。「wsdl 」フォルダが「プロジェクト」ウィンドウに表示されます。
「Web サービス」ノードを展開し、「FlowerService」ノードを右クリックします。「WSDL を生成してコピー...」を選択します。
「WSDL を生成してコピー」ダイアログが開き、ナビゲーションツリーが表示されます。作成した wsdl フォルダに移動し (「FlowerAlbumService」>「web」>「WEB-INF」>「wsdl」)、「了解」をクリックします。
「FlowerService.wsdl 」と「FlowerService_schema1.xsd 」が「wsdl 」ノードに表示されます。また、「生成されたソース (jax-ws)」という新しいノードが表示されます。
アプリケーションサーバーが独自バージョンの 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 では無視されます。
FlowerService_schema1.xsd スキーマファイルを変更し、戻り要素に予想されるコンテンツタイプを指定します。戻り要素をスキーマファイル内で識別するには、スキーマファイルを開き、getThumbnailResponse と getFlowerResponse の複合型を探します。
<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>
次の属性を両方の戻り要素 (<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>
これで、Tester アプリケーションに Web サービスを再配備してどちらかのオペレーションを呼び出すと、イメージが正しく返されます。
これで、画像が正しく返され、独自の Swing クライアントを作成して画像を取得および表示できることが、Tester アプリケーションで確認されました。
次の手順:
Swing クライアントの作成
nbj2ee
@
netbeans.org
メーリングリスト に登録することによって、NetBeans IDE Java EE 開発機能に関するご意見やご提案を送信したり、サポートを受けたり、最新の開発情報を入手したりできます。