2016-03-22 2 views
0

Недавно я испытываю проблемы во время CORBA-связи очень старого приложения, которое мне нужно поддерживать. Клиент и серверная часть взаимодействуют через CORBA. На конкретном вызове функции от клиента на сервере я получаю folowing ошибки:org.omg.CORBA: MARSHAL & org.omg.CORBA.BAD_PARAM ошибка

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) 

Ошибки воспроизводимая. Во время отладки я вижу, что данные загружаются задним концом как обычно и доходят до клиента. Клиент фактически получает ответ, но не может обрабатывать данные.

Тот же вызов функции работает для других данных. Существует только определенный выбор данных, который не проходит.

Я не могу обнаружить существенную разницу между этими данными. Идентификационные определения также не изменились.

Есть ли у вас какие-либо намеки на меня, где искать причину ошибки?

+0

Это что-то из stacktrace? – John

+0

Hello John, Я добавил весь стек в мой пост. Какие-нибудь идеи сейчас? –

ответ

0

Что касается совета друга, то вызывается org.omg.CORBA.MARSHAL, если сервер и клиент работают с различными версиями lib-Versions. Я не могу объяснить, как это может случиться с моим проектом, тем не менее эта конкретная ошибка исчезла сама по себе: -/

Фактическая проблема в моем случае была исключение org.omg.CORBA.BAD_PARAM, которое было вызвано следующим строка кода:

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

Где _vis_value.flugNr был null.

Так что исключение NullPointerException на самом деле, но скрытое VisiBroker под CORBA-Exception вместе с соответствующей трассировкой стека.

0

Убедитесь, что у вас есть одинаковые версии всех зависимостей (файлы jar) на клиенте и сервере.

Убедитесь, что клиент и сервер работают на одной и той же версии Java?

+0

Hello John, Клиент и сервер скомпилированы с Java 6. Сервер работает на Java 7. Клиент загружается на Java Web Start, поэтому я не влияю на JRE клиента. Однако я должен поддерживать Java 6. До сих пор это не проблема. Некоторое время назад веб-интерфейс, где я получаю данные, которые будут показаны на клиенте, был расширен. Но это не должно влиять на коммуникацию CORBA. Я не знаю, где искать. –

Смежные вопросы