This managed resource will not be detected nor registered because in org.springframework.jmx.export.MBeanExporter.autodetect(AutodetectCallback), the call "beanFactory.getType(beanName)" returns "Proxy" class so "callback.include(beanClass, beanName)" will not detect it.
I find this issue critical because it's so easy to break a managed resource that was working just by annotating with @Transactional one of the methods, even if that method is not exposed.
The solution here is to switch to CGLIB proxies (a.k.a. target-class mode) for your transaction annotation setup. However, point taken that an exception should be raised here; we actually did this in former times but somehow this seems to have been lost. We'll revisit it for 4.3 RC2.