Skip to main content
Summary What do the Orbix minor codes mean?
Article Number 12947
Environment All Supported Operating Systems
Question/Problem Description What do the Orbix minor codes mean?
Clarifying Information The CORBA specification defines a set of standard exceptions which can be returned as a result of any operation invocation.

All standard exceptions have an associated minor code which provides finer grained information pertaining to the exception in question. These minor codes relieve the ORB from defining an exhaustive list of all possible exceptions that may arise in a runtime environment.
Error Message
Defect/Enhancement Number
Cause
Resolution Minor exception codes are defined as an unsigned long and are comprised of:

  - A 20-bit Vendor Minor Code-set ID (VMCID)
  - A minor code, which occupies the 12 low order bits

Each ORB vendor has a unique VMCID assigned by the OMG (Object Managemnent Group). The VMCID assigned to the original company behind Orbix (IONA Technologies) is "0x49540000", meaning this space is reserved for use by IONA exception minor codes.

The minor code value for any exception (as found in the ex_body) is obtained by bit-wise OR of the VMCID with the minor code for the exception in question. (Note: The details of minor codes and their associated values should be transparent to the user).

Orbix associates minor codes with readable strings, which protect the user from having to interpret minor codes.

Orbix defines minor codes within each of its subsystems. When an exception is thrown, the subsystem in question associates a valid minor code, which maps to a unique error condition within that module. The following table lists the subsystems defined and the base values for the minor codes they define.

The Orbix subsystem Base Minor Code ID are

 Core              0x49540100
 GIOP              0x49540200
 IIOP              0x49540300
 IIOP_PROFILE      0x49540400
 POA               0x49540500
 PSS/DB            0x49540600
 PSS               0x49540800
 OTS               0x49540900
 OTS_LITE          0x49540A00
 Locator           0x49540B00
 POA Locator       0x49540C00
 Activator         0x49540D00
 Generic Server    0x49540E00
 Naming            0x49540F00
 IFR               0x49541000
 Config Rep.       0x49541100
 Thread Pkg        0x49541200
 PSS/R ODBC        0x49541300
 ATLI-IOP none     0x49541400

A sample subsystem is the Orbix Locator (0x49540B00), which can throw a variety of exceptions, each with multiple possible minor codes to provide more detailed information about the exception within the context thrown.

For example, the following are minor codes for the BAD_PARAM standard exception:


 const unsigned long NO_ACTIVATOR_NAME       = BASE ;
 const unsigned long NO_ACTIVATOR_INFO       = BASE   1;
 const unsigned long ACTIVATOR_REG_NO_NAME   = BASE   2;
 const unsigned long ACTIVATOR_REG_NO_REF    = BASE   3;
 const unsigned long ACTIVATOR_UNREG_NO_NAME = BASE   4;
 const unsigned long UNEXPECTED_NULL         = BASE   5;
 const unsigned long PROCESS_NOT_EXIST       = BASE   6;

which equate to:
 NO_ACTIVATOR_NAME       = 0x49540B00
 NO_ACTIVATOR_INFO       = 0x49540B01
 ACTIVATOR_REG_NO_NAME   = 0x49540B02
 ACTIVATOR_REG_NO_REF    = 0x49540B03
 ACTIVATOR_UNREG_NO_NAME = 0x49540B04
 UNEXPECTED_NULL         = 0x49540B05
 PROCESS_NOT_EXIST       = 0x49540B06


So, a minor code of "0x49540B06" indicates it came from an Orbix (0x4954) Locator (0x0B) and that a process it is looking for does not exist (0x06).

Definitions for the minor codes used within the subsystems listed above can be found in the directory "
<Orbix Home>/asp/6.3/include/orbix_xtras". Please note, the minor codes specified here are in decimal format.

Another way to understand the meaning of minor codes is to use an internal Exception Parsing tool.

To run it, execute the "MinorCodeStringifier" class, as follows:

 java com.iona.corba.util.MinorCodeStringifier <major> <minor code>


Where the minor code the hex addition of the subsystem base minor code and secondary minor code

For example, for the following error:

  CORBA TRANSIENT vmcid: 0x49540000 minor code: 256 completed: NO


The hexadecimal equivalent of the minor code "256" is "0x100".

  0x49540000   0x100 = 0x49540100


This is passed to the MinorCodeStringifier class as follows:

  java com.iona.corba.util.MinorCodeStringifier TRANSIENT 0x49540100


Which produces:

  IT_Core:CANNOT_BIND.org/dc/elements/1.1/" xmlns:rss="http://purl.org/rss/1.0/"> NO_ACTIVATOR_NAME = 0x49540B00
Workaround
Notes
Attachment
Created date: 06 September 2011
Last Modified: 13 February 2013
Last Published: 02 May 2012
First Published date: 09 September 2011

#KnowledgeDocs
#Orbix