You need to use beanNames when referring to objects. According to the MBeanExporter#setBeans javadoc:
Bean
names will be resolved as beans in the current factory, respecting lazy-init markers (that is, not triggering initialization of such beans).
To fix this change:
Code:
<map>
<entry key="bean:name=testService">
<ref bean="testService"/>
</entry>
</map>
To:
Code:
<map>
<entry key="bean:name=testService">
<idref local="testService"/>
</entry>
</map>
This is because the map reference to a bean automatically instantiates it. This is done before the MBeanExporter does it magic with lazy-init.