private Method getActionMethod(Object action, String methodName) {
        // 不能直接调用init和destroy方法
        if (methodName.equals(Constants.ACTION_INIT_METHOD)
            || methodName.equals(Constants.ACTION_INIT_METHOD)) {
            return null;
        }

        String key = action.getClass().getName() + '$' + methodName.toLowerCase();
        Method method = methods.get(key);
        if (method != null) {
            return method;
        }

        for (Method m : action.getClass().getMethods()) {
            if (m.getModifiers() == Modifier.PUBLIC && m.getName().equalsIgnoreCase(methodName)) {
                method = m;
            }
        }

        // 继续查找是否存在post方法。
        methodName = Constants.REQUEST_POST + methodName;
        for (Method m : action.getClass().getMethods()) {
            if (m.getModifiers() == Modifier.PUBLIC && m.getName().equalsIgnoreCase(methodName)) {
                method = m;
            }
        }

        // synchronized (methods) {
        methods.put(key, method);
        // }

        return method;
    }