public EJBModuleMetaDataImpl createEJBModuleMetaDataImpl ( EJBApplicationMetaData ejbAMD , // F743-4950 ModuleInitData mid , SfFailoverCache statefulFailoverCache , EJSContainer container ) { final boolean isTraceOn = TraceComponent . isAnyTracingEnabled ( ) ; if ( isTraceOn && tc . isEntryEnabled ( ) ) Tr . entry ( tc , "createEJBModuleMetaDataImpl" ) ; EJBJar ejbJar = mid . ivEJBJar ; EJBModuleMetaDataImpl mmd = mid . createModuleMetaData ( ejbAMD ) ; mmd . ivInitData = mid ; mmd . ivMetadataComplete = mid . ivMetadataComplete ; mmd . ivJ2EEName = mid . ivJ2EEName ; mmd . ivName = mid . ivName ; mmd . ivAppName = mid . ivAppName ; mmd . ivLogicalName = mid . ivLogicalName ; mmd . ivApplicationExceptionMap = createApplicationExceptionMap ( ejbJar ) ; mmd . ivModuleVersion = ejbJar == null ? BeanMetaData . J2EE_EJB_VERSION_3_0 : ejbJar . getVersionID ( ) ; // Determine if the SetRollbackOnly behavior should be as it was in 2.x // modules (where SetRollbackOnly would need to be invoked within the // actual EJB instance), or use the 3.x behavior (where // SetRollbackOnly can be invoke within and ejb instance that is itself // invoked from within the ejb instance that began the transaction). // For EJB 3.x applications, the LimitSetRollbackOnlyBehaviorToInstanceFor property // is usd to indicate that the 2.x behavior should be used. // Likewise, 2.x applications can use the ExtendSetRollbackOnlyBehaviorBeyondInstanceFor // property to get the 3.x behavior. // d461917.1 if ( mmd . ivModuleVersion >= BeanMetaData . J2EE_EJB_VERSION_3_0 ) { if ( ( LimitSetRollbackOnlyBehaviorToInstanceFor == null ) || ( ! LimitSetRollbackOnlyBehaviorToInstanceFor . contains ( mmd . ivAppName ) ) ) { mmd . ivUseExtendedSetRollbackOnlyBehavior = true ; } } else { // not a 3.0 module if ( ( ExtendSetRollbackOnlyBehaviorBeyondInstanceFor != null ) && ( ExtendSetRollbackOnlyBehaviorBeyondInstanceFor . contains ( "*" ) || ExtendSetRollbackOnlyBehaviorBeyondInstanceFor . contains ( mmd . ivAppName ) ) ) { mmd . ivUseExtendedSetRollbackOnlyBehavior = true ; } } // Get the failover instance ID and SFSB Failover value to use for this module if // a SfFailoverCache object was created. if ( statefulFailoverCache != null ) { mmd . ivSfsbFailover = getSFSBFailover ( mmd , container ) ; mmd . ivFailoverInstanceId = getFailoverInstanceId ( mmd , statefulFailoverCache ) ; } if ( isTraceOn && tc . isEntryEnabled ( ) ) Tr . exit ( tc , "createEJBModuleMetaDataImpl: " + mmd ) ; return mmd ; }
Create the EJB Container s internal module metadata object and fill in the data from the metadata framework s generic ModuleDataObject . This occurs at application start time .