private void preLoadBeanPool ( ) { final boolean isTraceOn = TraceComponent . isAnyTracingEnabled ( ) ; if ( isTraceOn && tc . isEntryEnabled ( ) ) Tr . debug ( tc , "preLoadBeanPool: " + j2eeName ) ; synchronized ( beanPool ) { Object oldClassLoader = ThreadContextAccessor . UNCHANGED ; try { // To support injection, etc. we must put the bmd and classloader on the thread. ivCMDAccessor . beginContext ( beanMetaData ) ; oldClassLoader = EJBThreadData . svThreadContextAccessor . pushContextClassLoaderForUnprivileged ( beanMetaData . ivContextClassLoader ) ; for ( int i = ivNumberBeansCreated ; i < beanMetaData . ivInitialPoolSize ; i ++ ) { BeanO beanO = beanOFactory . create ( container , this , false ) ; beanPool . put ( beanO ) ; if ( beanMetaData . ivMaxCreation > 0 ) { ++ ivNumberBeansCreated ; if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isDebugEnabled ( ) ) Tr . debug ( tc , "Pre-load BeanPool(" + ivNumberBeansCreated + "/" + beanMetaData . ivMaxCreation + ")" ) ; } } } catch ( Throwable ex ) { FFDCFilter . processException ( ex , CLASS_NAME + ".preLoadBeanPool" , "561" , this ) ; if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isDebugEnabled ( ) ) Tr . debug ( tc , "Pre-load of BeanPool failed: exception ignored: " + ex ) ; if ( ex instanceof InvocationTargetException ) { ex = ex . getCause ( ) ; } Tr . warning ( tc , "IGNORING_UNEXPECTED_EXCEPTION_CNTR0033E" , ex ) ; } finally { EJBThreadData . svThreadContextAccessor . popContextClassLoaderForUnprivileged ( oldClassLoader ) ; ivCMDAccessor . endContext ( ) ; } } if ( isTraceOn && tc . isEntryEnabled ( ) ) Tr . exit ( tc , "preLoadBeanPool" ) ; }
Pre - load the BeanPool if the BeanPool min value has been configured as a hard limit . Any exceptions encountered will be ignored and the pool just not pre - loaded . Currently only supported for Stateless Session beans .