WebSphere Message Broker バージョン 8.0.0.5 オペレーティング・システム: AIX、HP-Itanium、Linux、Solaris、Windows、z/OS

製品の最新バージョンについては、IBM Integration Bus バージョン 9.0 をご覧ください。

メッセージ・セット: WSDL からのインポート: 生成されるオブジェクトと制約事項

WSDL からインポートした場合、 いくつかのオブジェクトが生成されますが、制約事項が適用される可能性があります。

生成されるオブジェクト

コマンド行インポートによってコピーされるファイル
mqsicreatemsgdefsfromwsdl コマンドは、インポート・プロセスの実行前に、必要とする WSDL ファイルをワークスペースにコピーします。 これらファイルはトップレベルの WSDL ファイルで、インポートは相対位置から解決されます。 ファイルは、importFiles というフォルダーの指定されたアプリケーション、ライブラリー、またはメッセージ・セットの下にコピーされます。
レポート・ファイル

WSDL インポーターは、インポート操作の結果をレポート・ファイルに追加し、プロセス中に発生したすべてのエラーをリストします。 レポート・ファイルのファイル名は、application または library.wsdl.report.txt、あるいは message set.wsdl.report.txt です。

SOAP メッセージ定義

必要な SOAP .xsds ファイルが、アプリケーションまたはライブラリーに追加されます。 メッセージ・セットを使用している場合、.mxsds ファイルがメッセージ・セットに追加されます。

SOAP 1.2 インスタンス文書を構文解析するには、手動で SOAP 1.1 定義を除去し、「IBM 提供メッセージ」を選択して、「メッセージ定義ファイル」ウィザードから SOAP 1.2 定義をインポートします。

アプリケーション、ライブラリー、またはメッセージ・セットに TDS または CWF レイヤーがある場合、インポートされた SOAP 定義に対する警告を多数受け取っていることに気付くかもしれません。 これらの大多数は無視できますが、ブール属性については許容値を考慮してください。 SOAP 1.1 では、ブール値は 1 または 0 ですが、SOAP 1.2 では、値は true および false です。 アプリケーション、ライブラリー、またはメッセージ・セットのブール値の XML 表記は、XML 物理形式の物理プロパティーで指定され、それに応じて設定することが必要になる場合があります。

メッセージ・ルートまたはメッセージ定義ファイル
メッセージ・セットを使用している場合、メッセージ定義が作成されます。 アプリケーションまたはライブラリーを使用している場合、メッセージ・ルートが代わりに作成されます。 その他のメッセージ・ルートまたはメッセージ定義ファイル名は、input file name.xsd (アプリケーションまたはライブラリーの場合) あるいは input file name.mxsd (メッセージ・セットの場合) として作成され、その内容は WSDL スタイルに応じて異なります。
文書スタイル
style="document" の WSDL メッセージ部分 (すべての SOAP ヘッダー、fault、および headerfault 部分を含む) は、XML スキーマで定義されたエレメントを参照します。 このエレメントは、.xsd ファイルまたは .mxsd ファイルでグローバル・エレメントおよびブローカー・メッセージとしてインポートされます。

メッセージの xsi:type 出力ポリシーは「Never」に設定されます。

rpc スタイル
style="rpc" の WSDL メッセージ部分 (および SOAP 本体に割り振られているもののみ) は、XML スキーマで定義されたタイプを参照します。 この場合、入力メッセージと出力メッセージは次の表に示すように作成されます。
  入力メッセージ 出力メッセージ
派生元 WSDL 操作の wsdl:input の子 (あれば) および WSDL メッセージとそれが識別する部分 WSDL 操作の wsdl:output の子 (あれば) および WSDL メッセージとそれが識別する部分
エレメントの名前 WSDL 操作エレメントの名前属性の値 WSDL 操作エレメントで、接尾部が "Response" になっている名前属性の値
エレメントのネーム・スペース 対応する soap:body エレメントのネーム・スペース属性の値 対応する soap:body エレメントのネーム・スペース属性の値

それぞれのメッセージはローカル複合タイプで、一連のエレメントになっています。 各エレメントの名前は、入力エレメントまたは出力エレメントのいずれかで識別されたメッセージの WSDL 部分の名前属性の値です。 それらのエレメントにはネーム・スペースがありません (基礎となるスキーマ表記は form="unqualified")。さらに、名前の競合を避けるためにローカルにスコープ設定されます。 こうしたローカル・エレメントのタイプは、対応する部分エレメントのタイプ属性によって参照される XML スキーマ・タイプです。 タイプは WSDL スキーマにおいてグローバルになります

