I don't think we can/should use the domain as the discriminator; it will mean the MBean tree will have many roots, each with just a few MBeans, since the domain is the root.

The IntegrationMbeanExporter (and Batch - we also need to add the BatchMBeanExporter for batch modules) has a property "objectNameStaticProperties". We should use something like 

    <int-jmx:mbean-export default-domain="XD_${xd.stream.name}"
        object-name-static-properties="onProperties"/>
					  
	<util:properties id="onProperties">
		<prop key="module">${xd.module}</prop>
		<prop key="index">${xd.module.index}</prop>
	</util:properties> 

(Or more likely, dynamically add a `Properties` bean to the context).

However, to avoid duplicate MBean Names, any classes (including user classes) that are annotated `@ManagedResource` will need the appropriate equivalent SpEL elements in their `objectName` attribute (see https://jira.springsource.org/browse/SPR-8244).

Consider someone adding a `<bean/>` of type `MyFoo` to several modules in a stream; the MBean objectName needs to be made unique within the stream (if the stream is the domain), so it would have to be annotated with something like...

`@ManagedResouce(objectName="...module=#{onProperties['xd.module']},index=#{onProperties['xd.module.index']}...");