RP/TUX 8.1 - Tuxedo CORBA infrastructure with CORBA DII handles the output argument incorrectly with the user defined structures.

(Doc ID 778083.1)

Last updated on JANUARY 19, 2018

Applies to:

Oracle Tuxedo / Tuxedo / 8.1
Information in this document applies to any platform


Customer has the following server method:
::CORBA::Long FXOBicData_i::getBicData (const FXOQData & query, ::FXOQData_out data)

FXOQData is a dynamic class object which can have binary data. From a client, when invoke this method the input arg1
is passed successfully from client to server. However, cannot restore the arg2 as output from client.

From the dii_clnt.cpp around 134 line, it does not work. 
cout << "XXXX: newqdata::data: " << newqdata->OBB__GetData() << endl

If change to the following, it can get the data from server:
cout << "XXXX: newqdata::*data: " << *(char **)newqdata->OBB__GetData() << endl; 

It indicates that the DII handles the output argument incorrectly with the user defined structures. 
From the above statement, FXOQData._data (newqdata->OBB__GetData()) became double pointer, after invoke(). But,
"_data" in the class is actually defined as pointer to octet, not double pointer:
::CORBA::Octet *_data; 
For a text string terminated by '\0', may consider "*(char **)newqdata->OBB__GetData()" as a workaround.
However, it doesn't work for the real binary/unformatted data. Take the following test output as an example, 
XXXX: oqdata::length: 9
XXXX: oqdata::address: 1197176
XXXX: oqdata::data: Output String XYZ123456. 

The data length is wrong and the binary data cannot be extracted. It means that the whole structure for the output
argument is not updated correctly.

Tuxedo 8.1 RP 130
Sun Solaris 8 (OS 5.8)
C++ Compiler Sun Workshop 6 Update 2
Tuxedo CORBA infrastructure with CORBA objects/interfaces


Sign In with your My Oracle Support account

Don't have a My Oracle Support account? Click to get started

My Oracle Support provides customers with access to over a
Million Knowledge Articles and hundreds of Community platforms