Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What does 'org.omg.CORBA.MARSHAL: vmcid: 0x0 minor code: 0 completed: Maybe' mean?

I'm getting very mysterious error while invoking EJB bean deployed on weblogic 10.3.5 server.

The error is:

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

The ejb binding is created using 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;
}

I can't find what this mysterious vmcid: 0x0 minor code: 0 completed: Maybe means, so please at least for clue what this means. The request is completed on server side, because there are no errors there.

like image 895
Danubian Sailor Avatar asked Jan 18 '23 16:01

Danubian Sailor


2 Answers

A quick search for the error points to this link. One of the recommendation is not to use wlclient.jar but weblogic.jar. Quoting from the link,

Please try using weblogic.jar at client end or even there is a better option to create the "wlfullclient.jar" using the jarBuilder utility provided as part of WebLogic

The problem seems to be in Marshalling of the objects while using the WebLogic's t3 protocol. Please check out this link as well.

like image 185
Santosh Avatar answered Feb 15 '23 23:02

Santosh


Another thing you could try on the client side would be to use wlthint3client.jar. It comes with WebLogic 10.3.5 (in wlserver_10.3.5\server\lib). It is bigger than wlclient.jar, but much smaller than wlfullclient.jar. A warning if you use this: if the Swing client switches from iiop to t3, they will need to include the smclientclasses.jar in their webstart bundle, otherwise they will get errors. If the client isn’t using Swing, then it shouldn’t be a problem.

like image 42
user3112014 Avatar answered Feb 15 '23 23:02

user3112014