blob: 7d7129b33b77de83f58976c0b846449b29c8c9cd [file] [log] [blame]
//
// 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サービスのWSDLXMLスキーマをカスタマイズします。カスタマイズした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. 「プロジェクト」ウィンドウで、「FlowerServiceWebアプリケーション・ノードを展開し、「 ``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開発機能に関するご意見やご提案を送信したり、サポートを受けたり、最新の開発情報を入手したりできます。