Recently I experience problems during CORBA-comunication of a very old application I have to maintain. Client and server part communicate via CORBA. On a particular function call from client on server I get folowing error:
Not successful call - original stacktrace
java.lang.Exception
at de.tc.app.lamo.bss.util.dialog.AbstractCallProxy.<init>(AbstractCallProxy.java:135)
at de.tc.app.lamo.bss.util.dialog.CallProxy.<init>(CallProxy.java:68)
at de.tc.app.lamo.bss.util.dialog.BasisCtl.initiateServerCall(BasisCtl.java:186)
at de.tc.app.lamo.bss.util.dialog.BasisCtl.initiateServerCall(BasisCtl.java:198)
at de.tc.app.lamo.bss.dialog.stz.STZCtl.funcLesen(STZCtl.java:106)
at de.tc.app.lamo.bss.dialog.stz.STZView$1.actionPerformed(STZView.java:163)
at javax.swing.JTextField.fireActionPerformed(JTextField.java:492)
at javax.swing.JTextField.postActionEvent(JTextField.java:705)
at javax.swing.JTextField$NotifyAction.actionPerformed(JTextField.java:820)
at javax.swing.SwingUtilities.notifyAction(SwingUtilities.java:1639)
at javax.swing.JComponent.processKeyBinding(JComponent.java:2859)
at javax.swing.JComponent.processKeyBindings(JComponent.java:2894)
at javax.swing.JComponent.processKeyEvent(JComponent.java:2822)
at java.awt.Component.processEvent(Component.java:6074)
at java.awt.Container.processEvent(Container.java:2039)
at java.awt.Component.dispatchEventImpl(Component.java:4660)
at java.awt.Container.dispatchEventImpl(Container.java:2097)
at java.awt.Component.dispatchEvent(Component.java:4488)
at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1856)
at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:722)
at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:1000)
at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:865)
at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:686)
at java.awt.Component.dispatchEventImpl(Component.java:4532)
at java.awt.Container.dispatchEventImpl(Container.java:2097)
at java.awt.Window.dispatchEventImpl(Window.java:2489)
at java.awt.Component.dispatchEvent(Component.java:4488)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:668)
at java.awt.EventQueue.access$400(EventQueue.java:81)
at java.awt.EventQueue$2.run(EventQueue.java:627)
at java.awt.EventQueue$2.run(EventQueue.java:625)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
at java.awt.EventQueue$3.run(EventQueue.java:641)
at java.awt.EventQueue$3.run(EventQueue.java:639)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:638)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Exception Serveraufruf: de.tc.app.lamo.awf.stub.Corba_St_STZAwf.lese
org.omg.CORBA.BAD_PARAM: 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:513)
at java.lang.Class.newInstance0(Class.java:355)
at java.lang.Class.newInstance(Class.java:308)
at com.inprise.vbroker.orb.SE.read(Unknown Source)
at com.inprise.vbroker.orb.DelegateImpl.handleReply(Unknown Source)
at com.inprise.vbroker.orb.DelegateImpl.invoke(Unknown Source)
at org.omg.CORBA.portable.ObjectImpl._invoke(ObjectImpl.java:457)
at de.tc.app.lamo.awf.corba._STZAwfStub.lese(_STZAwfStub.java:272)
at de.tc.app.lamo.awf.stub.Corba_St_STZAwf.lese(Corba_St_STZAwf.java:50)
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:597)
at de.tc.app.lamo.bss.util.dialog.AbstractCallProxy.call(AbstractCallProxy.java:145)
at de.tc.app.lamo.bss.util.dialog.AbstractCallProxy.doCall(AbstractCallProxy.java:431)
at de.tc.app.lamo.bss.util.dialog.AbstractCallProxy.run(AbstractCallProxy.java:346)
at de.tc.app.lamo.bss.util.dialog.CallProxy.run(CallProxy.java:141)
at java.lang.Thread.run(Thread.java:662)
The error is reproducible. During debugging I can see that data are loaded by the back end as usual and reached on to the client. The client actually gets the response but is not able to process the data.
The same function call works for other data. There is only some particular data selection which doesn't come through.
I cannot detect any significant difference between those data. The idl-definitions weren't changed either.
Do you have any hints for me, where to look for the error cause?
As to an advice of a friend the org.omg.CORBA.MARSHAL is thrown, if server and client work with different lib-Versions. I cannot explain how it could happen to my project, nevertheless this particular error disappeared on its own :-/
The actual Problem in my case was an org.omg.CORBA.BAD_PARAM Exception, which was caused by the following line of code:
public static void write (final org.omg.CORBA.portable.OutputStream _output, final de.tc.app.lamo.comm.STZFlugereignis _vis_value) {
...
_output.write_string((java.lang.String)_vis_value.flugNr);
...
}
Where _vis_value.flugNr
was null.
So a NullPointerException actually, but hidden by VisiBroker under CORBA-Exception together with the relevant stack trace.