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