ejb3/src/main/java/org/jboss/as/ejb3/timerservice/CalendarTimer.java
public static Method getTimeoutMethod(TimeoutMethod timeoutMethodInfo, ClassLoader classLoader) {
        if(timeoutMethodInfo == null) {
            return null;
        }
        String declaringClass = timeoutMethodInfo.getDeclaringClass();
        Class<?> timeoutMethodDeclaringClass = null;
        try {
            timeoutMethodDeclaringClass = Class.forName(declaringClass, false, classLoader);
        } catch (ClassNotFoundException cnfe) {
            throw EjbLogger.EJB3_TIMER_LOGGER.failToLoadDeclaringClassOfTimeOut(declaringClass);
        }

        String timeoutMethodName = timeoutMethodInfo.getMethodName();
        String[] timeoutMethodParams = timeoutMethodInfo.getMethodParams();
        // load the method param classes
        Class<?>[] timeoutMethodParamTypes = new Class<?>[]
                {};
        if (timeoutMethodParams != null) {
            timeoutMethodParamTypes = new Class<?>[timeoutMethodParams.length];
            int i = 0;
            for (String paramClassName : timeoutMethodParams) {
                Class<?> methodParamClass = null;
                try {
                    methodParamClass = Class.forName(paramClassName, false, classLoader);
                } catch (ClassNotFoundException cnfe) {
                    throw EjbLogger.EJB3_TIMER_LOGGER.failedToLoadTimeoutMethodParamClass(cnfe, paramClassName);
                }
                timeoutMethodParamTypes[i++] = methodParamClass;
            }
        }
        // now start looking for the method
        Class<?> klass = timeoutMethodDeclaringClass;
        while (klass != null) {
            Method[] methods = klass.getDeclaredMethods();
            for (Method method : methods) {
                if (method.getName().equals(timeoutMethodName)) {
                    Class<?>[] methodParamTypes = method.getParameterTypes();
                    // param length doesn't match
                    if (timeoutMethodParamTypes.length != methodParamTypes.length) {
                        continue;
                    }
                    boolean match = true;
                    for (int i = 0; i < methodParamTypes.length; i++) {
                        // param type doesn't match
                        if (!timeoutMethodParamTypes[i].equals(methodParamTypes[i])) {
                            match = false;
                            break;
                        }
                    }
                    if (match) {
                        // match found
                        return method;
                    }
                }
            }
            klass = klass.getSuperclass();

        }
        // no match found
        return null;
    }
public static Method getTimeoutMethod(TimeoutMethod timeoutMethodInfo, ClassLoader classLoader) {
        if(timeoutMethodInfo == null) {
            return null;
        }
        String declaringClass = timeoutMethodInfo.getDeclaringClass();
        Class<?> timeoutMethodDeclaringClass = null;
        try {
            timeoutMethodDeclaringClass = Class.forName(declaringClass, false, classLoader);
        } catch (ClassNotFoundException cnfe) {
            throw EjbLogger.EJB3_TIMER_LOGGER.failToLoadDeclaringClassOfTimeOut(declaringClass);
        }

        String timeoutMethodName = timeoutMethodInfo.getMethodName();
        String[] timeoutMethodParams = timeoutMethodInfo.getMethodParams();
        // load the method param classes
        Class<?>[] timeoutMethodParamTypes = new Class<?>[]
                {};
        if (timeoutMethodParams != null) {
            timeoutMethodParamTypes = new Class<?>[timeoutMethodParams.length];
            int i = 0;
            for (String paramClassName : timeoutMethodParams) {
                Class<?> methodParamClass = null;
                try {
                    methodParamClass = Class.forName(paramClassName, false, classLoader);
                } catch (ClassNotFoundException cnfe) {
                    throw EjbLogger.EJB3_TIMER_LOGGER.failedToLoadTimeoutMethodParamClass(cnfe, paramClassName);
                }
                timeoutMethodParamTypes[i++] = methodParamClass;
            }
        }
        // now start looking for the method
        Class<?> klass = timeoutMethodDeclaringClass;
        while (klass != null) {
            Method[] methods = klass.getDeclaredMethods();
            for (Method method : methods) {
                if (method.getName().equals(timeoutMethodName)) {
                    Class<?>[] methodParamTypes = method.getParameterTypes();
                    // param length doesn't match
                    if (timeoutMethodParamTypes.length != methodParamTypes.length) {
                        continue;
                    }
                    boolean match = true;
                    for (int i = 0; i < methodParamTypes.length; i++) {
                        // param type doesn't match
                        if (!timeoutMethodParamTypes[i].equals(methodParamTypes[i])) {
                            match = false;
                            break;
                        }
                    }
                    if (match) {
                        // match found
                        return method;
                    }
                }
            }
            klass = klass.getSuperclass();

        }
        // no match found
        return null;
    }
