28.3.1 添付ファイル使用時のWSDLの記述(wsi:swaRef形式)

WSDLで添付ファイルを扱う場合,wsi:swaRef形式で記述します。wsi:swaRef形式は,WSDLで添付ファイルを扱う形式としてWS-I Attachments Profile - Version 1.0で規定されています。

WS-I Attachments Profile - Version 1.0で規定された形式に基づいて,wsi:swaRef形式で記述したWSDLの例を示します。

<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions targetNamespace="http://localhost"
 xmlns:wsi="http://ws-i.org/profiles/basic/1.1/xsd" ...>
 <wsdl:types>
   <schema elementFormDefault="qualified" targetNamespace="http://localhost"
     xmlns="http://www.w3.org/2001/XMLSchema">
     <import namespace="http://ws-i.org/profiles/basic/1.1/xsd"/>
     <element name="getUserData">
       <complexType>
         <sequence>
           <element name="in0" type="xsd:string"/>
           <element name="in1" type="wsi:swaRef"/>
         </sequence>
       </complexType>
     </element>
      ...
   </schema>
 </wsdl:types>
 <wsdl:message name="getUserDataRequest">
   <wsdl:part element="intf:getUserData" name="parameters"/>
 </wsdl:message>
 ...
 <wsdl:portType name="UserInfo">
   <wsdl:operation name="getUserData">
     <wsdl:input message="intf:getUserDataRequest" name="getUserDataRequest"/>
     ...
   </wsdl:operation>
 </wsdl:portType>
 ...
</wsdl:definitions>

この例では,getUserDataメソッドの引数(スキーマ定義のelement要素の型)に,添付ファイルを表すwsi:swaRef型を指定しています。

WSDLで添付ファイルを扱う場合の注意事項
  • swaRef型は,スキーマの要素の型(element要素のtype属性)に指定できます。属性の型(attribute要素のtype属性)に指定した場合,動作は保証されません。
  • swaRef型を指定しているXML Schemaでは,WSDLの例で示すように名前空間http://ws-i.org/profiles/basic/1.1/xsdをインポートする必要があります。インポートしていない場合,XML Processorのエラーが出力されます。
    名前空間http://ws-i.org/profiles/basic/1.1/xsdをインポートするxsd:import要素のschemaLocation属性の形式と,使用可否を次の表に示します。

    表28-3 xsd:import要素のschemaLocation属性の形式と使用可否(swaRef型の使用時)

    項番schemaLocation属性使用可否
    1指定しない使用できます。※1
    2http://wsi.org/profiles/basic/1.1/swaref.xsd使用できます。※1
    3項番1および項番2以外使用できません。※2
    注※1
    cjwsimportコマンドは,Application ServerのJAX-WS機能の内部で保持する名前空間http://ws-i.org/profiles/basic/1.1/xsdのスキーマを参照します。
    注※2
    cjwsimportコマンドは,schemaLocation属性で指定した場所にあるスキーマを参照します。ただし,Application ServerのJAX-WS機能で内容を保証できないスキーマが参照されるため,サポート対象外となります。

  • ユーザ定義例外で添付ファイルは使用できないため,wsdl:fault要素から参照するスキーマの要素の型(element要素のtype属性)にswaRef型は指定できません。wsdl:fault要素から参照するスキーマの要素の型にswaRef型を指定した場合,動作は保証されません。