code: private MBeanAttributeConfig makeConfigMBeanAttribute(ObjectName mBeanName,
  			MBeanAttributeInfo attributeInfo) {
  		// type determines if this should be composite
  		Object attr;
  		try {
  			attr = mBeanServer.getAttribute(mBeanName,
  					attributeInfo.getName());
  			MBeanAttributeConfig config = new MBeanAttributeConfig();
  			config.addField("name", attributeInfo.getName());
  
  			if (attr == null) {
  				return null;
  			} else if (attr instanceof CompositeData) {
  				addComposites(config, (CompositeData) attr);
  			} else {
  				config.addField("type",
  						translateDataType(attributeInfo.getType()));
  			}
  			return config;
  		} catch (RuntimeMBeanException e) {
  			System.err.println(e.getMessage());
  		} catch (AttributeNotFoundException e) {
  			System.err.println(e.getMessage());
  		} catch (InstanceNotFoundException e) {
  			System.err.println(e.getMessage());
  		} catch (MBeanException e) {
  			System.err.println(e.getMessage());
  		} catch (ReflectionException e) {
  			System.err.println(e.getMessage());
  		}
  		return null;
  	}
docs: Creates an object to represent a single attribute of an MBean. An
  attribute can be a simple attribute, or made up composites.
  
  @param mBeanName
  @param attributeInfo
  @return an AttributeConfig for this MBean