PQ81451: WebSphere for z/OS java client receives java.io.IOException: Mismatched serialization UIDs, or java.rmi.MarshalException | |||||||||||||||||||||||||||||||||||||||||||
![]() |
|||||||||||||||||||||||||||||||||||||||||||
![]() APAR status Closed as program error. Error description A WebSphere for z/OS java client invokes EJB methods in an application deployed on a WebSphere Distributed 4.0.7 server running on a Windows XP workstation. The java client logs a java.io.IOException and a java.rmi.MarshalException due to mismatched serialization UIDs between the java client and the server - but the serialization UIDs are actually identical. The logs look like this: ---- java.io.IOException: Mismatched serialization UIDs : Source (Rep. IDRMI:test.Data:97ECCCC3F219672B:43162EF082E4AB06) = 43162EF082E4AB06 whereas Target (Rep. ID RMI:test.Data:B5D31BEF76D1BD18:B967EAF253EBA451) = B967EAF253EBA451 at com.ibm.rmi.io.IIOPInputStream.throwExceptionType (Native Method) at com.ibm.rmi.io.IIOPInputStream.simpleReadObject (IIOPInputStream.java:249) at com.ibm.rmi.io.ValueHandlerImpl.readValueInternal (ValueHandlerImpl.java:239) at com.ibm.rmi.io.ValueHandlerImpl.readValue (ValueHandlerImpl.java:180) at com.ibm.rmi.iiop.CDRInputStream.read_value (CDRInputStream.java:1499) at test._Test_Stub.getData(_Test_Stub.java:236) at test.TestClient.main(TestClient.java:29) Exception in thread java.rmi.MarshalException: CORBA MARSHAL 1229123584 No; nested exception is: org.omg.CORBA.MARSHAL: Unable to read value from underlying bridge : Mismatched serialization UIDs : Source (Rep. IDRMI:test.Data:97ECCCC3F219672B:43162EF082E4AB06) = 43162EF082E4AB06 whereas Target (Rep. ID RMI:test.Data:B5D31BEF76D1BD18:B967EAF253EBA451) = B967EAF253EBA451 minor code: 4942F000 completed: No org.omg.CORBA.MARSHAL: Unable to read value from underlying bridge : Mismatched serialization UIDs : Source (Rep. IDRMI:test.Data:97ECCCC3F219672B:43162EF082E4AB06) = 43162EF082E4AB06 whereas Target (Rep. ID RMI:test.Data:B5D31BEF76D1BD18:B967EAF253EBA451) = B967EAF253EBA451 minor code: 4942F000 completed: No at com.ibm.rmi.iiop.CDRInputStream.read_value (CDRInputStream.java:1517) at test._Test_Stub.getData(_Test_Stub.java:236) at test.TestClient.main(TestClient.java:29) ============================= Adjusting the serialization UID declaration to include the attribute "private" solved the serialization UID mismatch, but the parameter marshalling still failed. If the client passed a null object on the ejb method invocation then the following exceptions were returned. ---- java.io.IOException: No sending context was generated. java.io.IOException: No sending context at com.ibm.rmi.io.IIOPInputStream.throwExceptionType (Native Method) at com.ibm.rmi.io.IIOPInputStream.simpleReadObject (IIOPInputStream.java:249) at com.ibm.rmi.io.ValueHandlerImpl.readValueInternal (ValueHandlerImpl.java:239) at com.ibm.rmi.io.ValueHandlerImpl.readValue (ValueHandlerImpl.java:180) at com.ibm.rmi.iiop.CDRInputStream.read_value (CDRInputStream.java:1499) at test._Test_Stub.getData(_Test_Stub.java:236) at test.TestClient.main(TestClient.java:29) Exception in thread "P=720048:O=0:CT" java.rmi.MarshalException: CORBA MARSHAL 1229123584 No; nested exception is: org.omg.CORBA.MARSHAL: Unable to read value from underlying bridge:No sending context minor code:4942F000 completed:No org.omg.CORBA.MARSHAL: Unable to read value from underlying bridge: No sending context minor code: 4942F000 completed: No at com.ibm.rmi.iiop.CDRInputStream.read_value (CDRInputStream.java:1517) at test._Test_Stub.getData(_Test_Stub.java:236) at test.TestClient.main(TestClient.java:29) ==== If the client passed a non-null object on the invocation then the following exceptions were returned. ---- Exception in thread java.rmi.MarshalException: CORBA MARSHAL 0 No; nested exception is: org.omg.CORBA.MARSHAL: minor code: 0 completed: No org.omg.CORBA.MARSHAL: minor code: 0 completed: No at java.lang.Class.newInstance0(Native Method) at java.lang.Class.newInstance(Class.java:262) at com.ibm.rmi.util.Utility.readSystemException (Utility.java:1534) at com.ibm.ws390.rmi.corba.ClientDelegate.invoke (ClientDelegate.java:669) at org.omg.CORBA.portable.ObjectImpl._invoke (ObjectImpl.java:258) at test._Test_Stub.getData(_Test_Stub.java:235) at test.TestClient.main(TestClient.java:29) The exception thrown in the server looked like this ---- org.omg.CORBA.MARSHAL: Unable to read value from underlying bridge : null minor code: 0 completed: No at com.ibm.rmi.iiop.CDRInputStream.read_value (CDRInputStream.java:1454) at test._EJSRemoteStatelessTest_7a6c606a_Tie.getData (_EJSRemoteStatelessTest_7a6c606a_Tie.java:152) at test._EJSRemoteStatelessTest_7a6c606a_Tie._invoke (_EJSRemoteStatelessTest_7a6c606a_Tie.java:96) at com.ibm.CORBA.iiop.ExtendedServerDelegate.dispatch (ExtendedServerDelegate.java:532) at com.ibm.CORBA.iiop.ORB.process(ORB.java:2450) at com.ibm.CORBA.iiop.OrbWorker.run(OrbWorker.java:186) at com.ibm.ejs.oa.pool.ThreadPool$PooledWorker.run (ThreadPool.java:104) at com.ibm.ws.util.CachedThread.run (ThreadPool.java(Compiled code)) ===== ORB traces taken in the client an on the server show that the WebSphere for z/OS client is sending the wrong partner version information to the WebSphere Distributed server. ===== This problem can also manifest itself as a java.lang.ClassNotFoundException: java.io.FileNotFoundException: Where the class not found appears to have spaces between each letter of the class name, like this: C:\Programme\WebSphere\AppClient\properties\ t e s t \ J M S B e a .class The class in question implements Streamable, and its readObject method is incorrectly demarshalling the wide character string class name as a UTF-8 string. The spaces are actually binary 0x00 characters, and their presence explains why the class cannot be found - there is no class with embedded nulls in the name. The class not found errors cause the class's readObject method to throw a Marshal exception.Local fix Problem summary **************************************************************** * USERS AFFECTED: All users of WebSphere Application Server * * V5.0 for z/OS * **************************************************************** * PROBLEM DESCRIPTION: CORBA::MARSHAL exception on * * distributed server with WebSphere * * for z/OS as the client. * **************************************************************** * RECOMMENDATION: * **************************************************************** This problem occurs when WebSphere for z/OS is acting as the client, and sends a request to a distributed server containing the following context (tag and value): 49424D12 00000008 00000000 00000000 This context can cause various errors demarshalling data on the distributed server: java.lang.ClassNotFoundException: java.io.FileNotFoundException: c:\path\to\ t e s t \ J M S B e a .class at java.io.FileInputStream.open(Native Method) at java.io.FileInputStream.<init>(FileInputStream.java:78) at java.io.FileInputStream.<init>(FileInputStream.java:109) java.io.IOException at com.ibm.rmi.iiop.Message.readFully(Message.java:322) at com.ibm.rmi.iiop.Message.createFromStream(Message.java:172) at com.ibm.CORBA.iiop.IIOPConnection.createInputStream (IIOPConnection.java:742) at com.ibm.CORBA.iiop.StandardReaderThread.run (StandardReaderThread.java:136)Problem conclusion Initialization and management of context 49424D12 was updated to correct marshalling conflicts with WebSphere on the distributed platform. APAR PQ81451 is associated with SERVICE LEVEL W502001 of WebSphere Application Server V5.0 for z/OS.Temporary fix Comments
APAR is sysrouted FROM one or more of the following: PQ81448 APAR is sysrouted TO one or more of the following: Modules/Macros
Publications Referenced
|
Document Information |
Current web document: swg1PQ81451.html
Product categories: Software > Application Servers >
Distributed Application & Web Servers > WebSphere Application
Server for z/OS
Operating system(s):
Software version: 500
Software edition:
Reference #: PQ81451
IBM Group: Software Group
Modified date: Feb 4, 2004
(C) Copyright IBM Corporation 2000, 2009. All Rights Reserved.