Client Config
-------------
Sun JVM 1.4.2_04
wlclient.jar (8.1 SP2)
Server Config
-------------
Sun JVM 1.4.2_04
weblogic.jar (8.1 SP2)
Client-side Exception
---------------------
java.rmi.MarshalException: CORBA MARSHAL 0 No; nested exception is:
org.omg.CORBA.MARSHAL: vmcid: 0x0 minor code: 0 completed: No
at com.sun.corba.se.internal.iiop.ShutdownUtilDelegate.mapSystemException(ShutdownUtilDelegate.java:100)
at javax.rmi.CORBA.Util.mapSystemException(Util.java:65)
at <my_class>(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
..
at weblogic.security.subject.SubjectProxy.doAs(SubjectProxy.java:61)
at weblogic.security.subject.SubjectManager.runAs(SubjectManager.java:231)
at weblogic.security.Security.runAs(Security.java:48)
..
java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:178)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:454)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:141)
at java.awt.Dialog$1.run(Dialog.java:540)
at java.awt.Dialog.show(Dialog.java:561)
at java.awt.Component.show(Component.java:1133)
at java.awt.Component.setVisible(Component.java:1088)
..
at java.awt.Component.processEvent(Component.java:4897)
at java.awt.Container.processEvent(Container.java:1569)
at java.awt.Component.dispatchEventImpl(Component.java:3615)
at java.awt.Container.dispatchEventImpl(Container.java:1627)
at java.awt.Component.dispatchEvent(Component.java:3477)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:3483)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3207)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3128)
at java.awt.Container.dispatchEventImpl(Container.java:1613)
at java.awt.Window.dispatchEventImpl(Window.java:1606)
at java.awt.Component.dispatchEvent(Component.java:3477)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:456)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:145)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:100)
Caused by: org.omg.CORBA.MARSHAL: vmcid: 0x0 minor code: 0 completed: No
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:274)
at java.lang.Class.newInstance0(Class.java:308)
at java.lang.Class.newInstance(Class.java:261)
at com.sun.corba.se.internal.iiop.messages.ReplyMessage_1_2.getSystemException(ReplyMessage_1_2.java:90)
at com.sun.corba.se.internal.iiop.ClientResponseImpl.getSystemException(ClientResponseImpl.java:105)
at com.sun.corba.se.internal.corba.ClientDelegate.invoke(ClientDelegate.java:314)
at org.omg.CORBA.portable.ObjectImpl._invoke(ObjectImpl.java:457)
... 58 more
Server-side Errors
---------------------
org.omg.CORBA.MARSHAL: stream corrupted: '0' tag reserved vmcid: 0x0 minor code: 0 completed: No
at weblogic.iiop.IIOPInputStream.continuation(IIOPInputStream.java:499)
at weblogic.iiop.IIOPInputStream.endOfChunk(IIOPInputStream.java:478)
at weblogic.iiop.IIOPInputStream.checkChunk(IIOPInputStream.java:459)
at weblogic.iiop.IIOPInputStream.read_longlong(IIOPInputStream.java:1087)
at com.sun.corba.se.internal.io.IIOPInputStream.inputPrimitiveField(IIOPInputStream.java:1373)
at com.sun.corba.se.internal.io.IIOPInputStream.inputClassFields(IIOPInputStream.java:1786)
at com.sun.corba.se.internal.io.IIOPInputStream.inputObject(IIOPInputStream.java:913)
at com.sun.corba.se.internal.io.IIOPInputStream.simpleReadObject(IIOPInputStream.java:261)
at com.sun.corba.se.internal.io.ValueHandlerImpl.readValueInternal(ValueHandlerImpl.java:247)
at com.sun.corba.se.internal.io.ValueHandlerImpl.readValue(ValueHandlerImpl.java:209)
at weblogic.iiop.IIOPInputStream.read_value(IIOPInputStream.java:1944)
at weblogic.iiop.IIOPInputStream.read_value(IIOPInputStream.java:1728)
at weblogic.iiop.IIOPInputStream.read_abstract_interface(IIOPInputStream.java:2045)
at com.sun.corba.se.internal.io.IIOPInputStream.readObjectDelegate(IIOPInputStream.java:228)
at com.sun.corba.se.internal.io.IIOPInputStream.readObjectOverride(IIOPInputStream.java:381)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:318)
at java.util.ArrayList.readObject(ArrayList.java:547)
at com.sun.corba.se.internal.io.IIOPInputStream.readObject(Native Method)
at com.sun.corba.se.internal.io.IIOPInputStream.invokeObjectReader(IIOPInputStream.java:1298)
at com.sun.corba.se.internal.io.IIOPInputStream.inputObject(IIOPInputStream.java:908)
at com.sun.corba.se.internal.io.IIOPInputStream.simpleReadObject(IIOPInputStream.java:261)
at com.sun.corba.se.internal.io.ValueHandlerImpl.readValueInternal(ValueHandlerImpl.java:247)
at com.sun.corba.se.internal.io.ValueHandlerImpl.readValue(ValueHandlerImpl.java:209)
at weblogic.iiop.IIOPInputStream.read_value(IIOPInputStream.java:1944)
at com.sun.corba.se.internal.io.IIOPInputStream.inputObjectField(IIOPInputStream.java:1577)
at com.sun.corba.se.internal.io.IIOPInputStream.inputClassFields(IIOPInputStream.java:1796)
at com.sun.corba.se.internal.io.IIOPInputStream.inputObject(IIOPInputStream.java:913)
at com.sun.corba.se.internal.io.IIOPInputStream.simpleReadObject(IIOPInputStream.java:261)
at com.sun.corba.se.internal.io.ValueHandlerImpl.readValueInternal(ValueHandlerImpl.java:247)
at com.sun.corba.se.internal.io.ValueHandlerImpl.readValue(ValueHandlerImpl.java:209)
at weblogic.iiop.IIOPInputStream.read_value(IIOPInputStream.java:1944)
at com.sun.corba.se.internal.io.IIOPInputStream.inputObjectField(IIOPInputStream.java:1577)
at com.sun.corba.se.internal.io.IIOPInputStream.inputClassFields(IIOPInputStream.java:1796)
at com.sun.corba.se.internal.io.IIOPInputStream.inputObject(IIOPInputStream.java:913)
at com.sun.corba.se.internal.io.IIOPInputStream.simpleReadObject(IIOPInputStream.java:261)
at com.sun.corba.se.internal.io.ValueHandlerImpl.readValueInternal(ValueHandlerImpl.java:247)
at com.sun.corba.se.internal.io.ValueHandlerImpl.readValue(ValueHandlerImpl.java:209)
at weblogic.iiop.IIOPInputStream.read_value(IIOPInputStream.java:1944)
at weblogic.iiop.RMIMsgInput.readObject(RMIMsgInput.java:83)
at <my_class>(Unknown Source)
at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:477)
at weblogic.rmi.cluster.ReplicaAwareServerRef.invoke(ReplicaAwareServerRef.java:108)
at weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:420)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:353)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:144)
at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:415)
at weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest.java:30)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:170)
-Dcom.sun.CORBA.giop.ORBGIOP12BuffMgr=0
CR173046 is the real fix. You could also use the thin-client jar from SP3 since it sets
the property also.
andy
> Looks like the following client jvmarg did the trick. Is there a patch for SP2 available that resolves this problem? What is the CR#? We're not quite ready to move to SP3 yet.
>
> -Dcom.sun.CORBA.giop.ORBGIOP12BuffMgr=0
--
Before setting this argument on all of our client installations, I'd like to understand a little bit more about what is happening. Are there any performance implications of setting ORBGIOP12BuffMgr to 0? Is this bug fixed in the SP3 thin client jar, or is the property just overridden?
According to the SP3 release notes, CR132427 fixed this bug:
"This was due to GIOP version mismatch in the response triggered by the interleaving of response fragments with out-of-band heartbeat messages. A code fix to place the proper GIOP version in the response resolved this issue."
Any extra information you could provide about the SP2 workaround or the SP3 fix would be greatly appreciated.
Yes, you will get better performance. Basically the JDK ORB fragments messages into 1k chunks. For large messages this can result in a _lot_ of very inefficient network traffic.
> to 0? Is this bug fixed in the SP3 thin client jar,
> or is the property just overridden?
Both. We changed the property by default in the client because it gives better performance. The actual bug is in the server, we fixed this also in SP3 (it requires a server-side patch). So you could get away with just applying the patch to the server if you didn't want to update all of your clients.
> According to the SP3 release notes, CR132427 fixed
> this bug:
> "This was due to GIOP version mismatch in the
> response triggered by the interleaving of response
> fragments with out-of-band heartbeat messages. A code
> fix to place the proper GIOP version in the response
> resolved this issue."
Right, so the client ended up sending heartbeats using GIOP 1.0 in between fragments at GIOP 1.2. This is allowed by the GIOP spec but the server implementation assumed that all messages on the same connection would be at the same GIOP rev. We've now fixed this.
andy
I even tried the jvm -D's and it still occurs. The context lookup succeeds, but the code dumps on this line of my app:
conn = ds.getConnection();
Here's the error snippet:
java.rmi.MarshalException: CORBA MARSHAL 0 Maybe; nested exception is:
org.omg.CORBA.MARSHAL: vmcid: 0x0 minor code: 0 completed: Maybe
at com.sun.corba.se.internal.iiop.ShutdownUtilDelegate.mapSystemExceptio
n(ShutdownUtilDelegate.java:100)
at javax.rmi.CORBA.Util.mapSystemException(Util.java:65)
at weblogic.jdbc.common.internal._RemoteDataSource_Stub.getConnection(Un
known Source)
Thanks!
(it's also in another forum thread)
:-)
Thanks
Tushar
> -Dcom.sun.CORBA.giop.ORBGIOP12BuffMgr=0 works with wlclient.jar SP2. However, is there any adverse effect if I leave the system property in the startup script and revert back to weblogic.jar (SP2)?
No adverse affect, and indeed this is the default in 8.1SP4 and will
give you better performance for large objects.
andy
--