[jacorb-developer] OBJ_ADAPTER minor ZERO

Hugo Roenick hroenick at gmail.com
Mon Aug 17 14:03:11 CEST 2015


Hi guys.

We received a report from some of ours clients that they are receiving an OBJ_ADAPTER exception, with minor ZERO. The CORBA specification defines minor codes 1 to 7 and ZERO is not a valid one. We still didn't manage to isolate the problem and didn't understand what may be causing this behaviour. 

Sorry about that. I know that this lack of information really restricts how you could help.

It seems to have some relation with multithreading, but we couldn't identify any other clue while inspecting the JacORB's code, except from the stack itself. Here is the error stack trace:

Exception in thread "RequestProcessor-4" org.omg.CORBA.OBJ_ADAPTER: 
	at org.jacorb.orb.ServantDelegate.poa(ServantDelegate.java:122)
	at org.omg.PortableServer.Servant._poa(Servant.java:30)
	at org.jacorb.orb.portableInterceptor.ServerRequestInfoImpl.setServant(ServerRequestInfoImpl.java:162)
	at org.jacorb.orb.portableInterceptor.ServerRequestInfoImpl.<init>(ServerRequestInfoImpl.java:99)
	at org.jacorb.poa.RequestProcessor.process(RequestProcessor.java:574)
	at org.jacorb.poa.RequestProcessor.run(RequestProcessor.java:830)

The ServantDelegate poa method is:

    final public POA poa(org.omg.PortableServer.Servant self)
    {
        check();

        _getPOACurrent();

        try
        {
            // CORBA 2.4 added the get_servant() operation to the
            // PortableServer::Current interface. As of JDK 1.4.2,
            // however, the class org.omg.PortableServant.Current
            // in Sun's JDK does not have the method get_servant().
            // Instead of simply saying _current.get_servant(), below
            // we say ((org.jacorb.poa.Current)_current).get_servant().
            // The cast allows JacORB to run with the obsolete Sun class.
            if( ((org.jacorb.poa.Current)_current).get_servant() != self )
            {
                throw new org.omg.CORBA.OBJ_ADAPTER(); <<--------- line 122 ----------------------------
            }

            return _current.get_POA();
        }
        catch(NoContext e)
        {
            throw new org.omg.CORBA.OBJ_ADAPTER(e.toString());
        }
    }

I tried to identify what could be provoking this check mismatch in ServantDelegate, but I still have no clue.
We are still using JacORB version 3.5.

Sorry about the lack of information and test case. 
Hope you guys can provide us any help on this matter. Any enlightenment or tip so we carry on with the investigation?

Regards,
-- Hugo



More information about the jacorb-developer mailing list