SALTでは、WSDLメッセージとOracle Tuxedo型付きバッファとの間における双方向のデータ型のマッピングをサポートしています。サービス呼出しのたびに、GWWSサーバーは、Oracle Tuxedo型付きバッファとSOAPメッセージ・ペイロード間の各メッセージを変換します。SOAPメッセージ・ペイロードは<
soap:body>要素にカプセル化されたXMLデータです。詳細は、
「?$paratext>?」を参照してください。
ネイティブOracle Tuxedoサービスについては、Oracle Tuxedoの各バッファ型は、SALTで生成されるWSDLドキュメント内ではXMLスキーマを使用して記述されます。Oracle Tuxedoサービスのリクエスト/レスポンス・バッファが通常のXML形式で表現されます。詳細は、
「?$paratext>?」を参照してください。
外部Webサービスについては、各WSDLメッセージがOracle Tuxedo
FML32バッファ構造としてマップされます。Oracle Tuxedoアプリケーションは、
FML32バッファを入力/出力として使用してSALTプロキシ・サービスを呼び出します。詳細は、
「?$paratext>?」を参照してください。
SALTは、非SOAPデータ型マッピング(XMLおよびJSONの両方でのHTTPを介したREST)もサポートします。これは、サービスが
HTTP/RESTサービスとして公開されている場合に開始されます。詳細は、
「RESTデータ・マッピング」を参照してください。
SALTメッセージ変換は、SOAP XMLデータとOracle Tuxedo型付きバッファとの間におけるメッセージの変換プロセスです。SALTでは、着信メッセージ変換および発信メッセージ変換という2つのメッセージ変換ルールを導入しています。
着信メッセージ変換は、Tuxedo-to-XMLデータ型マッピング・ルールに準拠するSOAP XMLペイロードとOracle Tuxedoタイプ・バッファの変換プロセスです。着信メッセージ変換は次の2つの場合に行われます。
•
|
GWWSがレガシーOracle Tuxedoサービス用のSOAPリクエストを受け付ける場合
|
•
|
GWWSがレガシーOracle Tuxedoサービスからレスポンスの型付きバッファを受け付ける場合
|
SALTでは、SOAPメッセージ内の
<inbuf>、
<outbuf>および/または
<errbuf>要素にOracle Tuxedoバッファ・コンテンツが囲まれています。
<inbuf>、
<outbuf>および/または
<errbuf>要素に囲まれているコンテンツを着信XMLペイロードと呼びます。
発信メッセージ変換プロセスは、Tuxedo-to-XMLデータ型マッピング・ルールに準拠するSOAP XMLペイロードとOracle Tuxedoタイプ・バッファの変換プロセスです。発信メッセージ変換は次の2つの場合に行われます。
•
|
GWWSがOracle Tuxedoアプリケーションから送られてくるリクエストの型付きバッファを受け付ける場合
|
•
|
GWWSが外部WebサービスからのSOAPレスポンス・メッセージを受け付ける場合
|
表2-1では、着信メッセージ変換と発信メッセージ変換を比較しています。
|
|
SOAPメッセージ・ペイロードは、 <inbuf>、 <outbuf>または <errbuf>でカプセル化されます。
|
SOAPメッセージ・ペイロードは、 <soap:body>全体です。
|
変換はTuxedo-to-XMLデータ型マッピング・ルールに従って行います。
|
変換はXML-to-Tuxedoデータ型マッピング・ルールに従って行います。
|
すべてのOracle Tuxedoバッファ・タイプが呼び出されます。
|
Oracle Tuxedo FML32バッファ・タイプのみが呼び出されます。
|
Oracle Tuxedoサービス用Tuxedo-to-XMLデータ型のマッピング
表2-2に示すように、SALTには、Oracle Tuxedo型付きバッファをXMLドキュメントで記述するためのルール・セットが提供されています。それらのルールは、SALT WSDLドキュメント内のXMLスキーマ定義としてエクスポートされます。そのため、Oracle Tuxedoのバッファ型に関する知識をあらかじめ備えていなくても、簡単にバッファの変換を実行できます。
表2-2
Oracle TuxedoバッファのXMLスキーマへのマッピング
|
|
|
|
Oracle Tuxedo STRING型付きバッファは、 NULL文字で終端された文字列を格納する場合に使用します。Oracle Tuxedo STRING型付きバッファは自己記述型バッファです。
|
SOAPメッセージ内では、実際の文字列データをカプセル化するXML要素を、 xsd:stringを使用して直接に定義する必要がある。
•
|
STRINGデータ型には、Oracle Tuxedoサービス・メタデータ・リポジトリにおいてデータの最大長を指定できます。これがOracle Tuxedoで定義されている場合、対応するSOAPメッセージにも同じ最大長の制限が適用されます。GWWSサーバーにより、実際のメッセージ・バイト長がOracle Tuxedoサービス・メタデータ・リポジトリの定義に対して検証されます。メッセージのバイト長がサポート可能な最大長を超える場合は、SOAPフォルトのメッセージが返されます。
|
•
|
GWWSサーバーが UTF-8以外のSOAPメッセージを受け取る場合は、対応する文字列値のエンコーディングは同じです。
|
|
CARRAY (SOAP Message plus Attachmentsとのマッピング)
|
Oracle Tuxedo CARRAY型付きバッファには文字配列が格納されます(配列内には任意の位置に NULLを含んでよい)。 CARRAYバッファはデータをオペークなものとして扱うバッファで、自己記述型ではありません。
|
CARRAYバッファの生のデータは、「SOAP Messages with Attachments」仕様で定義された形式のMIME multipart/relatedメッセージとして保持されます。
MIME Content-Type添付ファイルを以下の2つのデータ形式にサポートされている。
形式は、Webサービス・クライアント・サイド・ツールキットの使用による。
注意:
|
このSOAP with Attachmentルールは、Oracle WebLogic ServerおよびApache Axisのみに対して相互運用性を持つ。
|
注意:
|
CARRAYデータ型にはバイトの最大長を指定できます。これがOracle Tuxedoで定義されている場合、対応するSOAPメッセージにはこの制限が適用されます。GWWSサーバーにより、実際のメッセージ・バイト長がOracle Tuxedoサービス・メタデータ・リポジトリの定義に対して検証されます。
|
|
CARRAY (base64Binaryとのマッピング)
|
Oracle Tuxedo CARRAY型付きバッファには文字配列が格納されます(配列内には任意の位置に NULLを含んでよい)。 CARRAYバッファはデータをオペークなものとして扱うバッファで、自己記述型ではありません。
|
CARRAYのデータ・バイトは、SOAPメッセージ内に埋め込む前に base64Binaryでエンコードされる必要があります。このオペークなデータ・ストリームに対して base64Binaryエンコーディングを使用することにより、元のデータの内容を維持したまま、整形式かつ判読可能な形でデータを埋め込むことができます。
SOAPメッセージ内では、実際の CARRAYデータをカプセル化するXML要素を xsd:base64Binaryによって直接に定義する必要があります。
注意:
|
CARRAYデータ型にはバイトの最大長を指定できます。これがOracle Tuxedoで定義されている場合、対応するSOAPメッセージにはこの制限が適用されます。GWWSサーバーにより、実際のメッセージ・バイト長がOracle Tuxedoサービス・メタデータ・リポジトリの定義に対して検証されます。
|
|
|
Oracle Tuxedo MBSTRING型付きバッファは、マルチバイト文字配列のために使用します。Oracle Tuxedo MBSTRINGバッファは次の3つの要素により構成されます。
|
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サービスのクライアントに送り返します。
|
|
|
Oracle Tuxedo MBSTRINGデータ型には、Oracle Tuxedoサービス・メタデータ・リポジトリにおいて最大バイト長を指定できます。GWWSサーバーは変換された MBSTRINGバッファの値のバイト長をチェックします。
注意:
|
SOAPメッセージ内で含まれている文字数に対して最大バイト長の値が適用されません。
|
|
|
Oracle Tuxedo XML型付きバッファにはXMLドキュメントが格納されます。
|
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サービス・メタデータ・リポジトリの定義に対して検証されます。
|
|
|
Oracle Tuxedo VIEWおよび VIEW32型付きバッファには、Oracle Tuxedoアプリケーションで定義されたC構造が格納されます。
VIEW構造は、 VIEW定義ファイルを使用して定義されます。VIEWバッファ・タイプは複数のフィールドを定義できます。
VIEWでは次のフィールド型がサポートされています。
VIEW32では、すべての VIEWフィールド型、mbstringおよび埋込み VIEW32型がサポートされています。
|
VIEWまたは VIEW32の各データ型は、XMLスキーマの複合型として定義されます。 VIEWの各フィールドが、XMLスキーマの複合型における1つまたは複数のサブ要素に対応します。サブ要素の名前は VIEWフィールド名と同じです。サブ要素の出現回数は、 VIEWフィールド定義の count属性によって異なります。サブ要素の値は、XMLスキーマの型に対応する VIEWフィールド・データ型である必要があります。
フィールドの型とそれに対応するXMLスキーマ型の一覧を以下に示す。
•
|
char (Oracle Tuxedoサービス・メタデータ・リポジトリ定義におけるbyte),は xsd:byteに対応する
|
•
|
char (Oracle Tuxedoサービス・メタデータ・リポジトリにおけるchar)は xsd:string ( maxlength=1の制限付き)に対応する
|
•
|
carrayは xsd:base64Binaryに対応する
|
|
|
|
•
|
unsigned charはxsd:unsignedByteに対応する
|
•
|
signed charはxsd:byteに対応する
|
•
|
wchar_t* or wchar_t arrayはxsd:stringに対応する
|
•
|
unsigned intはxsd:unsignedIntに対応する
|
•
|
unsigned longはxsd:unsignedLongに対応する
|
•
|
unsigned long longはxsd:unsignedLongに対応する
|
•
|
long doubleはxsd:double.に対応するlong doubleのCインポータ・オプションのサイズを128ビットに設定しないでください。このオプションではインポートが正常に行われません。デフォルトの64ビットを使用してください
|
•
|
VIEW32はtuxtype:view <viewname>に対応する
|
|
|
Oracle Tuxedo FMLおよび FML32タイプ・バッファは、Oracle Tuxedoシステムに特有の自己記述型バッファです。データ・フィールドごとに個別の識別子、出現回数、および必要に応じて長さを示す情報を保持します。
FMLでは次のフィールド型がサポートされています。
FML32では、すべてのFMLフィールド型と FLD_PTR、 FLD_MBSTRING、 FLD_FML32、 FLD_VIEW32がサポートされています。
|
FML/FML32バッファには、基本フィールド・データごとに、データ・ディクショナリに似た基本的な定義のみを指定できます。異なる型名を持つ FML/FML32バッファごとに、特定の FML/FML32バッファ定義を適用する必要があります。
FML/FML32の各フィールドは、その FML/FML32バッファXMLスキーマ型における1つまたは複数のサブ要素に対応します。サブ要素の名前は FMLフィールド名です。サブ要素の出現回数は、 FML/FML32フィールド定義の カウントおよび 必須カウント属性によって異なります。
フィールドの型とそれに対応するXMLスキーマ型の一覧を以下に示す。
•
|
char (Oracle Tuxedoサービス・メタデータ・リポジトリ定義におけるbyte)は xsd:byteに対応する
|
•
|
char (Oracle Tuxedoサービス・メタデータ・リポジトリ定義におけるchar)は xsd:stringに対応する
|
•
|
carrayは xsd:base64Binaryに対応する
|
|
|
|
•
|
view32は tuxtype:view <viewname>に対応します。
|
•
|
fml32は tuxtype:fml32 <svcname>_p<SeqNum>に対応します。
|
FML32バッファ内に複数の FML32バッファが埋め込まれるのを防ぐために、埋込みFML32バッファを識別する一意のシーケンス番号( <SeqNum>)を使用します。
FML/FML32バッファのマッピングに関する制限事項および考慮事項については、 「FML/FML32に関する考慮事項」を参照してください。
|
|
RECORDバッファ・タイプは、コピーブック・レコードを表します。 RECORD型には、個々のレコード構造体を示すサブタイプが必要です。
|
RECORDの各データ型は、XMLスキーマの複合型として定義されます。 RECORDの各フィールドが、XMLスキーマの複合型における1つまたは複数のサブ要素に対応します。
COBOLの型とそれに対応するXMLスキーマ型の一覧を次に示します。
•
|
RECORDは xsd:complexTypeに対応します。
|
•
|
9(18)は xsd:unsignedLongに対応します。
|
•
|
9(9)は xsd:unsignedIntに対応します。
|
•
|
S9(10)V9(10) COMP-3は xsd:decimalに対応します。
|
•
|
X(1024)は xsd:stringに対応します。
|
•
|
@binary=trueは xsd:base64Binaryに対応します。
|
|
|
X_C_TYPEバッファ・タイプは VIEWバッファ・タイプと同等です。
|
|
|
X_COMMONバッファ・タイプは VIEWバッファ・タイプと同等ですが、COBOLプログラムとCプログラムとの間で互換性を確保する場合に使用します。フィールドの型としては short、 long、stringのみ使用します。
|
|
|
X_OCTETバッファ型は CARRAYバッファ型と同等です。
|
CARRAY xsd:base64Binaryを参照
|
Oracle Tuxedo STRING型付きバッファ
Oracle Tuxedo
STRING型付きバッファは、
NULL文字で終端された文字列を格納する場合に使用します。Oracle Tuxedo
STRING型付きバッファは自己記述型バッファです。
リスト2-1に、
STRING型付きバッファを受け付ける
TOUPPER Oracle TuxedoサービスのSOAPメッセージの例を示します。
リスト2-1
TOUPPERサービスでのSTRING型付きバッファに対するSoapメッセージ
<?xml ��� encoding=���UTF-8��� ?>
������
<SOAP:body>
<m:TOUPPER xmlns:m=���urn:......���>
<inbuf>abcdefg</inbuf>
</m:TOUPPER>
</SOAP:body>
<xsd:element name=���inbuf��� type=���xsd:string��� />
Oracle Tuxedo CARRAY型付きバッファ
Oracle Tuxedo
CARRAY型付きバッファは文字配列を格納する場合に使用されます(配列内には任意の位置に
NULLを含んでよい)。このバッファはデータをオペークなものとして扱うバッファで、自己記述型ではありません。Oracle Tuxedo
CARRAY型付きバッファは
xsd:base64BinaryまたはMIME添付ファイルにマッピングできます。デフォルトは
xsd:base64Binaryです。
リスト2-2に、
base64Binaryマッピングを使用して
CARRAY型付きバッファを受け付ける
TOUPPER Oracle TuxedoサービスのSOAPメッセージの例を示します。
リスト2-2
base64Binaryマッピングを使用するCARRAY型付きバッファのSOAPメッセージ
<SOAP:body>
<m:TOUPPER xmlns:m=���urn:......���>
<inbuf>QWxhZGRpbjpvcGVuIHNlc2FtZQ==</inbuf>
</m:TOUPPER>
</SOAP:body>
<xsd:element name=���inbuf��� type=���xsd:base64Binary��� />
リスト2-3に、MIME添付ファイルとして
CARRAY型付きバッファを受け付ける
TOUPPER Oracle TuxedoサービスのSOAPメッセージの例を示します。
リスト2-3
MIME添付ファイルを使用するCARRAY型付きバッファのSOAPメッセージ
MIME-Version: 1.0
Content-Type: Multipart/Related; boundary=MIME_boundary; type=text/xml;
start="<claim061400a.xml@example.com>"
Content-Description: This is the optional message description.
--MIME_boundary
Content-Type: text/xml; charset=UTF-8
Content-Transfer-Encoding: 8bit
Content-ID: <claim061400a.xml@ example.com>
<?xml version='1.0' ?>
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Body>
..
<m:TOUPPER xmlns:m=���urn:������>
<inbuf href="cid:claim061400a.carray@example.com"/>
</m:TOUPPER>
..
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
--MIME_boundary
Content-Type: text/xml
Content-Transfer-Encoding: binary
Content-ID: <claim061400a. carray @example.com>
...binary carray data���
--MIME_boundary--
The WSDL for carray typed buffer will look like the following:
<wsdl:definitions ���>
<wsdl:types ���>
<xsd:schema ���>
<xsd:element name=���inbuf��� type=���xsd:base64Binary��� />
</xsd:schema>
</wsdl:types>
������
<wsdl:binding ���>
<wsdl:operation name=���TOUPPER���>
<soap:operation ���>
<input>
<mime:multipartRelated>
<mime:part>
<soap:body parts=��������� use=���������/>
</mime:part>
<mime:part>
<mime:content part=��������� type=���text/xml���/>
</mime:part>
</mime:multipartRelated>
</input
������
</wsdl:operation>
</wsdl:binding>
</wsdl:definitions>
Oracle Tuxedo MBSTRING型付きバッファ
Oracle Tuxedo
MBSTRING型付きバッファは、マルチバイト文字配列のために使用します。Oracle Tuxedo
MBSTRING型付きバッファは次の3つの要素により構成されます。
注意:
|
UTF-8コードセット以外のマルチバイト文字列をSOAPメッセージ内に直接埋め込むことはできません。
|
リスト2-4には、
MBSTRING型付きバッファを受け付ける
MBSERVICE Oracle TuxedoサービスのSOAPメッセージの例を示します。
リスト2-4
MBSIRINGバッファのSOAPメッセージ
<?xml encoding=���UFT-8���?>
<m:MBSERVICE xmlns:m=���http://......���>
<inbuf>���������������</infuf>
<xsd:element name=���inbuf��� type=���xsd:string��� />
警告:
|
SALTでは、日本語文字の「―」(EUC-JP 0xa1bd、Shift-JIS 0x815c)はUTF-16 0x2015に変換されます。
|
別の文字セット変換エンジンを使用する場合には、この文字に対するEUC-JPまたはShift-JISのマルチバイト出力は異なることがあります。たとえば、Java il8n文字変換エンジンではこの記号がUTF-16 0x2014に変換されます。この結果は、SALTのデフォルトであるUTF-8への変換についても同様です。
別の文字変換エンジンを使用する場合、
MBSTRINGに日本語文字の「―」が含まれている場合、Oracle Tuxedoサーバー・サイドの
MBSTRING自動変換機能で文字列をShift-JISまたはEUC-JPに戻すことはできません。
Oracle Tuxedo
XML型付きバッファにはXMLドキュメントが格納されます。
リスト2-5に、株価情報のXMLドキュメントの例を示します。
リスト2-6には、
XML型付きバッファを受け付ける
STOCKINQ Oracle TuxedoサービスのSOAPメッセージの例を示します。
<?xml version="1.0" encoding="UTF-8"?>
<!-- "Stock Quotes". -->
<stockquotes>
<stock_quote>
<symbol>BEAS</symbol>
<when>
<date>01/27/2001</date>
<time>3:40PM</time>
</when>
<change>+2.1875</change>
<volume>7050200</volume>
</stock_quote>
</stockquotes>
<SOAP:body>
<m: STOCKINQ xmlns:m=���urn:......���>
<inbuf>
<stockquotes>
<stock_quote>
<symbol>BEAS</symbol>
<when>
<date>01/27/2001</date>
<time>3:40PM</time>
</when>
<change>+2.1875</change>
<volume>7050200</volume>
</stock_quote>
</stockquotes>
</inbuf>
</m: STOCKINQ >
</SOAP:body>
<xsd:element name=���inbuf��� type=���xsd:anyType��� />
注意:
|
デフォルトのネームスペースがOracle Tuxedo XML型付きバッファに格納されてGWWSサーバーに返されると、GWWSサーバーはデフォルトのネームスペースを正規の名前に変換します。これにより、各要素にはその名前の接頭辞が付加されます。
|
たとえば、デフォルトのネームスペースを持つ
リスト2-7のようなバッファがOracle TuxedoサービスからGWWSサーバーに返されると、GWWSサーバーは、
リスト2-8のようにデフォルトのネームスペースを正規の名前に変換します。
リスト2-7
GWWSサーバーに送信される前のデフォルトのネームスペース
<Configuration xmlns="http://www.bea.com/Tuxedo/Salt/200606">
<Servicelist id="simpapp">
<Service name="toupper"/>
</Servicelist>
<Policy/>
<System/>
<WSGateway>
<GWInstance id="GWWS1">
<HTTP address="//myhost:8080"/>
</GWInstance>
</WSGateway>
</Configuration>
リスト2-8
GWWSサーバーによりデフォルトのネームスペースの正規の名前に変換
<dom0:Configuration
xmlns:dom0="http://www.bea.com/Tuxedo/Salt/200606">
<dom0:Servicelist dom0:id="simpapp">
<dom0:Service dom0:name="toupper"/>
</dom0:Servicelist>
<dom0:Policy></<dom0:Policy>
<dom0:System></<dom0:System>
<dom0:WSGateway>
<dom0:GWInstance dom0:id="GWWS1">
<dom0:HTTP dom0:address="//myhost:8080"/>
</dom0:GWInstance>
</dom0:WSGateway>
</dom0:Configuration>
Oracle Tuxedo VIEW/VIEW32型付きバッファ
Oracle Tuxedo
VIEWおよび
VIEW32型付きバッファは、Oracle Tuxedoアプリケーションで定義されたC構造を格納する場合に使用します。VIEW構造は
VIEW定義ファイルで定義する必要があります。
VIEWバッファ・タイプは複数のフィールドを定義できます。
リスト2-9に、
MYVIEWという
VIEW定義ファイルの例を示します。
リスト2-10には、
VIEW型付きバッファを受け付ける
MYVIEW Oracle TuxedoサービスのSOAPメッセージの例を示します。
リスト2-9
MYVIEWサービスのVIEW定義ファイル
VIEW MYVIEW
#type cname fbname count flag size null
float float1 - 1 - - 0.0
double double1 - 1 - - 0.0
long long1 - 3 - - 0
string string1 - 2 - 20 '\0'
END
リスト2-10
VIEW型付きバッファのSOAPメッセージ
<SOAP:body>
<m: STOCKINQ xmlns:m=���http://......���>
<inbuf>
<float1>12.5633</float1>
<double1>1.3522E+5</double1>
<long1>1000</long1>
<long1>2000</long1>
<long1>3000</long1>
<string1>abcd</string1>
<string1>ubook</string1>
</inbuf>
</m: STOCKINQ >
</SOAP:body>
リスト2-11
VIEW型付きバッファのXMLスキーマ
<xsd:complexType name=��� view_MYVIEW���>
<xsd:sequence>
<xsd:element name=���float1��� type=���xsd:float��� />
<xsd:xsd:element name=���double1��� type=���xsd:double��� />
<xsd:element name=���long1��� type=���xsd:long��� minOccurs=���3��� />
<xsd:element name=���string1��� type=���xsd:string minOccurs=���3��� />
</xsd:sequence>
</xsd: complexType >
<xsd:element name=���inbuf��� type=���tuxtype:view_MYVIEW��� />
Oracle Tuxedo
VIEW/VIEW32バッファとXMLとの変換に関しては、次の点を考慮する必要があります。
•
|
XMLと VIEW/VIEW32との変換するための環境を用意する必要があります。これには、 VIEWディレクトリおよびシステム VIEW定義ファイルの設定が含まれます。GWWSサーバーはこれらの定義を自動的にロードします。
|
•
|
GWWSサーバーでは、起動時にOracle Tuxedoサービス・メタデータ・リポジトリのVIEW/VIEW32パラメータ定義と VIEW/VIEW32定義ファイルとの整合性の厳格なチェックが提供されます。
|
不整合な点が見つかった場合、GWWSサーバーは起動できません。不整合に関するメッセージが
ULOGファイルに出力されます。
•
|
tmwsdlgenも同じように、起動時にOracle Tuxedoサービス・メタデータ・リポジトリの VIEW/VIEW32パラメータ定義と VIEW/VIEW32定義ファイルとの整合性の厳格なチェックを提供します。不整合な点が見つかった場合、GWWSサーバーは起動できません。不整合に関するメッセージが ULOGファイルに出力されます。
|
VIEW定義ファイルをロードできない場合、
tmwsdlgenはOracle Tuxedoサービス・メタデータ・リポジトリの定義を使用してWSDLドキュメントの作成を試みます。
•
|
dec_tはサポートされていないため、 dec_t型の VIEWフィールドを定義する場合、サービスをWebサービスとしてエクスポートできず、SALT構成ファイルのロード中にエラー・メッセージが生成されます。
|
•
|
Oracle Tuxedoサービス・メタデータ・リポジトリは、 string/ mbstring型のパラメータのサイズ属性(Oracle Tuxedo型付きバッファ内で許容される最大バイト長を指定する)を定義する場合がありますが、この制限値の指定はSALTによって生成されるWSDLドキュメントには公開されません。
|
•
|
VIEW32に埋め込まれたMBStringバッファがリクエストされてGWWSサーバーに返された場合、GWWSは必要な MBStringの長さを正しく計算できず、入力文字列が VIEW32の最大長を超えたと報告します。この問題は、転送エンコーディング情報内にヘッダーが含まれているために発生します。 VIEW32のフィールド長を定義する際には、ヘッダーのサイズを含めることが必要です。
|
•
|
Oracle Tuxedoの基本データ型である longのサイズは、プラットフォームによって32ビット・スコープの場合と64ビット・スコープの場合があり一定ではありません。しかし、この型に対応する xsd:longスキーマ型で64ビットの数値を表現できます。
|
GWWSサーバーが32ビット・モードで動作している場合、Webサービスのクライアントから32ビットの範囲を超えた値を持つ
xsd:long型データが送信されると、SOAPフォルトが発生することがあります。
Oracle Tuxedo FML/FML32型付きバッファ
Oracle Tuxedo
FMLおよび
FML32型付きバッファは、Oracle Tuxedoシステムに特有の自己記述型バッファです。データ・フィールドごとに個別の識別子、出現回数、および必要に応じて長さを示す情報を保持します。
リスト2-12に、
FML型付きバッファを受け付ける
TRANSFER TuxedoサービスのSOAPメッセージの例を示します。
LOGINサービスでは以下のリクエスト・フィールドが使われています。
ACCOUNT_ID 1 long /* 2 occurrences, The withdrawal account is 1st, and the deposit account is 2nd */
AMOUNT 2 float /* The amount to transfer */
リスト2-12
FML型付きバッファのSOAPメッセージ
<SOAP:body>
<m:TRANSFER xmlns:m=���urn:......���>
<inbuf>
<ACCOUNT_ID>40069901</ACCOUNT_ID>
<ACCOUNT_ID>40069901</ACCOUNT_ID>
<AMOUNT>200.15</AMOUNT>
</inbuf>
</m:TRANSFER >
</SOAP:body>
リスト2-13
FML型付きバッファのXMLスキーマ
<xsd:complexType name=��� fml_TRANSFER_In���>
<xsd:sequence>
<xsd:element name=���ACCOUNT_ID��� type=���xsd:long��� minOccurs=���2���/>
<xsd:element name=��� AMOUNT��� type=���xsd:float��� />
</xsd:sequence>
</xsd: complexType >
<xsd:element name=���inbuf��� type=���tuxtype: fml_TRANSFER_In��� />
リスト2-14には、
FML32型付きバッファを受け付ける
TRANSFER Oracle TuxedoサービスのSOAPメッセージの例を示します。
LOGINサービスでは以下のリクエスト・フィールドが使われています。
CUST_INFO 1 fml32 /* 2 occurrences, The withdrawal customer is 1st, and the deposit customer is 2nd */
ACCOUNT_INFO 2 fml32 /* 2 occurrences, The withdrawal account is 1st, and the deposit account is 2nd */
AMOUNT 3 float /* The amount to transfer */
埋め込まれている各
CUST_INFOには、以下のフィールドがあります。
CUST_NAME 10 string
CUST_ADDRESS 11 carray
CUST_PHONE 12 long
埋め込まれている各
ACCOUNT_INFOには、以下のフィールドがあります。
ACCOUNT_ID 20 long
ACCOUNT_PW 21 carray
リスト2-14
FML32バッファを使用するサービスのSOAPメッセージ
<SOAP:body>
<m:STOCKINQ xmlns:m=���urn:......���>
<inbuf>
<CUST_INFO>
<CUST_NAME>John</CUST_NAME>
<CUST_ADDRESS>Building 15</CUST_ADDRESS>
<CUST_PHONE>1321</CUST_PHONE>
</CUST_INFO>
<CUST_INFO>
<CUST_NAME>Tom</CUST_NAME>
<CUST_ADDRESS>Building 11</CUST_ADDRESS>
<CUST_PHONE>1521</CUST_PHONE>
</CUST_INFO>
<ACCOUNT_INFO>
<ACCOUNT_ID>40069901</ACCOUNT_ID>
<ACCOUNT_PW>abc</ACCOUNT_PW>
</ACCOUNT_INFO>
<ACCOUNT_INFO>
<ACCOUNT_ID>40069901</ACCOUNT_ID>
<ACCOUNT_PW>zyx</ACCOUNT_PW>
</ACCOUNT_INFO>
<AMOUNT>200.15</AMOUNT>
</inbuf>
</m: STOCKINQ >
</SOAP:body>
リスト2-15
FML32バッファのXMLスキーマ
<xsd:complexType name=���fml32_TRANSFER_In���>
<xsd:sequence>
<xsd:element name=���CUST_INFO��� type=���tuxtype:fml32_TRANSFER_p1��� minOccurs=���2���/>
<xsd:element name=���ACCOUNT_INFO��� type=���tuxtype:fml32_TRANSFER_p2��� minOccurs=���2���/>
<xsd:element name=���AMOUNT��� type=���xsd:float��� />
/xsd:sequence>
</xsd:complexType >
<xsd:complexType name=���fml32_TRANSFER_p1���>
<xsd:element name=���CUST_NAME��� type=���xsd:string��� />
<xsd:element name=���CUST_ADDRESS��� type=���xsd:base64Binary��� />
<xsd:element name=���CUST_PHONE��� type=���xsd:long��� />
</xsd:complexType>
<xsd:complexType name=���fml32_TRANSFER_p2���>
<xsd:element name=���ACCOUNT_ID��� type=���xsd:long��� />
<xsd:element name=���ACCOUNT_PW��� type=���xsd:base64Binary��� />
</xsd:complexType>
<xsd:element name=���inbuf��� type=���tuxtype: fml32_TRANSFER_In��� />
Oracle Tuxedo
FML/FML32バッファとXMLとの変換に関しては、次の点を考慮する必要があります。
•
|
XMLと FML/FML32を相互に変換するための環境を用意する必要があります。これには、 FMLフィールド表ファイルのディレクトリおよびシステムFMLフィールド定義ファイルの設定が含まれます。GWWSはこれらの定義を自動的にロードします。FML型付きバッファは、環境が正しく設定されている場合に限って処理できます。
|
•
|
FML32フィールド型 FLD_PTRはサポートされていません。
|
•
|
GWWSサーバーでは、起動時にOracle Tuxedoサービス・メタデータ・リポジトリの FML/FML32パラメータ定義と FML/FML32定義ファイルとの整合性の厳格なチェックが提供されます。
|
環境設定に準拠していない
FML/32フィールドが見付かった場合、またはフィールド表のフィールド・データ型定義がOracle Tuxedoサービス・メタデータ・リポジトリのパラメータ・データ型定義と異なる場合、GWWSは起動できません。不整合に関するメッセージが
ULOGファイルに出力されます。
•
|
tmwsdlgenコマンドによって、Oracle Tuxedoサービス・メタデータ・リポジトリの FML/FML32パラメータ定義と FML/FML32定義ファイルとの整合性がチェックされます。不整合な点が見つかった場合、警告のみが表示され、不整合が許容されます。
|
環境設定に準拠していない
FML/32フィールドが見付かった場合、またはフィールド表のフィールド・データ型定義がOracle Tuxedoサービス・メタデータ・リポジトリのパラメータ・データ型定義と異なる場合、
tmwsdlgenはOracle Tuxedoサービス・メタデータ・リポジトリの定義を使用してWSDLドキュメントの作成を試みます。
•
|
Oracle Tuxedoサービス・メタデータ・リポジトリは、 string/ mbstring型のパラメータのサイズ属性(Oracle Tuxedo型付きバッファ内で許容される最大バイト長を指定する)を定義する場合がありますが、この制限値の指定はSALTによって生成されるWSDLドキュメントには公開されません。
|
•
|
Oracle Tuxedoの基本データ型である longのサイズは、プラットフォームによって32ビット・スコープの場合と64ビット・スコープの場合があり一定ではありません。しかし、この型に対応する xsd:longスキーマ型で64ビットの数値を表現できます。次のシナリオではSOAPフォルトが生成されます。
|
GWWSサーバーが32ビット・モードで動作している場合、Webサービスのクライアントから32ビットの範囲を超えた値を持つ
xsd:long型データが送信されます。
Oracle Tuxedo RECORD型付きバッファ
Oracle Tuxedo RECORD型付きバッファでは、COBOLコピーブック情報を記述できます。
リスト2-16に、
myRecordというCOBOLコピーブック・ファイルを示します。
リスト2-16
COBOLコピーブックmyRecord
05 name occurs 1 times PIC X(10).
05 num occurs 1 times PIC S9(9) COMP-5.
05 subgroup occurs 1 times.
10 long1 PIC S9(9) COMP-5.
リスト2-17
RECORD型付きバッファのSOAPメッセージ
<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv=http://schemas.xmlsoap.org/soap/envelope/ xmlns:urn="urn:pack.TuxAll_typedef.salt11">
<urn:QUERY soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<inbuf xsi:type="urn:record_QUERY_In_myRecord">
<num xsi:type="xsd:int">999</num>
<subgroup xsi:type="urn:record_QUERY_In__p3">
<long1 xsi:type="xsd:int">1000</long1>
リスト2-18
RECORD型付きバッファのスキーマ
<xsd:complexType name="record_QUERY_In_myRecord">
<xsd:element maxOccurs="1" minOccurs="1" name="name">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="10"></xsd:maxLength>
<xsd:element maxOccurs="1" minOccurs="1" name="num" type="xsd:int"></xsd:element>
<xsd:element maxOccurs="1" minOccurs="1" name="subgroup" type="tuxtype:record_QUERY_In__p3"></xsd:element>
<xsd:complexType name="record_QUERY_In__p3">
<xsd:element maxOccurs="1" minOccurs="1" name="long1" type="xsd:int"></xsd:element>
<xsd:element maxOccurs="1" minOccurs="1" name="string1">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="19"></xsd:maxLength>
REDEFINESはコアの
RECORD実装を使用して処理され、この実装では、選択の決定を実行するためにブール式を使用する
cpy2recordバイナリ出力を取得します。GWWSでは、レコードを処理および使用するときにこれらの機能を使用して、発信メッセージ(着信応答と発信リクエスト)で選択する再定義メンバーを決定します。
着信メッセージ(着信リクエストと発信応答)の場合、選択はもう一方の側で実行されている必要があります。
cpy2recordバイナリを利用するために、GWWSは
RECORD記述ファイル(たとえば、VIEW/VIEW32コンパイル済定義)をロードし、
RECORDFILES/
RECORDDIR環境変数を使用します。
MIFファイルでキーワード
unionを指定すると、アイテムは
REDEFINE関係を維持します。
Oracle Tuxedo X_C_TYPE型付きバッファ
Oracle Tuxedo
X_C_TYPE型付きバッファは、Oracle Tuxedo
VIEW型付きバッファと同等であり、WSDLの書式も同様になります。SOAPクライアントがこれらの型を区別する必要はありません。使用方法はOracle Tuxedo
VIEWバッファ・タイプに似ていますが、SALT管理者は、このバッファ・タイプを使用する個々のOracle TuxedoサービスについてOracle Tuxedoサービス・メタデータ・リポジトリを適切に構成する必要があります。
注意:
|
Viewに関して考慮する必要があるすべての事項は、 X_C_TYPE型付きバッファにも該当します。
|
Oracle Tuxedo X_COMMON型付きバッファ
Oracle Tuxedo
X_COMMON型付きバッファはOracle Tuxedo
VIEW型付きバッファと同等です。ただし、この型はCOBOLとCプログラムとの間で互換性を確保する場合に使用するものです。フィールドの型としては
short、
long、
stringのみ使用します。
Oracle Tuxedo X_OCTET型付きバッファ
Oracle Tuxedo
X_OCTET型付きバッファは
CARRAYと同等です。
注意:
|
Oracle Tuxedo X_OCTET型付きバッファは xsd:base64Binaryタイプのみにマップできます。SALT 1.1は、Oracle Tuxedo X_OCTET型付きバッファに対する MIME添付ファイル・バインディングをサポートしません。
|
SALTには、カスタム型付きバッファをサポートするためのプラグイン・メカニズムがあります。これにより、独自のXMLスキーマ定義に対するSOAPメッセージの検証、カスタム型付きバッファの割り当て、データの解析とバッファへの変換、およびその他の操作ができます。
XMLスキーマの組込み型である
xsd:anyType型がこれに対応し、SOAPメッセージに格納されたXMLドキュメントを表します。カスタム型付きバッファを使用する際は、実際のデータをXML形式で定義および表現し、それをWebサービスのクライアントとOracle Tuxedo Webサービス・スタックとの間で伝送するようにします。XML型付きバッファの場合と同様に、SOAP本文には単一ルートのXMLバッファのみ格納できます。この点は、整合性を保つためGWWSによりチェックされます。
外部Webサービス用XML-to-Tuxedoデータ型のマッピング
SALTでは、各
wsdl:messageがOracle Tuxedo
FML32バッファ構造としてマップされます。SALTには、
FML32を使用してXMLスキーマ定義を表すためのルール・セットが提供されています。外部Webサービスを呼び出すには、対応するメッセージの外部WebサービスのXMLスキーマ定義から変換された
FML32構造を理解する必要があります。
次の項では、Oracle Tuxedo
FML32バッファ・マッピング・ルールのWSDLメッセージについて説明します。
表2-3に、サポート対象のXMLスキーマの組込み単純なデータ型および対応するOracle Tuxedo
FML32のフィールド・データ型を示します。
表2-3
サポート対象のXMLスキーマの組込み単純なデータ型
|
Oracle Tuxedo FML32のフィールド・データ型
|
Oracle TuxedoプログラムのC/C++プリミティブ型
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
32ビット・スコープのOracle Tuxedoプログラムでは、Cプリミティブ型である longは xsd:longのすべての有効な値を表現できません。
|
|
|
|
32ビットOracle Tuxedoプログラムでは、Cプリミティブ型であるlong long は、 xsd:longのすべての有効な値を表現できます。
|
|
|
|
32ビット・スコープのOracle Tuxedoプログラムでは、Cプリミティブ型である unsigned longは xsd:longのすべての有効な値を表現できません。
|
|
|
|
32ビットOracle Tuxedoプログラムでは、Cプリミティブ型であるunsigned long long は、 xsd:unsignedのすべての有効な値を表現できます。
|
|
|
|
|
|
|
|
|
(および xsd:stringから派生されたすべての組込み型( xsd:token、 xsd:Nameなど))
|
|
|
xsd:stringは wsdlcvtを使用して FLD_STRINGまたは FLD_MBSTRINGとしてマップできます。
|
|
|
|
|
|
|
|
|
(Data/Time関連、decimal/Integer関連、あらゆるURL、QName、NOTATION)
|
|
|
対応するXML組込みデータ型の値パターンに準拠する必要があります。そうしないと、サーバー側のWebサービスはリクエストを受け付けません。
|
次のサンプルでは、XMLスキーマの組込み単純な型のOracle Tuxedoプログラムでデータを作成する方法を示します。
表2-4
XMLスキーマの組込み型のサンプル - xsd:string
|
|
<xsd:element name=���message��� type=���xsd:string��� />
|
対応するFML32フィールド定義(FLD_MBSTRING)
|
|
# Field_name Field_type Field_flag Field_comments message mbstring -
|
|
|
FBFR32 * request; FLDLEN32 len, mbsize = 1024; char * msg, * mbmsg; msg = calloc( ... ); mbmsg = malloc(mbsize); ... strncpy(msg, ���...���, len); /* The string is UTF-8 encoding */ Fmbpack32(���utf-8���, msg, len, mbmsg, &mbsize, 0); /* prepare mbstring*/ Fadd32( request, message, mbmsg, mbsize);
|
表2-5
XMLスキーマの組込み型のサンプル - xsd:hexBinary
|
|
<xsd:element name=���mem_snapshot��� type=���xsd:hexBinary��� />
|
対応するFML32フィールド定義(FLD_MBSTRING)
|
|
# Field_name Field_type Field_flag Field_comments mem_snapshot carray -
|
|
|
FBFR32 * request; FLDLEN32 len; char * buf;
buf = calloc( ... ); ... memcpy(buf, ���...���, len); /* copy the original memory */ Fadd32( request, mem_snapshot, buf, len);
|
表2-6
XMLスキーマの組込み型のサンプル - xsd:date
|
|
<xsd:element name=���IssueDate��� type=���xsd:date��� />
|
対応するFML32フィールド定義(FLD_STRING)
|
|
# Field_name Field_type Field_flag Field_comments IssueDate string -
|
|
|
FBFR32 * request; char date[32];
... strcpy(date, ���2007-06-04+8:00���); /* Set the date value correctly */ Fadd32( request, IssueDate, date, 0);
|
表2-7に、サポート対象のXMLスキーマのユーザー定義の単純なデータ型および対応するOracle Tuxedo
FML32のフィールド・データ型の一覧を示します。
表2-7
サポート対象のXMLスキーマのユーザー定義データ型
|
Oracle Tuxedo FML32のフィールド・データ型
|
Oracle TuxedoプログラムのC/C++プリミティブ型
|
|
|
|
|
要素タグがある全文のXMLドキュメントを作成する必要があります。
|
組込みプリミティブで単純なデータ型から派生した<xsd:simpleType>
|
プリミティブで単純な型の同等なFML32フィールド型(表2-3を参照)
|
プリミティブで単純な型の同等なCプリミティブ・データ型(表2-3を参照)
|
<xsd:restriction>で定義されているファセットは、Oracle Tuxedoでは適用されません。
|
<xsd:list>で定義された<xsd:simpleType>
|
|
|
<xsd:anyType>と同じです スキーマのコンプライアンスは、Oracle Tuxedoでは適用されません。
|
<xsd:union>で定義された<xsd:simpleType>
|
|
|
<xsd:anyType>と同じです スキーマのコンプライアンスは、Oracle Tuxedoでは適用されません。
|
<xsd:simpleContent>で定義された<xsd:complexType>
|
|
|
<xsd:anyType>と同じです スキーマのコンプライアンスは、Oracle Tuxedoでは適用されません。
|
<xsd:complexContent>で定義された<xsd:complexType>
|
|
|
<xsd:anyType>と同じです スキーマのコンプライアンスは、Oracle Tuxedoでは適用されません。
|
概略の<xsd:complexContent>で定義された <xsd:complexType>、 sequenceまたはallで構成されたサブ要素
|
|
|
複合型の各サブ要素は埋込み FML32フィールドとして定義されます。
|
概略の<xsd:complexContent>で定義された <xsd:complexType>、 choiceで構成されたサブ要素
|
|
|
複合型の各サブ要素は埋込み FML32フィールドとして定義されます。
fml32バッファには1つのサブ・フィールドのみを追加してください。
|
<xsd:complexType>とサブ要素は、順番に従ってコンポジット化されます。complexTypeには属性と要素を含めることができます。
|
|
|
複合型の各サブ要素は埋込み FML32フィールドとして定義されます。
|
次のサンプルでは、XMLスキーマのユーザー定義データ型のOracle Tuxedoプログラムでデータを作成する方法を示します。
表2-8
XMLスキーマのユーザー定義型のサンプル - プリミティブで単純な型から派生したxsd:simpleType
|
|
<xsd:element name=���Grade��� type=���Alphabet��� /> <xsd:simpleType name=���Alphabet���> <xsd:restriction base=���xsd:string���> <xsd:maxLength value=���1��� /> <xsd:pattern value=���[A-Z]��� /> </xsd:restriction> </xsd:simpleType>
|
対応するFML32フィールド定義(FLD_STRING)
|
|
# Field_name Field_type Field_flag Field_comments Grade string -
|
|
|
char grade[2];
FBFR32 * request; ... grade[0] = ���A���; grade[1] = ���\0���; Fadd32( request, Grade, (char *)grade, 0);
|
表2-9
XMLスキーマのユーザー定義型のサンプル - xsd:listで定義されたxsd:simpleType
XMLスキーマ定義(ターゲット・ネームスペース"urn:sample.org")
|
|
<xsd:element name=���Users��� type=���namelist��� /> <xsd:simpleType name=���namelist���> <xsd:list itemType=��� xsd:NMTOKEN���> </xsd:simpleType>
|
対応するFML32フィールド定義(FLD_MBSTRING)
|
|
# Field_name Field_type Field_flag Field_comments Users mbstring -
|
|
|
char * user[5]; char users[...];
char * mbpacked; FLDLEN32 mbsize = 1024; FBFR32 * request; ... sprintf(users, ���<n1:Users xmlns:n1=\���urn:sample.org\���>���); for ( i = 0 ; i < 5 ; i++ ) { strcat(users, user[i]); strcat(users, ��� ���); } strcat(users, ���</n1:Users>���);
... mbpacked = malloc(mbsize); /* prepare mbstring*/ Fmbpack32(���utf-8���, users, strlen(users), mbpacked, &mbsize, 0); Fadd32( request, Users, mbpacked, mbsize);
|
注意:
|
表2-10に示すように、外部Webサービスの呼出しにおいて、属性は "<xs:attribute name="[name]" type="[type]"/>"の形式を使用した場合にのみサポートされます。 "fixed="などの修飾子は現在サポートされていません。
|
|
|
<xs:element name="param0" nillable="true" type="xs:int"/>
<xs:element name="param1" nillable="true" type="xs:int"/>
<xs:attribute name="aType" type="xs:string"/>
|
|
|
#name rel-number type flags comment
#---- ---------- ---- ------ -------
add 1 fml32 - fullname=add, schema=axis2:add
aType 3 string - fullname=aType, schema=xs:string
param0 4 long - fullname=param0, schema=xs:int
param1 5 long - fullname=param1, schema=xs:int
|
|
|
paramschema=XSD_E:add@http://calc.sample
paramschema=XSD_E:param0@http://calc.sample
paramschema=XSD_E:param1@http://calc.sample
paramschema=XSD_E:attribute:aType@http://calc.sample
|
|
|
long inputnum1, inputnum2;
Fadd32(fin, aType, addType, 0);
inputnum1 = atoi(argv[2]);
Fadd32(fin, param0, (char *)&inputnum1, 0);
inputnum1 = atoi(argv[2]);
Fadd32(fin, param0, (char *)&inputnum1, 0);
Fadd32(f, add, (char *)fin, 0)
tpcall("add", (char *)f, 0, (char **)&f, &len, TPSIGRSTRT)
|
常に、Oracle Tuxedo
FML32バッファ・タイプがWSDLメッセージのマッピングに使用されます。
表2-11に、SALTによって定義されたWSDLメッセージのマッピング・ルールの一覧を示します。
表2-11
WSDLメッセージのマッピング・ルール
|
Oracle Tuxedoのバッファ/フィールド定義
|
|
|
Oracle Tuxedo Request Buffer (Input buffer)
|
|
|
TPSUCCESSとのOracle Tuxedoレスポンス・バッファ(出力バッファ)
|
|
|
TPFAILとのOracle Tuxedoレスポンス・バッファ(エラー・バッファ)
|
|
<wsdl:input>または<wsdl:output>で定義されている各メッセージ部分
|
Oracle Tuxedo FML32バッファで最上位フィールドとしてマップされます。フィールド型はXMLデータ型のメッセージ部の FML32フィールド型と同等です。( 表2-3および 表2-7を参照)
|
|
SOAP 1.1フォルト・メッセージの<faultcode>
|
Oracle Tuxedoエラー・バッファで固定の最上位FLD_STRINGフィールド( faultcode)としてマップされます。
|
このマッピング・ルールはSOAP 1.1にのみ適用する。
|
SOAP 1.1フォルト・メッセージの<faultstring>
|
Oracle Tuxedoエラー・バッファで固定の最上位FLD_STRINGフィールド( faultstring)としてマップされます。
|
このマッピング・ルールはSOAP 1.1にのみ適用する。
|
SOAP 1.1フォルト・メッセージの<faultactor>
|
Oracle Tuxedoエラー・バッファで固定の最上位FLD_STRINGフィールド( faultactor)としてマップされます。
|
このマッピング・ルールはSOAP 1.1にのみ適用する。
|
SOAP 1.2フォルト・メッセージの<Code>
|
Oracle Tuxedoエラー・バッファで、2つの固定のサブFLD_STRINGフィールド( Valueおよび Subcode)を含む固定の最上位 FLD_FML32フィールド( Code)としてマップされます。
Code fml32 - - Value string - - Subcode string - -
|
このマッピング・ルールはSOAP 1.2にのみ適用する。
|
SOAP 1.2フォルト・メッセージの<Reason>
|
Oracle Tuxedoエラー・バッファで、ゼロまたは複数の固定のサブFLD_STRINGフィールド( Text)を含む固定の最上位 FLD_FML32フィールド( Reason)としてマップされます。
Reason fml32 - - Text string - -
|
このマッピング・ルールはSOAP 1.2にのみ適用する。
|
SOAP 1.2フォルト・メッセージの<Node>
|
Oracle Tuxedoエラー・バッファで固定の最上位FLD_STRINGフィールド( Node)としてマップされます。
|
このマッピング・ルールはSOAP 1.2にのみ適用する。
|
SOAP 1.2フォルト・メッセージの<Role>
|
Oracle Tuxedoエラー・バッファで固定の最上位FLD_STRINGフィールド( Role)としてマップされます。
|
このマッピング・ルールはSOAP 1.2にのみ適用する。
|
|
Oracle Tuxedoエラー・バッファで固定の最上位FLD_FML32フィールドとしてマップされます。
|
このマッピング・ルールはSOAP 1.1およびSOAP 1.2の両方に適用する。
|
<wsdl:fault>で定義されている各メッセージ部分
|
Oracle Tuxedo FML32バッファでdetailフィールドのサブ・フィールドとしてマップされます。フィールド型はXMLデータ型のメッセージ部の FML32フィールド型と同等です。( 表2-3および 表2-7を参照)
|
このマッピング・ルールはSOAP 1.1およびSOAP 1.2の両方に適用する。
|
注意:
|
GETまたは DELETEを使用して、RESTfulサービスとして公開されているOracle Tuxedoサービスの入力として VIEW32バッファを使用しており、 VIEW32に MBSTRING型が含まれている場合、一部のコンテンツについては、問合せの呼出し文字列をデフォルトではなく MBSTRING型のフィールドとして指定する必要があります。
|
そのようにしないと、呼出しの結果はHTTP 500エラーになり、
TPEINVALが返され、次の
ULOGメッセージが表示されます。
181356.hostname!server.5535.451673280.0: GP_CAT:1582: ERROR: Input codeset encoding argument not defined
GETおよび
DELETEメソッドの場合、入力データはHTTP問合せ文字列として渡されます。
問合せ文字列として渡されたデータは、次のような問合せ文字列表示の制約に従ってマップされます。
•
|
該当する場合はkeyword=valueのモデルシンプル・バッファ・タイプの場合、実際のデータは直接渡されます( http://host:1234/myTOUPPER?inputstringなど)。
|
•
|
一部の文字(空白など)にはエンコーディングが必要です。
|
•
|
データ量に制約があります。GWWSにはありせんが、ブラウザまたはツールキットによる制約を受ける場合があります。
|
Oracle Tuxedoでサポートされる様々なタイプのバッファのマッピングは、次の説明のようになります。
|
|
|
|
http://host:port/service?data
|
そのままのデータ、URLがエンコードされている場合はGWWSがデコードを行います。
|
|
http://host:port/service?data
|
base64エンコードされた文字列として表されるデータ。
|
|
http://host:port/service?data
|
Oracle Tuxedo MBSTRINGの UTF-8表現でエンコードされたURLとして表されるデータ
|
|
http://host:port/service?data
|
XMLフラグメントはそのまま、URLはエンコードされます。
|
|
|
|
|
|
|
|
|
|
|
http://host:port/service?value1&value2またはhttp://host:port/service?fieldname1=value1&fieldname2=value2
|
実際の値は、URLエンコードされた文字列表現からそれらのネイティブ・タイプに変換されます。
GWWSは、ターゲット・タイプに応じて、値を対応する VIEW/VIEW32メンバーに変換しようとします(文字列表現からOracle Tuxedo表現の数値)。
•
|
floatおよびdoubleのVIEW/VIEW32タイプのfloat表記
|
•
|
intの整数表記、longおよびその他の整数ベースのタイプ
|
FLD_CHARフィールドは、URLエンコードされたコンテンツから変換されます(表現可能な文字、またはその他のすべてのタイプについては %xx表現文字列)。
次のものには、 fieldname=valueの表記を使用します。
•
|
ビュー記述で構成されている場合は、FBNAMEフィールド名。
|
•
|
ビュー記述にFBNAMEがない場合のCNAME値。
|
FBNAMEと CNAMEのどちらもこのサブタイプと一致しない場合は、マッピング・エラーが返されます。
|
|
http://host:port/service?fieldname1=value1&fieldname2=value2
http://host:port/service?fieldname1=value1&fieldname1=value2
|
実際の値は、URLエンコードされた文字列表現からそれらのネイティブ・タイプに変換されます。
GWWSは、ターゲット・タイプに応じて、値を対応する VIEWFML/VIEWFML32メンバーに変換しようとします(文字列表現からOracle Tuxedo表現の数値)。
•
|
floatおよびdoubleの VIEWFML/VIEWFML32タイプの浮動表記
|
•
|
intの整数表記、 longおよびその他の整数ベースのタイプ
|
•
|
FLD_CHARフィールドは、URLエンコードされたコンテンツから変換されます(表現可能な文字、またはその %xx表現)。
|
|
|
http://host:port/service?value1&value2またはhttp://host:port/service?fieldname1=value1&fieldname2=value2
|
実際の値は、URLエンコードされた文字列表現からそれらのネイティブ・タイプに変換されます。
GWWSは、ターゲット型に応じて、値を対応する RECORDバッファ・メンバーに変換しようとします。
|
様々なOracle Tuxedoバッファ型とJSONとの間の変換は、
表2-13のように行われます。
|
|
|
|
|
|
|
|
|
|
|
UTF-8以外のエンコーディングを転送するには、SALTDEPLOY構成の enableMultiEncodingプロパティをtrueに設定する必要があります。
|
|
|
UTF-8以外のエンコーディングを転送するには、SALTDEPLOY構成のenableMultiEncodingプロパティを trueに設定する必要があります。
|
|
|
|
|
|
|
|
|
|
|
{' <fieldname>':'<fieldcontent>', '<fieldname>':'<fieldcontent>'}
{ '<fieldname>':{'<fieldname>':'<fieldcontent>'}}
•
|
Number (intまたはdouble float)
|
VIEW/VIEW32フィールド・タイプは次のようにマップされます(Oracle Tuxedoタイプ: JSONタイプ)。
|
フィールド名マッピングの詳細は、 VIEW/VIEW32の考慮事項と例を参照してください。
一部のタイプは、プリミティブ型( long long、 long double)で表現される場合は切り捨てられます。その場合、それらはJSON文字列としてレンダリングされます。
|
|
•
|
carray: String (base64エンコード)
|
•
|
wchar_t*または wchar_t: String
|
•
|
long long: String (表の下の注意を参照)
|
•
|
unsigned long long: String (注意を参照)
|
•
|
long double: String (表の下の注意を参照)
|
|
|
|
{' <fieldname>':'<fieldcontent>', '<fieldname>':'<fieldcontent>'}
{' <fieldname>':{'<fieldname>':'<fieldcontent>'}}
FML/FML32フィールド・タイプは次のようにマップされます(Oracle Tuxedoタイプ: JSONタイプ)。
•
|
FLD_CHAR: StringまたはJSON trueの文字TまたはJSON falseのF
|
•
|
FLD_CARRRAY: String (base64エンコード)
|
•
|
FLD_VIEW32: JSONネスト・レコード、個々のタイプについては、 VIEW/VIEW32マッピングを参照
|
|
ネスト FLD_VIEW32: ビュー・サブタイプの名前は組込み VIEW32の名前である必要があります。次に例を示します。
JSONコンテンツ( EVIEW32は FLD_VIEW32 fml32タイプです):
|
|
{'<fieldname>':'<fieldcontent>', '<fieldname>':'<fieldcontent>'}
{'<fieldname>':{'<fieldname>':'<fieldcontent>'}}
生成されるCOBOLフィールド型は次のようにマップされます(Tuxedo型: JSON型)。
•
|
S9(10)V9(10)COMP-3L: Number
|
|
|
注意:
|
非構造化バッファ・タイプ( STRING、 CARRAY、 X_OCTET、 MBSTRING)はデータをJSONオブジェクトとしてラップしません。データはそのまま転送されます。
|
JSONでは、すべての浮動小数点型はXMLとは異なり内部的に処理されます。XMLでの浮動小数点の変換では、JSONの類似の変換に比べて精度が多少失われます。これは現時点での制約です。
Oracle Tuxedo
VIEW/VIEW32バッファとXMLとの変換に関しては、次の点を考慮する必要があります。
•
|
XMLと VIEW/VIEW32との変換するための環境を用意する必要があります。これには、 VIEWディレクトリおよびシステム VIEW定義ファイルの設定が含まれます。GWWSサーバーはこれらの定義を自動的にロードします。
|
Oracle Tuxedo
FML/FML32バッファとXMLとの変換に関しては、次の点を考慮する必要があります。
•
|
XMLと FML/FML32を相互に変換するための環境を用意する必要があります。これには、FMLフィールド表ファイルのディレクトリおよびシステムFMLフィールド定義ファイルの設定が含まれます。GWWSはこれらの定義を自動的にロードします。FML型付きバッファは、環境が正しく設定されている場合に限って処理できます。
|
注意:
|
FML32フィールド型 FLD_PTRはサポートされていません。
|
XMLデータ・マッピングは、SOAPモードで使用されるマッピングと類似のルールを使用して実行されます。
•
|
10進値を持たない浮動小数点数値は、整数として表現されます。たとえば、10.0は10と出力されます。これは現時点での制約です。
|
•
|
RESTモードにはインタフェースがないため、ネームスペースは生成または処理されません。
|
•
|
シンプル・バッファ( STRING、 CARRAY、 MBSTRING、 XML)は、XML処理なしにそのまま送受信されます。動作はJSON処理と同じです(つまり、マッピングは必要ありません)。
|
•
|
FMLおよび FML32のリクエストは、ルート要素(XMLが適切に構成されていないかぎり、名前は無視されます)によってラップされ、応答は、SALTDEPLOY構成ファイルの REST/Service/Method/@inputbuffer属性で指定されるサブタイプと同じ名前の要素または <root>要素(サブタイプが構成されていない場合)にラップされます。 VIEW、 VIEW32、 X_COMMONおよび X_C_TYPEバッファはサブタイプ名をルート要素名として使用します。
|
様々なOracle Tuxedoバッファ型とXMLとの間の変換は、
表2-14のように行われます。
|
|
|
|
Oracle Tuxedo STRING型付きバッファは、 NULL文字で終端された文字列を格納する場合に使用します。Oracle Tuxedo STRING型付きバッファは自己記述型バッファです。
|
|
|
Oracle Tuxedo CARRAY型付きバッファには文字配列が格納されます(配列内には任意の位置に NULLを含んでよい)。 CARRAYバッファはデータをオペークなものとして扱うバッファで、自己記述型ではありません。
|
|
|
Oracle Tuxedo MBSTRING型付きバッファは、マルチバイト文字配列のために使用します。Oracle Tuxedo MBSTRINGバッファは次の3つの要素により構成されます。
UTF-8以外のエンコーディングを転送するには、SALTDEPLOY構成の enableMultiEncodingプロパティを trueに設定する必要があります。
|
Content-Type設定に基づいてエンコードされたマルチバイト文字列。
|
|
Oracle Tuxedo XML型付きバッファにはXMLドキュメントが格納されます。
GWWSサーバーでは、実際のXMLデータが整形式かどうかについてのみ検証が行われる。それ以外の事項(スキーマ検証など)の適用については確認されない。
ペイロードには、単一ルートの XMLバッファのみを格納できます。この点はGWWSサーバーによりチェックされます。
元のXMLドキュメントに含まれるプロローグ情報は、ペイロードに含めて伝送することはできません。
UTF-8以外のエンコーディングを転送するには、SALTDEPLOY構成の enableMultiEncodingプロパティを trueに設定する必要があります。
|
|
|
|
|
|
|
|
|
|
|
|
Oracle Tuxedo VIEWおよび VIEW32型付きバッファには、Oracle Tuxedoアプリケーションで定義されたC構造が格納されます。
VIEW構造は、 VIEW定義ファイルを使用して定義されます。VIEWバッファ・タイプは複数のフィールドを定義できます。
VIEWでは次のフィールド型がサポートされています。
•
|
carray (base64でエンコードされたコンテンツとして表現)
|
VIEW32では、すべての VIEWフィールド型、 mbstringおよび埋込み VIEW32型がサポートされています。
サブ要素の名前は VIEWフィールド名と同じです。サブ要素の出現回数は、 VIEWフィールド定義のcount属性によって異なります。サブ要素の値は、XMLスキーマの型に対応する VIEWフィールド・データ型である必要があります。
|
|
|
Oracle Tuxedo FMLおよび FML32タイプ・バッファは、Oracle Tuxedoシステムに特有の自己記述型バッファです。データ・フィールドごとに個別の識別子、出現回数、および必要に応じて長さを示す情報を保持します。
FMLでは次のフィールド型がサポートされています。
•
|
FLD_CARRAY (base64エンコードされたコンテンツとして)
|
FML32では、すべての FMLフィールド型と FLD_PTR、 FLD_MBSTRING、 FLD_FML32、 FLD_VIEW32がサポートされています。
|
ネスト FLD_VIEW32: ビュー・サブタイプの名前は組込みVIEW32の名前である必要があります。次に例を示します。
XMLコンテンツ(EVIEW32は FLD_VIEW32 fml32タイプです):
|
|
RECORDバッファ・タイプは、コピーブック・レコードを表します。 RECORD型には、個々のレコード構造体を示すサブタイプが必要です。
|
<myRecord> <name>aaa</name> <num>1000</num> <subgroup> <long1> 3000 </long1> <string1> www </string1> </subgroup> </myRecord>
|
注意:
|
非構造化バッファ・タイプ( STRING、 CARRAY、 X_OCTET、 MBSTRING)はデータをXMLオブジェクトとしてラップしません。データはそのまま転送されます。
|
Oracle Tuxedo
VIEW/VIEW32バッファとXMLとの変換に関しては、次の点を考慮する必要があります。
•
|
XMLと VIEW/VIEW32との変換するための環境を用意する必要があります。これには、 VIEWディレクトリおよびシステム VIEW定義ファイルの設定が含まれます。GWWSサーバーはこれらの定義を自動的にロードします。
|
Oracle Tuxedo
FML/FML32バッファとXMLとの変換に関しては、次の点を考慮する必要があります。
•
|
XMLと FML/FML32を相互に変換するための環境を用意する必要があります。これには、 FMLフィールド表ファイルのディレクトリおよびシステム FMLフィールド定義ファイルの設定が含まれます。GWWSはこれらの定義を自動的にロードします。 FML型付きバッファは、環境が正しく設定されている場合にのみ処理できます。
|
注意:
|
FML32フィールド型 FLD_PTRはサポートされていません。
|
注意:
|
このモードでは、組込み FML32および VIEW32フィールドを使用しようとすると、 TPEPROTOエラーが発生します。
|
GETおよび
DELETEメソッドの場合、リクエスト・データはHTTP問合せ文字列として渡されます。例: http://host:1234/banking?account=1234
問合せ文字列として渡されたデータは、次のような問合せ文字列表示の制約に従ってマップされます。
•
|
該当する場合はkeyword=valueのモデルシンプル・バッファ・タイプの場合、実際のデータは直接渡されます(http://host:1234/svc?inputstringなど)。
|
•
|
一部の文字(空白など)にはエンコーディングが必要です。
|
•
|
データ量に制約があります。GWWSにはありせんが、ブラウザまたはツールキットによる制約を受ける場合があります。
|
Oracle Tuxedoでサポートされる様々な型のバッファのマッピングは、
表2-15の説明のようになります。
|
|
|
|
http://host:port/path?data
|
そのままのデータ、URLがエンコードされている場合はGWWSがエンコードを行います。
|
|
http://host:port/path?data
|
base64エンコードされた文字列として表されるデータ。
|
|
http://host:port/path?data
|
Tuxedo MBSTRINGの UTF-8表現でエンコードされたURLとして表されるデータ
|
|
http://host:port/path?data
|
XMLフラグメントはそのまま、URLはエンコードされます。
|
|
|
|
|
|
|
|
|
|
|
http://host:port/path?value1&value2 or http://host:port/service?fieldname1=value1&fieldname2=value2
|
GWWSは、ターゲット・タイプに応じて、値を対応する VIEW/VIEW32メンバーに変換しようとします(文字列表現からOracle Tuxedo表現の数値)。
•
|
floatおよびdoubleの VIEW/VIEW32タイプの浮動表記
|
•
|
intの整数表記、 longおよびその他の整数ベースのタイプ
|
•
|
FLD_CHARフィールドは、URLエンコードされたコンテンツから変換されます(表現可能な文字、またはその %xx表現)。
|
次のものには、 fieldname=valueの表記を使用します。
•
|
ビュー記述で構成されている場合は、FBNAMEフィールド名。
|
•
|
ビュー記述にFBNAMEがない場合のCNAME値。
|
•
|
FBNAMEと CNAMEのどちらもこのサブタイプと一致しない場合は、マッピング・エラーが返されます。
|
|
|
http://host:port/path?fieldname1=value1&fieldname2=value2
http://host:port/service?fieldname1=value1&fieldname1=value2
|
実際の値は、URLエンコードされた文字列表現からそれらのネイティブ・タイプに変換されます。
GWWSは、ターゲット・タイプに応じて、値を対応する FML/FML32メンバーに変換しようとします(文字列表現からTuxedo表現の数値)。
•
|
floatおよびdoubleの FML/FML32タイプの浮動表記
|
•
|
intの整数表記、 longおよびその他の整数ベースのタイプ
|
•
|
FLD_CHARフィールドは、URLエンコードされたコンテンツから変換されます(表現可能な文字、またはその %xx表現)。
|
|
|
http://host:port/path?value1&value2または
http://host:port/service?fieldname1=value1&fieldname2=value2
|
GWWSは、ターゲット型に応じて、値を対応する RECORDメンバーに変換しようとします。
|
様々なTuxedoバッファ型とJSONとの間の変換は、
表2-16のように行われます。
|
|
|
|
|
|
|
|
|
|
|
UTF-8以外のエンコーディングを転送するには、SALTDEPLOY構成の enableMultiEncodingプロパティをtrueに設定する必要があります。
|
|
|
UTF-8以外のエンコーディングを転送するには、SALTDEPLOY構成の enableMultiEncodingプロパティをtrueに設定する必要があります。
|
|
|
|
|
|
|
|
|
|
|
{ '<fieldname>':'<fieldcontent>', '<fieldname>':'<fieldcontent>'}
{ '<fieldname>':{'<fieldname>':'<fieldcontent>'}}
Number (intまたはdouble float)
VIEW/VIEW32フィールド・タイプは次のようにマップされます(Tuxedoタイプ: JSONタイプ)。
•
|
carray: String (base64エンコード)
|
•
|
wchar_t*または wchar_t: String
|
|
|
|
•
|
long double: String (注意を参照)
|
|
フィールド名マッピングの詳細は、 VIEW/VIEW32の考慮事項と例を参照してください。
一部のタイプは、プリミティブ型( long long、 long double)で表現される場合は切り捨てられます。その場合、それらはJSON文字列としてレンダリングされます。
|
|
{ '<fieldname>':'<fieldcontent>', '<fieldname>':'<fieldcontent>'}
{ '<fieldname>':{'<fieldname>':'<fieldcontent>'}}
FML/FML32フィールド・タイプは次のようにマップされます(Tuxedoタイプ: JSONタイプ)。
•
|
FLD_CHAR: StringまたはJSON trueの文字TまたはJSON falseのF
|
•
|
FLD_CARRRAY: String (base64エンコード)
|
•
|
FLD_VIEW32: JSONネスト・レコード、個々のタイプについては、VIEW/VIEW32マッピングを参照
|
|
ネスト FLD_VIEW32: ビュー・サブタイプの名前は組込み VIEW32の名前である必要があります。次に例を示します。
JSONコンテンツ(EVIEW32はFLD_VIEW32 fml32タイプです):
|
|
{'<fieldname>':'<fieldcontent>', '<fieldname>':'<fieldcontent>'}
{'<fieldname>':{'<fieldname>':'<fieldcontent>'}}
RECORDバッファ・フィールド型は次のようにマップされます(Tuxedo型: JSON型)。
•
|
S9(10)V9(10)COMP-3L: Number
|
|
|
注意:
|
非構造化バッファ・タイプ( STRING、 CARRAY、 X_OCTET、 MBSTRING)はデータをJSONオブジェクトとしてラップしません。データはそのまま転送されます。データのマッピングに関するバッファ・タイプのcontent-type設定は無視されます。
|
JSONでは、すべての浮動小数点型はXMLとは異なり内部的に処理されます。XMLでの浮動小数点の変換では、JSONの類似の変換に比べて精度が多少失われます。これは現時点での制約です。
Oracle Tuxedo
VIEW/VIEW32バッファとXMLとの変換に関しては、次の点を考慮する必要があります。
•
|
XMLと VIEW/VIEW32との変換するための環境を用意する必要があります。これには、 VIEWディレクトリおよびシステム VIEW定義ファイルの設定が含まれます。GWWSサーバーはこれらの定義を自動的にロードします。
|
Oracle Tuxedo
FML/FML32バッファとXMLとの変換に関しては、次の点を考慮する必要があります。
•
|
XMLと FML/FML32を相互に変換するための環境を用意する必要があります。これには、FMLフィールド表ファイルのディレクトリおよびシステムFMLフィールド定義ファイルの設定が含まれます。GWWSはこれらの定義を自動的にロードします。 FML型付きバッファは、環境が正しく設定されている場合にのみ処理できます。
|
注意:
|
FML32フィールド型 FLD_PTRはサポートされていません。
|
#TYPE CNAME FBNAME COUNT FLAG SIZE NULL
char fname EMP_FNAME 1 - 25 -
char minit EMP_MINIT 1 - 1 -
char lname EMP LNAME 1 - 25 -
struct empname ename 1 - - -
unsignedlong id EMP_ID 1 - - -
double salaryhist EMP_SAL 10 - - -
FBNAME (ビュー・ファイルに指定された名前)がない場合、コンテンツは
CNAME値を使用して表現されます。フィールド名もまたネストされたビューのサブタイプ名であるため、フィールド名なしにネストを記述することはできません。1レベルの構造のみが表現されます。
#TYPE CNAME FBNAME COUNT FLAG SIZE NULL
#name rel-number type flags comment
"ORDERDATE":"11/03/2012",
"ORDERDATE":"11/06/2012",
05 name occurs 1 times PIC X(10).
05 num occurs 1 times PIC S9(9) COMP-5.
05 subgroup occurs 1 times.
10 long1 PIC S9(9) COMP-5.
XMLデータ・マッピングは、SOAPモードで使用されるマッピングと類似のルールを使用して実行されます。
•
|
10進値を持たない浮動小数点数値は、整数として表現されます。たとえば、10.0は10と出力されます。これは現時点での制約です。
|
•
|
HTTPモードにはインタフェースがないため、ネームスペースは生成または処理されません。
|
•
|
シンプル・バッファ( STRING、 CARRAY、 MBSTRING、XML)は、XML処理なしにそのまま送受信されます。動作はJSON処理と同じです(つまり、マッピングは必要ありません)。
|
•
|
FMLおよび FML32のリクエストは、ルート要素(XMLが適切に構成されていないかぎり、名前は無視されます)によってラップされる必要があります。また、応答は、 SALTDEPLOY構成ファイルの HTTP/Service/@outputbuffer属性で指定されるサブタイプと同じ名前の要素または <root>要素(サブタイプが構成されていない場合)にラップされます。 VIEW、VIEW32、 X_COMMONおよび X_C_TYPEバッファはサブタイプ名をルート要素名として使用します。
|
様々なOracle Tuxedoバッファ型とXMLとの間の変換は、
表2-17のように行われます
|
|
|
|
Oracle Tuxedo STRING型付きバッファは、 NULL文字で終端された文字列を格納する場合に使用します。Oracle Tuxedo STRING型付きバッファは自己記述型バッファです。
|
|
|
Oracle Tuxedo CARRAY型付きバッファには文字配列が格納されます(配列内には任意の位置に NULLを含んでよい)。 CARRAYバッファはデータをオペークなものとして扱うバッファで、自己記述型ではありません。
|
|
|
Oracle Tuxedo MBSTRING型付きバッファは、マルチバイト文字配列のために使用します。Oracle Tuxedo MBSTRINGバッファは次の3つの要素により構成されます。
UTF-8以外のエンコーディングを転送するには、SALTDEPLOY構成の enableMultiEncodingプロパティを trueに設定する必要があります。
|
Content-Type設定に基づいてエンコードされたマルチバイト文字列。
|
|
Oracle Tuxedo XML型付きバッファにはXMLドキュメントが格納されます。
GWWSサーバーでは、実際のXMLデータが整形式かどうかについてのみ検証が行われる。それ以外の事項(スキーマ検証など)の適用については確認されない。
ペイロードには、単一ルートの XMLバッファのみを格納できます。この点はGWWSサーバーによりチェックされます。
元のXMLドキュメントに含まれるプロローグ情報は、ペイロードに含めて伝送することはできません。
UTF-8以外のエンコーディングを転送するには、SALTDEPLOY構成の enableMultiEncodingプロパティを trueに設定する必要があります。
|
|
|
|
|
|
|
|
|
|
|
|
Oracle Tuxedo VIEWおよび VIEW32型付きバッファには、Oracle Tuxedoアプリケーションで定義されたC構造が格納されます。
VIEW構造は、 VIEW定義ファイルを使用して定義されます。 VIEWバッファ・タイプは複数のフィールドを定義できます。
VIEWでは次のフィールド型がサポートされている。
•
|
carray (base64でエンコードされたコンテンツとして表現)
|
|
|
|
VIEW32では、すべての VIEWフィールド型、 mbstringおよび埋込み VIEW32型がサポートされています。
サブ要素の名前は VIEWフィールド名と同じです。サブ要素の出現回数は、 VIEWフィールド定義のcount属性によって異なります。サブ要素の値は、XMLスキーマの型に対応する VIEWフィールド・データ型である必要があります。
|
|
|
Oracle Tuxedo FMLおよび FML32タイプ・バッファは、Oracle Tuxedoシステムに特有の自己記述型バッファです。データ・フィールドごとに個別の識別子、出現回数、および必要に応じて長さを示す情報を保持します。
•
|
FLD_CARRAY (base64エンコードされたコンテンツとして)
|
FML32では、すべてのFMLフィールド型と FLD_PTR、 FLD_MBSTRING、 FLD_FML32、 FLD_VIEW32がサポートされています。
|
ネスト FLD_VIEW32: ビュー・サブタイプの名前は組込み VIEW32の名前である必要があります。次に例を示します。
XMLコンテンツ(EVIEW32はFLD_VIEW32 fml32タイプです):
|
|
RECORDバッファ・タイプは、コピーブック・レコードを表します。 RECORD型には、個々のレコード構造体を示すサブタイプが必要です。
|
<myRecord> <name>aaa</name> <num>1000</num> <subgroup> <long1> 3000 </long1> <string1> www </string1> </subgroup> </myRecord>
|
注意:
|
非構造化バッファ・タイプ( STRING、 CARRAY、 X_OCTET、 MBSTRING)はデータをXMLオブジェクトとしてラップしません。データはそのまま転送されます。
|
Oracle Tuxedo
VIEW/VIEW32バッファとXMLとの変換に関しては、次の点を考慮する必要があります。
•
|
XMLと VIEW/VIEW32との変換するための環境を用意する必要があります。これには、 VIEWディレクトリおよびシステム VIEW定義ファイルの設定が含まれます。GWWSサーバーはこれらの定義を自動的にロードします。
|
Oracle Tuxedo
FML/FML32バッファとXMLとの変換に関しては、次の点を考慮する必要があります。
•
|
XMLと FML/FML32を相互に変換するための環境を用意する必要があります。これには、FMLフィールド表ファイルのディレクトリおよびシステムFMLフィールド定義ファイルの設定が含まれます。GWWSはこれらの定義を自動的にロードします。 FML型付きバッファは、環境が正しく設定されている場合にのみ処理できます。
|
注意:
|
FML32フィールド型 FLD_PTRはサポートされていません
|