1. The EPR used by ServiceInvoker depends on the Load Balancing policy in place for the deployment. The default is RoundRobin (I think).
2. At the moment, the registry doesn't differentiate between message aware or gateway endpoints. In fact, most gateways don't even register themselves in the registry - so the ServiceInvoker can't see them. AFAIK, the jbr gateway listener is one exception to this.
3. The Load Balancing Policy implementations provided out-of-the-box give preference to InVM endpoints, but you could implement your own policy to override this.
Thanks Tom - but what I really was trying to ask was if it is correct to say that ServiceInvoker will always select JMS as the transport (or InVM), because only jms-listener can have is-gateway = "false" and thus be ESB aware
Right, so ServiceInvoker (in its current form) can only be used to invoke message aware endpoints. It's purely an "on-the-bus" invocation mechanism.
Currently, the list of transports supported on the bus are InVM, JMS, SQL, File and Hibernate. I don't think I missed anything there :)