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

 A specific fix for this item is not yet available electronically

This record will be updated with a link to the fix if the APAR is new.
For APARs older than 365 days, contact your support center.



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■Error
unmarshaling value ■org.omg.CORBA.MARSHAL: Error unmarshaling
value ■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■Error
unmarshaling
value ■org.omg.CORBA.MARSHAL: Error unmarshaling value
■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 PK71664 is currently targeted for inclusion in Service
Level (Fix Pack) 6.1.0.23 of WebSphere Application Server V6.1
for z/OS.

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 PK71664
Reported component name WEBSPHERE FOR Z
Reported component ID 5655I3500
Reported release 610
Status CLOSED PER
PE NoPE
HIPER NoHIPER
Special Attention NoSpecatt
Submitted date 2008-09-08
Closed date 2008-10-08
Last modified date 2008-10-08

APAR is sysrouted FROM one or more of the following:

APAR is sysrouted TO one or more of the following:

Modules/Macros

Publications Referenced

Fix information
Fixed component name WEBSPHERE FOR Z
Fixed component ID 5655I3500

Applicable component levels
R500 PSN    UP
R601 PSN    UP
R610 PSY    UP
R700 PSY    UP


Document Information


Current web document: swg1PK71664.html
Product categories: Software > Application Servers > Distributed Application & Web Servers > WebSphere Application Server for z/OS
Operating system(s):
Software version: 610
Software edition:
Reference #: PK71664
IBM Group: Software Group
Modified date: Oct 8, 2008