public static Method getTimeoutMethod ( TimeoutMethod timeoutMethodInfo , ClassLoader classLoader ) { if ( timeoutMethodInfo == null ) { return null ; } String declaringClass = timeoutMethodInfo . getDeclaringClass ( ) ; Class < ? > timeoutMethodDeclaringClass = null ; try { timeoutMethodDeclaringClass = Class . forName ( declaringClass , false , classLoader ) ; } catch ( ClassNotFoundException cnfe ) { throw EjbLogger . EJB3_TIMER_LOGGER . failToLoadDeclaringClassOfTimeOut ( declaringClass ) ; } String timeoutMethodName = timeoutMethodInfo . getMethodName ( ) ; String [ ] timeoutMethodParams = timeoutMethodInfo . getMethodParams ( ) ; // load the method param classes Class < ? > [ ] timeoutMethodParamTypes = new Class < ? > [ ] { } ; if ( timeoutMethodParams != null ) { timeoutMethodParamTypes = new Class < ? > [ timeoutMethodParams . length ] ; int i = 0 ; for ( String paramClassName : timeoutMethodParams ) { Class < ? > methodParamClass = null ; try { methodParamClass = Class . forName ( paramClassName , false , classLoader ) ; } catch ( ClassNotFoundException cnfe ) { throw EjbLogger . EJB3_TIMER_LOGGER . failedToLoadTimeoutMethodParamClass ( cnfe , paramClassName ) ; } timeoutMethodParamTypes [ i ++ ] = methodParamClass ; } } // now start looking for the method Class < ? > klass = timeoutMethodDeclaringClass ; while ( klass != null ) { Method [ ] methods = klass . getDeclaredMethods ( ) ; for ( Method method : methods ) { if ( method . getName ( ) . equals ( timeoutMethodName ) ) { Class < ? > [ ] methodParamTypes = method . getParameterTypes ( ) ; // param length doesn't match if ( timeoutMethodParamTypes . length != methodParamTypes . length ) { continue ; } boolean match = true ; for ( int i = 0 ; i < methodParamTypes . length ; i ++ ) { // param type doesn't match if ( ! timeoutMethodParamTypes [ i ] . equals ( methodParamTypes [ i ] ) ) { match = false ; break ; } } if ( match ) { // match found return method ; } } } klass = klass . getSuperclass ( ) ; } // no match found return null ; }
Returns the {@link java.lang.reflect.Method}, represented by the {@link org.jboss.as.ejb3.timerservice.persistence.TimeoutMethod}
<p>
Note: This method uses the {@link Thread#getContextClassLoader()} to load the
relevant classes while getting the {@link java.lang.reflect.Method}
</p>

@param timeoutMethodInfo  The timeout method
@param classLoader The class loader
@return
Returns the { @link java . lang . reflect . Method } represented by the { @link org . jboss . as . ejb3 . timerservice . persistence . TimeoutMethod } <p > Note : This method uses the { @link Thread#getContextClassLoader () } to load the relevant classes while getting the { @link java . lang . reflect . Method } < / p >