Currently the Java Client supports client-side selectors and the Java Broker provides server-side selectors. Where available, server-side selectors should always be used. On the C++ side, there are only client-side selectors and server-side selectors remain a future enhancement.
The Java Broker needs to advertise, on connection, the presence of server-side selectors and the Java Client detect this and use them. Where the Java Client does not see this feature advertised (i.e. on connection to the C++ broker) it should revert to use client-side selectors.
This detection approach should be implemented in a generic way such that the client detects on connection a list of advertised features from the broker, so that it could be extended to support XA and other such features.
The model adopted should be consistent across Java and C++ brokers.