If you use the findAllObjectsByType method and do your own load balancing, you shouldn't define the replica group in the deployment descriptor and you should register the object with the adapter instead of the replica group (that's why you only get one proxy from findAllObjectsByType right now).
For example:
Code:
<service name="${name}" entry="demo.DemoService">
<adapter name="${service}" register-process="true">
<object identity="${server}" type="::demo::demoModel"/>
</adapter>
<properties>
<property name="Identity" value="${server}"/>
</properties>
</service>
The other solution I mentioned in my first post is to use the replica group and configure the proxy to not cache the connection and eventually query the locator more often, for example:
Code:
Ice::Object proxy = communicator->stringToProxy("demo");
proxy = proxy->ice_connectionCached(false);
proxy = proxy->ice_locatorCacheTimeout(5);
Here, invocations on this proxy will be be sent to one of the replica from the replica group and the Ice runtime will get every 5 seconds a new replica from the locator (according to the load balancing policy of the replica-group, in your case round-robin).
Cheers,
Benoit.