Using bidirectional connections without Glacier2 makes the application more complex.
Here are some guidelines:
- A server can freely return proxies to a bidirectional client. The only limitation is that all of the proxies must resolve to the same connection; in general, this means the proxies should all refer to servants in the same object adapter. (The goal is usually for the client to have a single connection to the server, and using multiple object adapters in the server would require the client to create multiple connections.)
- The server must create the proxy for every callback object in the client. As shown in our Ice/bidir example, the client passes the identity of its callback object to the server, and the server creates the proxy that it uses to send callback requests. The server should not be requesting proxies from the client.
Using Glacier2 solves these issues and I recommend that you use Glacier2 if possible.
Regards,
Mark