Hitachi

Cosminexus V11 アプリケーションサーバ Webサービス開発ガイド


20.1.31 xsd:schema要素

xsd:schema要素のサポート範囲を説明します。

〈この項の構成〉

(1) xmime:expectedContentTypes属性(xsd:schema要素)

WSDLのスキーマ宣言であるxsd:element要素のtype属性に"xsd:base64Binary"を指定している場合,xmime:expectedContentTypes属性を用いてMIMEタイプを明示的に指定することで,Base64形式のデータをMIMEタイプに対応したJava型に関連づけることができます。WSDLのスキーマ宣言であるxsd:element要素に対するxmime:expectedContentTypes属性の記述可否を次の表に示します。

表20‒1 xmime:expectedContentTypes属性の記述可否

項番

xsd:element要素を参照するwsdl:messageのパラメタ

xsd:element要素に対するxmime:expectedContentTypes属性の記述可否

1

wsdl:input

※1

2

wsdl:output

※1

3

wsdl:fault

×※2

(凡例)

○:記述できます。

×:記述できません。

注※1

WSDLパートの種類がinoutの場合,wsdl:input要素から参照するxsd:element要素のxmime:expectedContentTypes属性の値とwsdl:output要素から参照するxsd:element要素のxmime:expectedContentTypes属性の値には,同じMIMEタイプを指定してください。異なるMIMEタイプを指定した場合,動作は保証されません。

注※2

フォルトメッセージにxmime:expectedContentTypes属性が記述されたxsd:element要素を指定した場合,動作は保証されません。

xsd:element要素にxmime:expectedContentTypes属性を指定した場合のWSDLからJava型へのマッピング方法は,WSDLのxmime:expectedContentTypes属性があるxsd:base64Binary型をJava型へマッピングします。WSDLからJava型へのマッピング例を次の図に示します。

図20‒1 WSDLからJava型へのマッピング例

[図データ]

xmime:expectedContentTypes属性に指定するMIMEタイプには,"text/xml"および"application/xml"のcharsetパラメタを除いて,パラメタを記述しないでください。"text/xml"および"application/xml"のcharsetパラメタ以外のパラメタを記述した場合,動作は保証されません。

WSDLからマッピングするJava型は,xmime:expectedContentTypes属性に指定されているMIMEタイプによって変化します。xmime:expectedContentTypes属性に記述されているMIMEタイプと関連づけるJava型の関係を次の表に示します。

表20‒2 xmime:expectedContentTypes属性の値と関連づけるJava型

項番

xmime:expectedContentTypes属性の値(MIMEタイプ)

関連づけるJava型

1

application/xml

javax.xml.transform.Source

2

image/png※1

java.awt.Image※2

3

image/jpeg※1

4

上記のMIMEタイプをコンマ区切りで記述(例:image/png, image/jpeg)※3

5

image/*※3

6

text/plain

java.lang.String

7

text/*※4

javax.activation.DataHandler

8

text/xml※5

javax.xml.transform.Source

9

上記以外※4,※6

javax.activation.DataHandler

注※1

表中にないimageタイプをJava型に関連づける場合は,xmime:expectedContentTypes属性に"application/octet-stream"を指定し,javax.activation.DataHandlerクラスに関連づけます。

注※2

JAXB仕様に従います。java.awt.ImageクラスはJava SE仕様でのグラフィカルイメージを表現する抽象クラスで,データ形式の規定はありません。この関連づけを使用して画像データをインスタンス化した場合,具象クラスのインスタンスには復号化した情報だけが保持されることがあります。そのため,JPEG形式のように符号化するときに情報が削減される可能性のある画像を添付ファイルとして送信する場合,受信側のインスタンスが送信側のインスタンスや元のデータと異なることがあります。

画像を元の形式のまま扱いたい場合は,javax.activation.DataHandlerにマッピングされるMIMEタイプ(application/octet-streamなど)を使用してください。

注※3

MIMEタイプに"image/png,image/jpeg"など同一タイプを指定した場合や"image/*"を指定した場合,送信するSOAPメッセージの添付ファイルパートにあるMIMEヘッダのContent-Typeフィールドの値は,java.awt.Image型を使用したときの初期値("image/png")です。

注※4

MIMEタイプに"text/*"や表中にないMIMEタイプを指定した場合,送信するSOAPメッセージの添付ファイルパートにあるMIMEヘッダのContent-Typeフィールドの値は,javax.activation.DataHandler型を使用したときの初期値(javax.activation.DataHandlerオブジェクトのMIMEタイプ)です。

注※5

MIMEタイプに"text/xml"を指定した場合,送信するSOAPメッセージの添付ファイルパートにあるMIMEヘッダのContent-Typeフィールドの値は,javax.xml.transform.Source型を使用したときの初期値("application/xml")です。

注※6

異なるタイプ名のMIMEタイプをコンマ区切りで記述した場合も含まれます(例:image/png, text/plain)。

xmime:expectedContentTypes属性に指定されているMIMEタイプは,cjwsimportコマンドで自動生成されるJavaBeanクラスのうち,xmime:expectedContentTypes属性を記述した要素に対応するJavaBeanクラスにアノテートされたjavax.xml.bind.annotation.XmlMimeTypeアノテーションの値へマッピングされます。WSDLから自動生成されたJavaBeanクラスへのマッピングの例を次の図に示します。

図20‒2 WSDLから自動生成されたJavaBeanクラスへのマッピング

[図データ]

(a) 名前空間"xmime"のインポート

WSDLからJava型へのマッピングでは,名前空間"xmime"に存在する属性"xmime:expectedContentTypes"を使用しますが,JAX-WSではxsd:import要素による名前空間"xmime"のインポートは不要です。

hwsgenコマンドで作成したWSDLを使用する場合,必要に応じて名前空間"xmime"をインポートする必要があります。名前空間"xmime"のインポート例を次に示します。

<wsdl:definitions targetNamespace="http://localhost"
  xmlns:intf="http://localhost"
  xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  xmlns:xmime="http://www.w3.org/2005/05/xmlmime" ・・・・・・>
  <wsdl:types>
    <xsd:schema targetNamespace="http://localhost">
      <xsd:import namespace="http://www.w3.org/2005/05/xmlmime"/>
      <xsd:element name="setPhotoData" type="intf:setPhotoData"/>
      <xsd:complexType name="setPhotoData">
        <xsd:sequence>
          <xsd:element name="in0" type="xsd:base64Binary" xmime:expectedContentTypes="image/jpeg"/>
        </xsd:sequence>
      </xsd:complexType>
      ・・・・・・
    </xsd:schema>
  </wsdl:types>
   ・・・・・・