2.3 Oracle Tuxedoサービス用Tuxedo-to-XMLデータ型のマッピング

次の表に示すように、SALTには、Oracle Tuxedo型付きバッファをXMLドキュメントで記述するためのルール・セットがあります。これらのルールは、SALT WSDLドキュメント内のXMLスキーマ定義としてエクスポートされます。そのため、Oracle Tuxedoのバッファ・タイプに関する知識をあらかじめ備えていなくても、簡単にバッファの変換を実行できます。

表2-2 Oracle TuxedoバッファのXMLスキーマへのマッピング

Oracle Tuxedoバッファ・タイプ 説明 SOAPメッセージのXMLスキーマ・マッピング
STRING Oracle Tuxedo STRING型付きバッファは、NULL文字で終わる文字列の格納に使用します。Oracle Tuxedo STRING型付きバッファは自己記述型バッファです。 xsd:string

SOAPメッセージ内では、実際の文字列データをカプセル化するXML要素を、xsd:stringを使用して直接定義する必要があります。

ノート:

STRINGデータ型には、Oracle Tuxedoサービス・メタデータ・リポジトリにおいてデータの最大長を指定できます。これがOracle Tuxedoで定義されている場合、対応するSOAPメッセージにも同じ最大長の制限が適用されます。GWWSサーバーにより、実際のメッセージ・バイト長がOracle Tuxedoサービス・メタデータ・リポジトリの定義に対して検証されます。メッセージのバイト長がサポート可能な最大長を超える場合は、SOAPフォルトのメッセージが返されます。

GWWSサーバーがUTF-8以外のSOAPメッセージを受け取る場合は、対応する文字列値のエンコーディングは同じです。

CARRAY (Mapping with SOAP Message plus Attachments) Oracle Tuxedo CARRAY型付きバッファには文字配列が格納されます(配列内には任意の位置にNULLを含んでよい)。CARRAYバッファはデータをオペークなものとして扱うバッファで、自己記述型ではありません。 CARRAYバッファのRAWデータは、SOAP Messages with Attachments仕様で定義されたMIME multipart/relatedメッセージに含まれて伝送されます。

MIME Content-Type添付でサポートされる2つのデータ形式は、次のとおりです:

  • application/octet-stream

    - Apache Axis用

  • text/xml

    Oracle WebLogic Serverの場合

形式は、Webサービスのクライアント側で使用されているツールキットによって異なります。

ノート:

このSOAP with Attachmentルールは、Oracle WebLogic ServerおよびApache Axisのみに対して相互運用性を持つ

CARRAYデータ型にはバイトの最大長を指定できます。これがOracle Tuxedoで定義されている場合、対応するSOAPメッセージにはこの制限が適用されます。GWWSサーバーにより、実際のメッセージ・バイト長がOracle Tuxedoサービス・メタデータ・リポジトリの定義に対して検証されます。

CARRAY (Mapping with base64Binary) Oracle Tuxedo CARRAY型付きバッファには文字配列が格納されます(配列内には任意の位置にNULLを含んでよい)。CARRAYバッファはデータをオペークなものとして扱うバッファで、自己記述型ではありません。 xsd:base64Binary

CARRAYのデータ・バイトは、SOAPメッセージ内に埋め込む前にbase64Binaryでエンコードされる必要があります。このオペークなデータ・ストリームに対してbase64Binaryエンコーディングを使用することにより、元のデータの内容を維持したまま、整形式かつ判読可能な形でデータを埋め込むことができます。

SOAPメッセージ内では、実際のCARRAYデータをカプセル化するXML要素を、xsd:base64Binaryを使用して直接定義する必要があります。

ノート:

CARRAYデータ型にはバイトの最大長を指定できます。これがOracle Tuxedoで定義されている場合、対応するSOAPメッセージにはこの制限が適用されます。GWWSサーバーにより、実際のメッセージ・バイト長がOracle Tuxedoサービス・メタデータ・リポジトリの定義に対して検証されます。
MBSTRING Oracle Tuxedo MBSTRING型付きバッファは、マルチバイト文字配列に使用します。Oracle Tuxedo MBSTRINGバッファは次の3つの要素により構成されます。
  • コードセット文字エンコーディング
  • データ長
  • エンコーディングの文字配列。
xsd:string

XMLスキーマの組込み型であるxsd:stringが、SOAPメッセージに格納されたバッファ・データの対応する型を表します。

