2016-03-22 9 views
0

Kürzlich habe ich Probleme während der CORBA-Kommunikation einer sehr alten Anwendung, die ich pflegen muss. Client und Server kommunizieren über CORBA. Auf einem bestimmten Funktionsaufruf vom Client auf dem Server erhalte ich Folowing Fehler:org.omg.CORBA: MARSHAL & org.omg.CORBA.BAD_PARAM Fehler

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) 

Der Fehler reproduzierbar ist. Während des Debugging kann ich sehen, dass Daten wie üblich vom Backend geladen werden und auf dem Client ankommen. Der Client erhält zwar die Antwort, kann aber die Daten nicht verarbeiten.

Der gleiche Funktionsaufruf funktioniert für andere Daten. Es gibt nur eine bestimmte Datenauswahl, die nicht durchkommt.

Ich kann keinen signifikanten Unterschied zwischen diesen Daten feststellen. Die Idl-Definitionen wurden ebenfalls nicht geändert.

Haben Sie Hinweise für mich, wo nach der Fehlerursache suchen?

+0

Ist das der gesamte StackTrace? – John

+0

Hallo John, Ich habe den gesamten Stacktrace zu meinem Beitrag hinzugefügt. Irgendwelche Ideen jetzt? –

Antwort

0

Auf einen Hinweis eines Freundes wird die org.omg.CORBA.MARSHAL geworfen, wenn Server und Client mit verschiedenen lib-Versionen arbeiten. Ich kann nicht erklären, wie es zu meinem Projekt passieren konnte, aber dieser besondere Fehler verschwand von selbst: -

Das eigentliche Problem in meinem Fall war eine org.omg.CORBA.BAD_PARAM Ausnahme, die durch Folgendes verursacht wurde Codezeile:

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); 
    ... 
    } 

Wo _vis_value.flugNr war null.

Also eigentlich eine NullPointerException, die aber von VisiBroker unter CORBA-Exception zusammen mit dem entsprechenden Stack-Trace ausgeblendet wird.

0

Stellen Sie sicher, dass auf dem Client und auf dem Server die gleichen Versionen aller Abhängigkeiten (JAR-Dateien) vorhanden sind.

Stellen Sie sicher, dass der Client und der Server die gleiche Java-Version ausführen?

+0

Hallo John, Client und Server sind beide mit Java 6 kompiliert. Server läuft auf Java 7. Client wird per Java Web Start geladen, so dass ich keinen Einfluss auf die Client JRE habe. Ich muss jedoch Java 6 unterstützen. Bis jetzt war es kein Problem. Vor einiger Zeit wurde das Webinterface, auf dem ich die Daten im Client anzeigen kann, erweitert. Aber es sollte die CORBA-Kommunikation nicht beeinflussen. Ich weiß nicht mehr, wo ich suchen soll. –

Verwandte Themen