IBM Support

PK82640: IF USING GIOP 1.1 AND IF EJB THROWS AN EXCEPTION, THE RESPONSE TO CLIENT IS PARTIALLY INCORRECTLY ENCODED USING GIOP 1.2

A fix is available

Subscribe

You can track all active APARs for this component.

 

APAR status

  • Closed as program error.

Error description

  • If GIOP 1.1 is being used by a client to invoke an EJB in
    WebSphere for z/OS, and an exception is thrown by that EJB, the
    response message sent from the Server to Client may be partially
    incorrectly encoded in GIOP 1.2 format.
    .
    A consequence of this will be that the Client may produce an
    exception that does not match the exception which the EJB threw.
    This is because the client will expect a response fully encoded
    in GIOP 1.1, but will receive a response partially encoded in
    GIOP 1.2.
    .
    A ras_trace_detail=(3,4), and ORBRas=all trace is needed to
    confirm that this is the problem.
    .
    Below are the two particular exceptions / cases that were
    tested:
    .
    Case 1: EJB throws a CORBA.NO_RESOURCES exception, the Client
    produces a "CORBA.MARSHAL: Zero length wstring detected".
    .
    Case 2: EJB throws a java.rmi.RemoteException, the Client
    produces a "org.omg.CORBA.MARSHAL: String not terminated by NUL
    char".
    .
    Note that the actual exception thrown by the client will depend
    on the client itself based on how the client handles a partially
    incorrect encoded response.
    .
    Below are the relevant tracepoints for the above 2 cases:
    .
    Case 1 ------>
    .
    * EJB throws a NO_RESOURCES in the Servant region:
    CORBA.NO_RESOURCES - B6EACTS.txt
    Trace: 2008/09/02 12:46:45.440 01 t=6BC030 c=0.3 key=P8
    (13007002)
       ThreadId: 00000036
       FunctionName: com.ibm.ejs.container.util.ExceptionUtil
       SourceId: com.ibm.ejs.container.util.ExceptionUtil
       Category: SEVERE
       ExtendedMessage: BBOO0220E: CNTR0020E: EJB threw an
    unexpected (non-declared) exception during invocation of method
    "op_except" on
      bean "BeanId(InteropTest#InteropTestEJB.jar#InterTest, null)".
    Exception data: org.omg.CORBA.NO_RESOURCES: --thrown from
    op_except(1)  vmcid: 0x0  minor code: F  completed: Yes
    <cut>
    
    * Incorrectly encoded response sent back by WebSphere in the
    Control region:
    .
    Trace: 2008/09/02 12:46:45.663 01 t=6B41B8 c=0.3 key=S2
    (03021034)
    Description: CF_TCP_Connection::send_data(bool, bool)Write Data
    at line: 1406 vector: 0
    Data:  data_address=3fee7d80, data_length=3660
            (**EBCDIC Eyecatcher Omitted)
    +---------------------------------------------------------+
    |OSet| Address = 3fee7d80  Length = 0e4c |     ASCII      |
    +----+-----------------------------------+----------------+
    |0000|47494F50 01000001 00000E40 00000003|GIOP.......@....|
    |0010|00000009 00000DE8 00BDBDBD 7FFFFF0A|................|
    |0020|0000003F 524D493A 6A617661 2E726D69|...?RMI:java.rmi|
    |0030|2E52656D 6F746545 78636570 74696F6E|.RemoteException|
    |0040|3A383733 31313641 46453242 33303033|:873116AFE2B3003|
    |0050|433A4238 38433944 34454445 45343741|C:B88C9D4EDEE47A|
    |0060|323200BD 00000008 0101BDBD 00000000|22..............|
    |0070|7FFFFF0A 00000023 49444C3A 6F6D672E|.......#IDL:omg.|
    |0080|6F72672F 434F5242 412F5753 7472696E|org/CORBA/WStrin|
    |0090|6756616C 75653A31 2E3000BD 00000004|gValue:1.0......|
    |00a0|00000000 FFFFFFFE 7FFFFF0A 00000045|...............E|
    <cut>
    .
    In the above snippet:
    Number of bytes in the chunk = (IDL long) 0x00000004
    Chunk octet = 0x00000000
    End tag = 0xFFFFFFFE
    .
    Therefore wstring data is only 0x00000000 (chunk octet) - which
    is GIOP 1.2 format as CDR (Common Data Representation) means
    that length of wstring is 0. In GIOP 1.0, a termination
    charactor should be included and which means the length will not
    be 0.
    .
    * Client throws following error:
    >java.rmi.MarshalException: CORBA MARSHAL 1213468698&#65517;Error
    unmarshaling value &#65517;org.omg.CORBA.MARSHAL: Error unmarshaling
    value &#65517;org.omg.CORBA.MARSHAL: Zero length wstring detected
    vmcid: 0x48541000
    minor code: 34  completed: No vmcid: 0x48541000  minor code:
    26 completed: No
    .
    Case 2 ------>
    .
    * java.rmi.RemoteException - B6EACTS.txt
     Trace: 2008/09/02 12:47:25.367 01 t=6BC030 c=0.3 key=P8
    (13007002)
       ThreadId: 00000036
       FunctionName: com.ibm.ejs.container.util.ExceptionUtil
       SourceId: com.ibm.ejs.container.util.ExceptionUtil
       Category: SEVERE
       ExtendedMessage: BBOO0220E: CNTR0020E: EJB threw an
    unexpected
    (non-declared) exception during invocation of method "op_except"
    on
      bean "BeanId(InteropTest#InteropTestEJB.jar#InterTest, null)".
    Exception data: java.rmi.RemoteException: --thrown from
    op_except(2)
     <cut>
    
    * Incorrectly encoded response sent back by WebSphere in the
    Control Region:
    
    Trace: 2008/09/02 12:47:25.491 01 t=6B7BF8 c=0.3 key=S2
    (04079006)
    Description: send_message
    Method Name: ZIOPChannelBridge::send_message(ORB_Request *, void
    *, int)
    message:  data_address=3ff49430, data_length=1024
    +----------------------------------------------------------+
    |OSet| Address = 3ff49430  Length = 0400 ||     ASCII      |
    +----+-----------------------------------++----------------+
    |0000|47494F50 01000001 00000CF8 00000003||GIOP............|
    |0010|00000009 00000C9C 00BDBDBD 7FFFFF0A||................|
    |0020|0000003F 524D493A 6A617661 2E726D69||...?RMI:java.rmi|
    |0030|2E52656D 6F746545 78636570 74696F6E||.RemoteException|
    |0040|3A383733 31313641 46453242 33303033||:873116AFE2B3003|
    |0050|433A4238 38433944 34454445 45343741||C:B88C9D4EDEE47A|
    |0060|323200BD 00000008 0101BDBD 00000000||22..............|
    |0070|7FFFFF0A 00000023 49444C3A 6F6D672E||.......#IDL:omg.|
    |0080|6F72672F 434F5242 412F5753 7472696E||org/CORBA/WStrin|
    |0090|6756616C 75653A31 2E3000BD 0000003C||gValue:1.0.....<|
    |00a0|00000038 002D002D 00740068 0072006F||...8.-.-.t.h.r.o|
    |00b0|0077006E 00200066 0072006F 006D0020||.w.n. .f.r.o.m. |
    |00c0|006F0070 005F0065 00780063 00650070||.o.p._.e.x.c.e.p|
    |00d0|00740028 00320029 002D002D FFFFFFFE||.t.(.2.).-.-....|
    |00e0|7FFFFF0A 00000045 524D493A 5B4C6A61||.......ERMI:[Lja|
    <cut>
    .
    In the above snippet:
    .
    Same as case 1 the CDR is in GIOP 1.2 format. In GIOP 1.1,
    length is number of wstring charactors. In this case, zWAS
    has set the number of wstring data bytes.
    .
    * Client throws the following error:
    ->java.rmi.MarshalException: CORBA MARSHAL 1213468698&#65517;Error
    unmarshaling
    value &#65517;org.omg.CORBA.MARSHAL: Error unmarshaling value
    &#65517;org.omg.CORBA.MARSHAL: String not terminated by NUL char
    vmcid:
    0x48541000  minor code: 35  completed: No vmcid: 0x48541000
    minor code: 26  completed: No
    

Local fix

Problem summary

  • ****************************************************************
    * USERS AFFECTED: Users that connect to WebSphere Application  *
    *                 Server for z/OS using a GIOP 1.0 or 1.1      *
    *                 client.                                      *
    ****************************************************************
    * PROBLEM DESCRIPTION: A GIOP 1.0 or 1.1 client application    *
    *                      connecting to WebSphere Application     *
    *                      Server for z/OS receives an             *
    *                      org.omg.CORBA.MARSHAL exception.        *
    ****************************************************************
    * RECOMMENDATION:                                              *
    ****************************************************************
    When a WebSphere application that is invoked over IIOP throws
    an exception, the server must marshal the exception which is
    then demarshaled by the client.  The server marshals the
    exception in the UnknownExceptionInfo standard service context
    (service context ID = 9).  The marshaling and demarshaling are
    handled differently depending on the version of GIOP that is
    being used.
    Currently, WebSphere marshals the exception using GIOP 1.2
    regardless of the GIOP version that the client uses.  If the
    client is using GIOP 1.0 or 1.1, it will be unable to demarshal
    the exception, resulting in some type of CORBA.MARSHAL
    exception in the client.  An example of such an exception is:
    
    org.omg.CORBA.MARSHAL: String not terminated by NUL char
    

Problem conclusion

  • \
    Code was added to honor the client's GIOP version when
    marshaling the UnknownExceptionInfo standard service context.
    
    APAR PK82640 is currently targeted for inclusion in Service
    Level (Fix Pack) 7.0.0.3 of WebSphere Application Server V7.0.
    
    Please refer to URL:
    //www.ibm.com/support/docview.wss?rs=404&uid=swg27006970
    for Fix Pack availability.
    

Temporary fix

Comments

APAR Information

  • APAR number

    PK82640

  • Reported component name

    WEBSPHERE FOR Z

  • Reported component ID

    5655I3500

  • Reported release

    700

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt

  • Submitted date

    2009-03-16

  • Closed date

    2009-03-19

  • Last modified date

    2009-05-03

  • APAR is sysrouted FROM one or more of the following:

    PK71664

  • APAR is sysrouted TO one or more of the following:

Modules/Macros

  • BBGUBINF BBOUBINF
    

Fix information

  • Fixed component name

    WEBSPHERE FOR Z

  • Fixed component ID

    5655I3500

Applicable component levels

  • R700 PSY UK45160

       UP09/04/06 P F904

Fix is available

  • Select the PTF appropriate for your component level. You will be required to sign in. Distribution on physical media is not available in all countries.

[{"Business Unit":{"code":"BU059","label":"IBM Software w\/o TPS"},"Product":{"code":"SS7K4U","label":"WebSphere Application Server for z\/OS"},"Component":"","ARM Category":[],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"7.0","Edition":"","Line of Business":{"code":"LOB45","label":"Automation"}}]

Document Information

Modified date:
10 February 2022