GWWSサーバーは、UTF-8でエンコードされたXMLドキュメントのみ受け付けます。WebサービスのクライアントがMBSTRINGバッファを使用するOracle Tuxedoサービスにアクセスする場合、SOAPリクエスト・メッセージ内ではマルチバイト文字列のペイロードがUTF-8エンコーディングで表現されている必要があります。

ノート:

GWWSサーバーでは、UTF-8文字セットの文字列をそのままMBSTRING型付きバッファの形式でOracle Tuxedoサービスに渡します。実際のOracle Tuxedoサービスによって、UTF-8文字列が処理されます。

Oracle Tuxedoレスポンスとして返されるすべてのMBSTRING型付きバッファ(任意のエンコーディング文字セットによる)について、GWWSサーバーは文字列のエンコーディングを自動的にUTF-8に変換してからWebサービスのクライアントに送り返します。

MBSTRING (cont.) - 制限事項:

Oracle Tuxedo MBSTRINGデータ型には、Oracle Tuxedoサービス・メタデータ・リポジトリにおいて最大バイト長を指定できます。GWWSサーバーは変換されたMBSTRINGバッファの値のバイト長をチェックします。

SOAPメッセージ内で含まれている文字数に対して最大バイト長の値が適用されません。
XML Oracle Tuxedo XML型付きバッファにはXMLドキュメントが格納されます。 xsd:anyType

XMLスキーマの組込み型であるxsd:anyTypeが、SOAPメッセージに格納されたXMLドキュメントの対応する型を表します。この型を使用すると、すべての整形式XMLデータをSOAPメッセージ内でカプセル化できる。

制限事項:

GWWSサーバーでは、実際のXMLデータが整形式であることが検証されます。それ以外の事項(スキーマ検証など)の適用については確認されない。

SOAP本文には、単一ルートのXMLバッファのみを格納できます。この点はGWWSサーバーによりチェックされます。

実際のXMLデータはUTF-8文字セットでエンコードされている必要があります。元のXMLドキュメントに含まれるプロローグ情報は、SOAPメッセージに含めて伝送することはできません。

XMLデータ型には、データの最大バイト長を指定できます。これがOracle Tuxedoで定義されている場合、対応するSOAPメッセージにも同じ最大長の制限を適用する必要があります。

ノート:

SALTのWSDLジェネレータで生成されるWSDLドキュメントには、最大長を制限するxsd:maxLengthの指定が含まれません。ただし、GWWSサーバーにより、バイト長がOracle Tuxedoサービス・メタデータ・リポジトリの定義に対して検証されます。
VIEW/VIEW32 Oracle Tuxedo VIEWおよびVIEW32型付きバッファには、Oracle Tuxedoアプリケーションで定義されたC構造が格納されます。

VIEW構造は、VIEW定義ファイルを使用して定義されます。VIEWバッファ・タイプは複数のフィールドを定義できます。

VIEWでは次のフィールド型がサポートされています:

  • short
  • int
  • long
  • float
  • double
  • char
  • string
  • carray
  • bool
  • unsigned char
  • signed char
  • wchar_t* or wchar_t
  • unsigned int
  • unsigned long
  • long long
  • unsigned long long
  • long doubl

VIEW32では、すべてのVIEWフィールド型、mbstringおよび埋込みVIEW32型がサポートされています。

VIEWまたはVIEW32の各データ型は、XMLスキーマの複合型として定義されます。VIEWの各フィールドが、XMLスキーマの複合型における1つまたは複数のサブ要素に対応します。サブ要素の名前はVIEWフィールド名と同じです。サブ要素の出現回数は、VIEWフィールド定義のcount属性によって決まります。サブ要素の値は、XMLスキーマの型に対応するVIEWフィールド・データ型にする必要があります。

フィールドの型とそれに対応するXMLスキーマ型の一覧を次に示します:

  • shortxsd:shortに対応する
  • intxsd:intに対応する
  • longxsd:longに対応する
  • floatxsd:floatに対応する
  • doublexsd:doubleに対応する
  • char (Oracle Tuxedoサービス・メタデータ・リポジトリ定義におけるbyte)はxsd:byteに対応する
  • char (Oracle Tuxedoサービス・メタデータ・リポジトリにおけるchar)はxsd:string (maxlength=1の制限付き)に対応する
  • stringxsd:stringに対応する
  • carrayxsd:base64Binaryに対応する
  • mbstringxsd:stringに対応する
