Skip to main content
Summary My Orbix client can talk to a JacORB CORBA server. What changes should I do to make it work?
Article Number 13249
Environment All Supported Operating Systems Orbix 6.x
Question/Problem Description My Orbix client can talk to a JacORB CORBA server. What changes should I do to make it work?

My Orbix6 client is getting the error: org.omg.CORBA.INV_OBJREF: no iop::TAG_CODE_SETS component in profile.
Clarifying Information
Error Message
Defect/Enhancement Number
Cause
Resolution Orbix 6.x has the capability to negotiate the IIOP codeset with other ORB during the connection establishment phase. However, not all ORB products do. For Example, JacORB specifies a fixed Codeset to be used.
Since Orbix tries to negotiate the IIOP codeset first, before trying the default Orbix codeset, it will fail talking to ORB that does not support Codset negotiation.
To be able to communicates properly with such ORBs
  1. Obtain the IOR reference to these third part ORB objects.
  2. Analyse it with "iordump", in order to figure out what Codset this ORB accepts.
  3. Disable codeset negotioation from Orbix client side, and set the codsets to be used to match the server accepted codsets.
For example, if the iordump of a third part ORB produces the following:

>> 0 [00]
        Byte order of IOR: (0) Big Endian
>> 1 [00][00][00]
        (padding)
>> 4 [00][00][00][2b]
        TypeId length: 43 bytes (including null)
>> 8 [49][44][4c][3a][6f][6d][67][2e][6f][72][67][2f][43][6f][73][4e][61][6d][69][6e][67][2f][4e][61][6d][69][6e][67][43][6f][6e][74][6
[78][74][3a][31][2e][30][00]
        TypeId value: 'IDL:omg.org/CosNaming/NamingContextExt:1.0.'
>> 51 [00]
        (padding)
>> 52 [00][00][00][01]
        Number of tagged profiles: 1

        Profile 1:
>> 56 [00][00][00][00]
                Tag: (0) TAG_INTERNET_IOP
>> 60 [00][00][00][70]
                Profile length: 112 bytes
>> 64 [00]
                Byte Order: (0) Big Endian
>> 65 [01][02]
                Version: 1.2
>> 68 [00][00][00][08]
                Host length: 8 bytes (including null)
>> 72 [63][78][32][2d][61][70][70][00]
                Host string: 'cx2-app.'
                * host unknown; possibly unqualified (warning)
>> 80 [79][52]
                Port: 31058
>> 82 [00][00]
        (padding)
>> 84 [00][00][00][1f]
                Object Key length: 31 bytes (including any trailing null)
>> 88 [53][74][61][6e][64][61][72][64][4e][53][2f][4e][61][6d][65][53][65][72][76][65][72][2d][50][4f][41][2f][5f][72][6f][6f][74]
                Object key data: 'StandardNS/NameServer-POA/_root'
                * no null character at end (warning)
                (key format not recognised)
>> 119 [00]
        (padding)
>> 120 [00][00][00][02]
                Number of tagged components: 2

                Component 1:
>> 124 [00].[00][00][00]
                        Tag: (0) ORB_TYPE
>> 128 [00][00][00][08]
                        Component length: 8 bytes
>> 132 [00]
                        Component Byte Order: (0) Big Endian
>> 133 [00][00][00]
        (padding)
>> 136 [4a][41][43][00]
                        Vendor ID: 0x4a414300, vendor: unknown


                Component 2:
>> 140 [00][00][00][01]
                        Tag: (1) CODE_SETS
>> 144 [00][00][00][1c]
                        Component length: 28 bytes
>> 148 [00]
                        Component Byte Order: (0) Big Endian
>> 149 [00][00][00]
        (padding)
>> 152 [00][01][00][01]
                        Native CodeSet id (for char): 65537
                        (ISO 8859-1:1987; Latin Alphabet No. 1)
>> 156 [00][00][00][01]
                        Number of conversion code sets (CCS): 1
>> 160 [05][01][00][01]
                        CCS(1) CodeSet Id 83951617
                        (X/Open UTF-8; UCS Transformation Format 8 (UTF-8))
>> 164 [00][01][01][09]
                        Native CodeSet id (for wchar): 65801
                        (ISO/IEC 10646-1:1993; UTF-16, UCS Transformation Format 16-bit form)
>> 168 [00][00][00][01]
                        Number of conversion code sets (CCS): 1
>> 172 [05][01][00][01]
                        CCS(1) CodeSet Id 83951617
                        (X/Open UTF-8; UCS Transformation Format 8 (UTF-8))

It is clear that the onlu codsets supports are:

  •  ISO-8859-1 for ncs strings.
  •  UTF-8 for ccs strings.
  •  UTF-16 for ncs wide strings.
  •  UTF-8 for ccs wide strings.

So the right ORBIX configuration .[00][00][00]
                        Tag: (0) ORB_TYPE
>> 128 [00][00][00][08]
                        Component length: 8 bytes
>> 132 [00]
                        Component Byte Order: (0) Big Endian
>> 133 [00][00][00]
        (padding)
>> 136 [4a][41][43][00]
                        Vendor ID: 0x4a414300, vendor: unknown


                Component 2:
>> 140 [00][00][00][01]
                        Tag: (1) CODE_SETS
>> 144 [00][00][00][1c]
                        Component length: 28 bytes
>> 148 [00]
                        Component Byte Order: (0) Big Endian
>> 149 [00][00][00]
        (padding)
>> 152 [00][01][00][01]
                        Native CodeSet id (for char): 65537
                        (ISO 8859-1:1987; Latin Alphabet No. 1)
>> 156 [00][00][00][01]
                        Number of conversion code sets (CCS): 1
>> 160 [05][01][00][01]
                        CCS(1) CodeSet Id 83951617
                        (X/Open UTF-8; UCS Transformation Format 8 (UTF-8))
>> 164 [00][01][01][09]
                        Native CodeSet id (for wchar): 65801
                        (ISO/IEC 10646-1:1993; UTF-16, UCS Transformation Format 16-bit form)
>> 168 [00][00][00][01]
                        Number of conversion code sets (CCS): 1
>> 172 [05][01][00][01]
                        CCS(1) CodeSet Id 83951617
                        (X/Open UTF-8; UCS Transformation Format 8 (UTF-8))

It is clear that the onlu codsets supports are:

  •  ISO-8859-1 for ncs strings.
  •  UTF-8 for ccs strings.
  •  UTF-16 for ncs wide strings.
  •  UTF-8 for ccs wide strings.

So the right ORBIX configuration .that will work will be:

   # changing Codeset setting
    plugins:codeset:char:ncs = "0x00010001"; # ISO-8859-1
    plugins:codeset:char:ccs = ["0x05010001"]; UTF-8
    plubins:codeset:wchar:ncs = "0x00010109"; # UTF-16
    plugins:codeset:wchar:ccs = ["0x05010001"]; # UTF-8
   
    # Turning off codeset nogotiation
    policies:giop:interop_policy:negotiate_transmission_codeset = "false";


For more information about codesets and internationalization in Orbix, please consult our Internationalization Guide, found on the Orbix documentation page.

Orbix Internationalization Guide:
http://supportline.microfocus.com/Documentation/books/Orbix/635/internationalization guide.pdf
Workaround
Notes
Attachment
Created date: 06 September 2011
Last Modified: 23 August 2012
Last Published: 23 August 2012
First Published date: 09 September 2011

#KnowledgeDocs
#Orbix