code: protected BeanMetaData getBeanMetaData() {
  
          final boolean isTraceOn = TraceComponent.isAnyTracingEnabled();
          if (isTraceOn && tc.isEntryEnabled())
              Tr.entry(tc, "getBeanMetaData: " + this);
  
          EJSHome home;
  
          try {
              // Get the currently installed and active home for this timer. It
              // is possible the home is not currently running, so an
              // EJBNotFoundException may occur.
              home = EJSContainer.getDefaultContainer().getInstalledHome(j2eeName);
  
              // Verify that the bean is still a Timer bean, in case the
              // application has been modified since the timer was created.
              if ((home.beanMetaData.timedMethodInfos) == null) {
                  Tr.warning(tc, "HOME_NOT_FOUND_CNTR0092W", j2eeName);
                  throw new EJBNotFoundException("Incompatible Application Change: " + j2eeName + " no longer supports timers.");
              }
          } catch (EJBNotFoundException ejbnfex) {
              FFDCFilter.processException(ejbnfex, CLASS_NAME + ".getBeanMetaData", "635", this);
              if (isTraceOn && tc.isEntryEnabled())
                  Tr.exit(tc, "getBeanMetaData: Failed locating timer bean " + j2eeName + " : " + ejbnfex);
              throw new TimerServiceException("Failed locating timer bean " + j2eeName, ejbnfex);
          }
  
          BeanMetaData bmd = home.beanMetaData;
  
          if (isTraceOn && tc.isEntryEnabled())
              Tr.exit(tc, "getBeanMetaData: " + bmd);
  
          return bmd;
      }
docs: Gets BeanMetaData through EJSHome lookup