I've added async JMX notifications (vs. polling) for socket transport in JMX remoting. I will commit tomorrow.
When a remote notification listener is added to a remote MBeanServer, the remote server will connect back to the client using the clients InvokerLocator if the underlying transport supports bi-directional invocations (for example, SOAP wouldn't). If it can't/doesn't support bi-directional, then it will default back to polling on invocations.
I plan on refactoring this soon to push this down into the remoting layer so that JMX/JMS, etc. can use the same logic for handling this behaviour and just provide the listener/event specific code in the subsystem invocation handler.