5.2.3.2.3 診断

この関数は、成功した場合に0を返す必要があります。

失敗した場合、次の例に示すように、この関数は-1を返す必要があります:

例5-6 SOAP XMLへのOracle Tuxedoカスタム型付きバッファ変換の疑似コード

int mybuffer2xml (void ** xercesDom, CustomerBuffer *a, CustType_Ext * extinfo)
{
       // Use DOM implementation to create the xml payload
       DOMTree = CreateDOMTree( );
       
       if ( error )
              return -1;

       // fetch data from custom typed buffer instance,
       // and add data to DOMTree according to the client side needed
       // XML format

       a->buf ==> DOMTree;

       // allocate xmlbuf buffer via malloc
* xmlbuf = malloc( expected_len(DOMTree) );
       if ( error ) {
              release ( DOMTree );
              return -1;
       }

       // casting the DOMDocument to void * pointer and returned
       DOMTree >> (* xmlbuf);
       if ( error ) {
              release ( DOMTree );
              free ( (* xmlbuf) );
              return -1;
       }

       return 0;
}

警告:

プラグイン関数内に作成したDOMDocumentをGWWSフレームワークでリリースする必要があります。再度リリースしないようにするには、次のXerces APIの使用に注意する必要があります。

DOMDocumentXercesDOMParser::parse() APIでXML文字列から作成する場合。DOMDocumentオブジェクトのポインタを取得するためにXercesDOMParser::adoptDocument()を使用する必要があります。DOMDocumentオブジェクトのポインタを取得するためにXercesDOMParser::getDocument()を使用しないでください。これは、DOMDocumentオブジェクトは、XercesDOMParserオブジェクトによって維持され、XercesDOMParser::getDocument()関数によってDOMDocumentXercesDOMParserから分離しない場合はXercesDOMParserオブジェクトを削除するときにリリースされるためです。