@Override
    public Object getAttribute(String attribute) throws AttributeNotFoundException, MBeanException, ReflectionException {
        updateJmxCache();
        synchronized (this) {
            Attribute a = attrCache.get(attribute);
            if (a == null) {
                throw new AttributeNotFoundException(attribute + " not found");
            }
            if (LOG.isDebugEnabled()) {
                LOG.debug(attribute + ": " + a.getName() + "=" + a.getValue());
            }
            return a.getValue();
        }
    }