Что означает «org.omg.CORBA.MARSHAL: vmcid: 0x0 младший код: 0 завершено: возможно»?

Я получаю очень загадочную ошибку при вызове компонента EJB, развернутого на сервере weblogic 10.3.5.

Ошибка:

javax.ejb.EJBException: CORBA MARSHAL 0 Maybe; nested exception is: 
    org.omg.CORBA.MARSHAL:   vmcid: 0x0  minor code: 0 completed: Maybe; nested exception is: org.omg.CORBA.MARSHAL:   vmcid: 0x0  minor code: 0 completed: Maybe
    at weblogic.ejb.container.internal.RemoteBusinessIntfProxy.unwrapRemoteException(RemoteBusinessIntfProxy.java:121)
    at weblogic.ejb.container.internal.RemoteBusinessIntfProxy.invoke(RemoteBusinessIntfProxy.java:103)
    at $Proxy0.getOrder(Unknown Source)
    at test.EjbTest.main(EjbTest.java:37)
Caused by: org.omg.CORBA.MARSHAL:   vmcid: 0x0  minor code: 0 completed: Maybe
    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.sun.corba.se.impl.protocol.giopmsgheaders.MessageBase.getSystemException(MessageBase.java:897)
    at com.sun.corba.se.impl.protocol.giopmsgheaders.ReplyMessage_1_2.getSystemException(ReplyMessage_1_2.java:99)
    at com.sun.corba.se.impl.protocol.CorbaMessageMediatorImpl.getSystemExceptionReply(CorbaMessageMediatorImpl.java:572)
    at com.sun.corba.se.impl.protocol.CorbaClientRequestDispatcherImpl.processResponse(CorbaClientRequestDispatcherImpl.java:430)
    at com.sun.corba.se.impl.protocol.CorbaClientRequestDispatcherImpl.marshalingComplete(CorbaClientRequestDispatcherImpl.java:326)
    at com.sun.corba.se.impl.protocol.CorbaClientDelegateImpl.invoke(CorbaClientDelegateImpl.java:129)
    at org.omg.CORBA.portable.ObjectImpl._invoke(ObjectImpl.java:457)
    at service._OrderSession_fb3odc_OrderSessionRIntf_Stub.getOrder(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:597)
    at weblogic.ejb.container.internal.RemoteBusinessIntfProxy.invoke(RemoteBusinessIntfProxy.java:85)
    ... 2 more

Привязка ejb создается с помощью wlclient.jar:

public static <T> T getRemoteEJB(String jndi, Class<T> clazz){
    try {
        Properties props = new Properties();
        props.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
        props.put(Context.PROVIDER_URL, "t3://localhost:7001");

        InitialContext ctx = new InitialContext(props);

        T ejb = (T) ctx.lookup(jndi);
        PortableRemoteObject.narrow(ejb, clazz);
        return ejb;

    } catch (Exception e) {
        logger.error("Unable to lookup object of class {} through jndi name {}", clazz, jndi);
    }
    return null;
}

Я не могу найти, что означает этот таинственный vmcid: 0x0 minor code: 0 completed: Maybe, поэтому, пожалуйста, хотя бы подскажите, что это значит. Запрос выполняется на стороне сервера, потому что ошибок там нет.


person Danubian Sailor    schedule 25.01.2012    source источник


Ответы (2)


Быстрый поиск ошибки указывает на эту ссылку. Одна из рекомендаций — использовать не wlclient.jar, а weblogic.jar. Цитата из ссылки,

Пожалуйста, попробуйте использовать weblogic.jar на стороне клиента или даже лучше создать "wlfullclient.jar" с помощью утилиты jarBuilder, предоставляемой как часть WebLogic.

Проблема, по-видимому, заключается в маршаллинге объектов при использовании протокола WebLogic t3. Ознакомьтесь также с этой ссылкой.

person Santosh    schedule 25.01.2012
comment
Ссылка с инструкцией по сборке wfullclient.jar не работает... Где взять weblogic.jar? Я нашел файл с таким именем в server/lib, но я не могу использовать его вместо wlclient, так как многие классы отсутствуют, такие как EjbException.... - person Danubian Sailor; 25.01.2012
comment
Вот еще один ссылка, которая описывает, как создать wlfullclient.jar - person Matthieu Cormier; 17.04.2013

Еще одна вещь, которую вы можете попробовать на стороне клиента, это использовать wlthint3client.jar. Он поставляется с WebLogic 10.3.5 (в wlserver_10.3.5\server\lib). Он больше, чем wlclient.jar, но намного меньше, чем wlfullclient.jar. Предупреждение, если вы используете это: если клиент Swing переключается с iiop на t3, ему нужно будет включить smclientclasses.jar в свой пакет веб-запуска, иначе он получит ошибки. Если клиент не использует Swing, это не должно быть проблемой.

person user3112014    schedule 11.06.2014