I have following interfaces.
interface Server {
void subscribe(in Client client);
};
interface Client {
void ping();
void pong();
};
Find out if your ORB supports bi-directional IIOP, that solves the NAT/firewall issue for server->client callbacks.
Here are some ORBs that do support it:
OmniORB - http://omniorb.sourceforge.net/omni40/omniORB/omniORB008.html#sec:bidir
Orbix - http://documentation.progress.com/output/Iona/orbix/migration/html/InteropCx3.html
Visibroker - http://www.albany.edu/dept/csi/csi518/fall03/inprise/vbroker/doc/books/vbj/vbj45/programmers-guide/bidir.html