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 NOVEMBER 04, 2016

Applies to:

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

Goal

DESCRIPTION:
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.

CONFIGURATION:
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

Solution

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