public Object createBusinessObject(String businessInterfaceName,
                                       boolean useSupporting)
                    throws CreateException,
                    RemoteException,
                    ClassNotFoundException,
                    EJBConfigurationException
    {
        final boolean isTraceOn = TraceComponent.isAnyTracingEnabled();
        if (isTraceOn && tc.isEntryEnabled())
            Tr.entry(tc, "createBusinessObject: " + businessInterfaceName); // d367572.7

        int localIndex = beanMetaData.getLocalBusinessInterfaceIndex(businessInterfaceName);
        if (localIndex != -1)
        {
            return createLocalBusinessObject(localIndex, null);
        }

        int remoteIndex = beanMetaData.getRemoteBusinessInterfaceIndex(businessInterfaceName);
        if (remoteIndex != -1)
        {
            container.getEJBRuntime().checkRemoteSupported(this, businessInterfaceName);
            return createRemoteBusinessObject(remoteIndex, null);
        }

        if (useSupporting)
        {
            Class<?> target = beanMetaData.classLoader.loadClass(businessInterfaceName);
            localIndex = beanMetaData.getAssignableLocalBusinessInterfaceIndex(target);
            remoteIndex = beanMetaData.getAssignableRemoteBusinessInterfaceIndex(target);

            if (localIndex != -1)
            {
                if (remoteIndex != -1)
                {
                    Tr.error(tc, "AMBIGUOUS_REFERENCE_TO_DUPLICATE_INTERFACE_CNTR0155E",
                             new Object[] { beanMetaData.enterpriseBeanName,
                                           beanMetaData._moduleMetaData.ivName,
                                           businessInterfaceName });
                    EJBConfigurationException ejbex = new EJBConfigurationException
                                    ("Another component has an ambiguous reference to interface: " + businessInterfaceName +
                                     " which has both local and remote implementions on bean: " + j2eeName);
                    if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
                        Tr.debug(tc, "createBusinessObject : " + ejbex);

                    throw ejbex;
                }

                return createLocalBusinessObject(localIndex, null);
            }

            if (remoteIndex == -1)
            {
                Tr.error(tc, "ATTEMPT_TO_REFERENCE_MISSING_INTERFACE_CNTR0154E",
                         new Object[] { beanMetaData.enterpriseBeanName,
                                       beanMetaData._moduleMetaData.ivName,
                                       businessInterfaceName });
                EJBConfigurationException ejbex = new EJBConfigurationException
                                ("Another component is attempting to reference local interface: " + businessInterfaceName +
                                 " which is not implemented by bean: " + j2eeName);
                if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
                    Tr.debug(tc, "createBusinessObject : " + ejbex);

                throw ejbex;
            }

            container.getEJBRuntime().checkRemoteSupported(this, businessInterfaceName);
            return createRemoteBusinessObject(remoteIndex, null);
        }
        else
        {
            if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
                Tr.debug(tc, "createBusinessObject : IllegalStateException : " +
                             "Requested business interface not found : " +
                             businessInterfaceName);

            throw new IllegalStateException("Requested business interface not found : " + businessInterfaceName);
        }
    }
public Object createBusinessObject ( String businessInterfaceName , boolean useSupporting ) throws CreateException , RemoteException , ClassNotFoundException , EJBConfigurationException { final boolean isTraceOn = TraceComponent . isAnyTracingEnabled ( ) ; if ( isTraceOn && tc . isEntryEnabled ( ) ) Tr . entry ( tc , "createBusinessObject: " + businessInterfaceName ) ; int localIndex = beanMetaData . getLocalBusinessInterfaceIndex ( businessInterfaceName ) ; if ( localIndex != - 1 ) { return createLocalBusinessObject ( localIndex , null ) ; } int remoteIndex = beanMetaData . getRemoteBusinessInterfaceIndex ( businessInterfaceName ) ; if ( remoteIndex != - 1 ) { container . getEJBRuntime ( ) . checkRemoteSupported ( this , businessInterfaceName ) ; return createRemoteBusinessObject ( remoteIndex , null ) ; } if ( useSupporting ) { Class < ? > target = beanMetaData . classLoader . loadClass ( businessInterfaceName ) ; localIndex = beanMetaData . getAssignableLocalBusinessInterfaceIndex ( target ) ; remoteIndex = beanMetaData . getAssignableRemoteBusinessInterfaceIndex ( target ) ; if ( localIndex != - 1 ) { if ( remoteIndex != - 1 ) { Tr . error ( tc , "AMBIGUOUS_REFERENCE_TO_DUPLICATE_INTERFACE_CNTR0155E" , new Object [ ] { beanMetaData . enterpriseBeanName , beanMetaData . _moduleMetaData . ivName , businessInterfaceName } ) ; EJBConfigurationException ejbex = new EJBConfigurationException ( "Another component has an ambiguous reference to interface: " + businessInterfaceName + " which has both local and remote implementions on bean: " + j2eeName ) ; if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isDebugEnabled ( ) ) Tr . debug ( tc , "createBusinessObject : " + ejbex ) ; throw ejbex ; } return createLocalBusinessObject ( localIndex , null ) ; } if ( remoteIndex == - 1 ) { Tr . error ( tc , "ATTEMPT_TO_REFERENCE_MISSING_INTERFACE_CNTR0154E" , new Object [ ] { beanMetaData . enterpriseBeanName , beanMetaData . _moduleMetaData . ivName , businessInterfaceName } ) ; EJBConfigurationException ejbex = new EJBConfigurationException ( "Another component is attempting to reference local interface: " + businessInterfaceName + " which is not implemented by bean: " + j2eeName ) ; if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isDebugEnabled ( ) ) Tr . debug ( tc , "createBusinessObject : " + ejbex ) ; throw ejbex ; } container . getEJBRuntime ( ) . checkRemoteSupported ( this , businessInterfaceName ) ; return createRemoteBusinessObject ( remoteIndex , null ) ; } else { if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isDebugEnabled ( ) ) Tr . debug ( tc , "createBusinessObject : IllegalStateException : " + "Requested business interface not found : " + businessInterfaceName ) ; throw new IllegalStateException ( "Requested business interface not found : " + businessInterfaceName ) ; } }
d366807.4