WSDL 定義で soap:body エレメントが use="encoded" とともに定義されていた場合、メッセージ定義には SOAP-ENV ネーム・スペースの属性グループ encodingStyle への参照が含まれ、メッセージの xsi:type 出力ポリシーは「SOAP エンコード方式に従う」に設定されます。 そうでない場合、メッセージの xsi:type 出力ポリシーは「Never」に設定されます。

.NET を使用して生成された WSDL
場合によっては、.NET を使用して生成された WSDL ファイルには、スキーマ自体へのエレメント参照が含まれます。例:
<xsd:complexType>
		<xsd:sequence>
			<xsd:element ref="s:schema"/>
		</xsd:sequence>
</xsd:complexType>
このタイプの WSDL ファイルを妥当性検査エラーなしで WebSphere® Message Broker Toolkit に正常にインポートするには、ネーム・スペース・インポート・ステートメントを手動でスキーマのネーム・スペースに追加する必要があります。例:
<xsd:import namespace="http://www.w3.org/2001/XMLSchema"/>

インポート・ステートメントはまずスキーマ・エレメント内に配置し、どの複合タイプまたはエレメント定義よりも確実に前に置いてください。 更新された WSDL を右クリックし、「妥当性検査」をクリックして、WSDL を再度妥当性検査します。

制約事項

WSDL 定義が WS-I に準拠していないところには、WSDL 定義のインポートに関わる制限事項があります。
SOAP 配列
WSDL 1.1 定義は SOAP 配列を定義できます (WSDL rpc エンコード・スタイルにのみ該当し、WS-I には準拠しません)。
    <xsd:complexType name="t">
          <xsd:complexContent>
            <xsd:restriction base="SOAP-ENC:Array">
              <xsd:sequence>
                <xsd:element name="item" type="string" maxOccurs="unbounded"/>
              </xsd:sequence>
              <xsd:attribute  ref="SOAP-ENC:arrayType" wsdl:arrayType="xsd:string[]"/>
            </xsd:restriction>
          </xsd:complexContent>
    </xsd:complexType>

SOAP 配列構文によっては、その使用が完全にサポートされているわけではありません。 構文解析時に、役立つツリーが作成され、さらに書き込み時にシリアライズはできますが、以下の制約事項が適用されます。

  • モデルは SOAP-ENC:arrayType 属性を考慮しません。
  • 部分的に伝送された配列のモデルは SOAP-ENC:offset 属性を考慮しません。

    例えば、offset[2] に指定された配列の最初のエレメントは ESQL で InputRoot.MRM.array.item[3] としてではなく、InputRoot.MRM.array.item[1] としてアクセスされる必要があります。

  • 多次元配列のモデルの表示は単一次元に平板化されます。 例えば、2-dimensional 次元配列は ESQL で InputRoot.MRM.array.item[x][y] としてではなく、InputRoot.MRM.array.item[i] としてアクセスされます。ここで、指標 i は適宜計算する必要があります。
無名エレメント
上記の WSDL の抜粋は、以下の形式の SOAP インスタンス文書を記述しています。
    <SOAP-ENC:Array SOAP-ENC:arrayType="xsd:string[3]">
       <item xsi:type="xsd:string">A general text string</item>
       <item xsi:type="xsd:token">A restriction of the string type</item>
       <item xsi:type="xsd:Name">ARestrictionOfTheTokenType</item>
    </SOAP-ENC:Array>

ブローカー・モデルはこの文書を予期したとおりに処理しますが、SOAP エンコード方式配列では、SOAP エンコード方式ネーム・スペースからのタイプ・エレメントを使用するために、エレメントも許可されています。 そのため、同じ WSDL 定義を使用するアプリケーションは、以下の形式のインスタンス文書を作成する可能性があります。

    <SOAP-ENC:Array SOAP-ENC:arrayType="xsd:string[3]">
       <SOAP-ENC:string>A general text string</SOAP-ENC:string>
       <SOAP-ENC:token>A restriction of the string type</SOAP-ENC:token>
       <SOAP-ENC:Name>ARestrictionOfTheTokenType</ SOAP-ENC:Name>
    </SOAP-ENC:Array>

このケースを処理するため、パーサーに自己定義エレメントとして見なされることが受け入れられていなければ、WSDL をインポートして作成されたブローカー・モデルは手動で編集する必要があります。

特記事項 | 商標 | ダウンロード | ライブラリー | サポート | フィードバック

Copyright IBM Corporation 1999, 2014Copyright IBM Corporation 1999, 2014.

        
        最終更新:
        
        最終更新: 2015-02-28 17:46:54


参照トピック参照トピック | バージョン 8.0.0.5 | ad30560_