VIEW/VIEW32 (cont.) -
  • bool maps to xsd:Boolean
  • unsigned char maps to xsd:unsignedByte
  • signed char maps to xsd:byte
  • wchar_t* or wchar_t array maps to xsd:string
  • unsigned int maps to xsd:unsignedInt
  • unsigned long maps to xsd:unsignedLong
  • long long maps to xsd:long
  • unsigned long long maps to xsd:unsignedLong
  • long double maps to xsd:double. Do not set the value of C importer option size of long double to 128 bit. This option does not import successfully; use the default 64 bit
  • VIEW32 maps to tuxtype:view <viewname>

詳細は、「VIEW/VIEW32に関する考慮事項」を参照してください。

FML/FML32 Oracle Tuxedo FMLおよびFML32型バッファは、Oracle Tuxedoシステムに特有の自己記述型バッファです。各データ・フィールドは独自の識別子、オカレンス番号、および可能であれば長さインジケータを保持します。

FMLでは次のフィールド型がサポートされています:

  • FLD_CHAR
  • FLD_SHORT
  • FLD_LONG
  • FLD_FLOAT
  • FLD_DOUBLE
  • FLD_STRING
  • FLD_CARRAY

FML32では、すべてのFMLフィールド型とFLD_PTRFLD_MBSTRINGFLD_FML32FLD_VIEW32がサポートされています。

FML/FML32バッファには、基本フィールド・データごとに、データ・ディクショナリに似た基本的な定義のみを指定できます。異なる型名を持つFML/FML32バッファごとに、特定のFML/FML32バッファ定義を適用する必要があります。

FML/FML32の各フィールドは、そのFML/FML32バッファXMLスキーマ型における1つまたは複数のサブ要素に対応します。サブ要素の名前はFMLフィールド名です。サブ要素の出現回数は、FML/FML32フィールド定義のcountおよびrequired count属性によって決まります。

フィールドの型とそれに対応するXMLスキーマ型の一覧を次に示します:

  • shortxsd:shortに対応する
  • intxsd:intに対応する
  • longxsd:longに対応する
  • floatxsd:floatに対応する
  • doublexsd:doubleに対応する
  • char (Oracle Tuxedoサービス・メタデータ・リポジトリ定義におけるbyte)はxsd:byteに対応する
  • char (Oracle Tuxedoサービス・メタデータ・リポジトリ定義におけるchar)はxsd:stringに対応する
  • stringxsd:stringに対応する
  • carrayxsd:base64Binaryに対応する
  • mbstringxsd:stringに対応する
FML/FML32

(続き)

-
  • view32tuxtype:view <viewname>に対応する
  • fml32tuxtype:fml32 <svcname>_p<SeqNum>に対応する

FML32バッファ内に複数のFML32バッファが埋め込まれるのを防ぐために、埋込みFML32バッファを識別する一意のシーケンス番号(<SeqNum>)を使用します。

ノート:

ptrはサポートされていません。

FML/FML32バッファのマッピングに関する制限事項および考慮事項については、「FML/FML32に関する考慮事項」を参照してください。

RECORD RECORDバッファ・タイプは、コピーブック・レコードを表します。RECORD型には、個々のレコード構造体を示すサブタイプが必要です。

生成されるCOBOL型:

  • RECORD
  • COMP-1
  • COMP-2
  • S9(18)
  • 9(18)
  • S9(9)
  • 9(9)
  • S9(4)
  • S9(10)V9(10)
  • X(1024)
  • @binary=true
RECORDの各データ型は、XMLスキーマの複合型として定義されます。RECORDの各フィールドが、XMLスキーマの複合型における1つまたは複数のサブ要素に対応します。

COBOLの型とそれに対応するXMLスキーマ型の一覧を次に示します:

  • RECORDxsd:complexTypeに対応する
  • COMP-1xsd:floatに対応する
  • COMP-2xsd:doubleに対応する
  • S9(18)xsd:longに対応する
  • 9(18)xsd:unsignedLongに対応する
  • S9(9)xsd:intに対応する
  • 9(9)xsd:unsignedIntに対応する
  • S9(4)xsd:shortに対応する
  • S9(10)V9(10) COMP-3xsd:decimalに対応する
  • X(1024)xsd:stringに対応する
  • @binary=true xsd:base64Binary
X_C_TYPE X_C_TYPEバッファ・タイプはVIEWバッファ・タイプと同等です。 VIEW/VIEW32を参照してください
X_COMMON X_COMMONバッファ・タイプはVIEWバッファ・タイプと同等ですが、COBOLプログラムとCプログラムとの間で互換性を確保する場合に使用します。フィールドの型としてはshortlong、stringのみ使用します。 VIEW/VIEW32を参照してください
X_OCTET X_OCTETバッファ・タイプはCARRAYバッファ・タイプと同等です CARRAYを参照してください