// 
//     Licensed to the Apache Software Foundation (ASF) under one
//     or more contributor license agreements.  See the NOTICE file
//     distributed with this work for additional information
//     regarding copyright ownership.  The ASF licenses this file
//     to you under the Apache License, Version 2.0 (the
//     "License"); you may not use this file except in compliance
//     with the License.  You may obtain a copy of the License at
// 
//       http://www.apache.org/licenses/LICENSE-2.0
// 
//     Unless required by applicable law or agreed to in writing,
//     software distributed under the License is distributed on an
//     "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
//     KIND, either express or implied.  See the License for the
//     specific language governing permissions and limitations
//     under the License.
//

= バイナリ・データを渡すWebサービス(パート4): スキーマ・ファイルおよびWSDLファイルの変更
:jbake-type: tutorial
:jbake-tags: tutorials 
:jbake-status: published
:icons: font
:syntax: true
:source-highlighter: pygments
:toc: left
:toc-title:
:description: バイナリ・データを渡すWebサービス(パート4): スキーマ・ファイルおよびWSDLファイルの変更 - Apache NetBeans
:keywords: Apache NetBeans, Tutorials, バイナリ・データを渡す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`` にマップしますが、link:http://jax-ws.dev.java.net/nonav/2.1.4/docs/mtom-swaref.html[+JAX-WSユーザー・ガイド+]で説明しているように、バイナリ・データはJAXB 2.0仕様で規定されている任意のJava型にマップできます。

Webサービスの完全版サンプルは、link:https://netbeans.org/projects/samples/downloads/download/Samples%252FWeb%2520Services%252FWeb%2520Service%2520Passing%2520Binary%2520Data%2520--%2520EE6%252FFlowerAlbumService.zip[+NetBeansサンプル・カタログ+]からダウンロードできます。

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

image::images/netbeans-stamp-80-74-73.png[title="このページの内容は、NetBeans IDE 7.2、7.3、7.4および8.0に適用されます"]

1. link:./flower_overview.html[+概要+]
2. link:./flower_ws.html[+Webサービスの作成+]
3. link:./flower-code-ws.html[+Webサービスのコーディングおよびテスト+]
4. => バイナリ・データを渡すためのスキーマ・ファイルおよびWSDLファイルの変更
5. link:./flower_swing.html[+Swingクライアントの作成+]


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

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

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

1. 「プロジェクト」ウィンドウで、「FlowerService」Webアプリケーション・ノードを展開し、「 ``WEB-INF`` 」ノードを表示します。「 ``WEB-INF`` 」フォルダを右クリックし、「新規」>「フォルダ」を選択します。「新規」>「その他」を選択し、「その他」カテゴリを選択することが必要な場合もあります。
image::images/new-file-wiz-folder.png[]

[start=2]
. 「次」をクリックします。名前と場所ページが開きます。フォルダに ``wsdl`` という名前を付けます。
image::images/wsdl-folder-name-location.png[]

[start=3]
. 「終了」をクリックします。「 ``wsdl`` 」フォルダが「プロジェクト」ウィンドウに表示されます。
image::images/wsdl-folder.png[]

[start=4]
. 「Webサービス」ノードを展開し、「FlowerService」ノードを右クリックします。「WSDLを生成してコピー...」を選択します。

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

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

image::images/generated-wsdl-and-schema.png[]

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

[source,java]
----

@WebService(serviceName = "FlowerService"*, wsdlLocation = "WEB-INF/wsdl/FlowerService.wsdl")*
----

[start=7]
.  ``FlowerService_schema1.xsd`` スキーマ・ファイルを変更し、戻り要素に予想されるコンテンツ・タイプを指定します。戻り要素をスキーマ・ファイル内で識別するには、スキーマ・ファイルを開き、 ``getThumbnailResponse`` と ``getFlowerResponse`` の複合型を探します。

[source,xml]
----

<xs:complexType name="getThumbnailsResponse"><xs:sequence><xs:element name="return" type="xs:base64Binary" minOccurs="0" maxOccurs="unbounded"/></xs:sequence></xs:complexType>
----

[source,xml]
----

<xs:complexType name="getFlowerResponse"><xs:sequence><xs:element name="return" type="xs:base64Binary" minOccurs="0"/> </xs:sequence></xs:complexType>
----

[start=8]
. 次の属性を両方の戻り要素( ``<xs:element name="return".../>`` )に追加します。

[source,java]
----

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

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


[source,xml]
----

<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>
----

[source,xml]
----

<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>
----

[start=9]
. これで、TesterアプリケーションにWebサービスを再デプロイしてどちらかの操作を呼び出すと、イメージが正しく返されます。
image::images/ws-tester-goodschema.png[]

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


== 次の手順:

link:./flower_swing.html[+Swingクライアントの作成+]

link:/about/contact_form.html?to=3&subject=Feedback:%20Flower%20WSDL%20EE6[+このチュートリアルに関するご意見をお寄せください+]

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

