diff options
author | Dwayne Boone <dwayne@zeroc.com> | 2014-09-24 10:33:04 -0230 |
---|---|---|
committer | Dwayne Boone <dwayne@zeroc.com> | 2014-09-24 10:33:04 -0230 |
commit | 577ede251a38fe84fbfa4621e732962bff43bb75 (patch) | |
tree | d78377e164f364264753cffbd4ef4e2580f0f31a /java/src/Glacier2/SessionHelper.java | |
parent | Fixed ICE-5535, WSS hang and other minor issues (diff) | |
download | ice-577ede251a38fe84fbfa4621e732962bff43bb75.tar.bz2 ice-577ede251a38fe84fbfa4621e732962bff43bb75.tar.xz ice-577ede251a38fe84fbfa4621e732962bff43bb75.zip |
ICE-5611 Add support for Ice/RouterFinder to Glacier2 helpers
Diffstat (limited to 'java/src/Glacier2/SessionHelper.java')
-rw-r--r-- | java/src/Glacier2/SessionHelper.java | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/java/src/Glacier2/SessionHelper.java b/java/src/Glacier2/SessionHelper.java index 2ea89487044..49709b47a8d 100644 --- a/java/src/Glacier2/SessionHelper.java +++ b/java/src/Glacier2/SessionHelper.java @@ -501,6 +501,66 @@ public class SessionHelper return; } + if(_communicator.getDefaultRouter() != null) + { + completeConnect(factory); + } + else + { + Ice.RouterFinderPrx finder = Ice.RouterFinderPrxHelper.uncheckedCast( + _communicator.stringToProxy(_communicator.getProperties().getProperty("SessionHelper.RouterFinder"))); + finder.begin_getRouter(new Ice.Callback() + { + @Override + public void completed(Ice.AsyncResult result) + { + try + { + Ice.RouterPrx router = + Ice.RouterFinderPrxHelper.uncheckedCast( + result.getProxy()).end_getRouter(result); + _communicator.setDefaultRouter(router); + } + catch(final Ice.Exception ex) + { + Ice.Communicator communicator = null; + synchronized(SessionHelper.this) + { + communicator = _communicator; + _communicator = null; + } + + if(communicator != null) + { + try + { + communicator.destroy(); + } + catch(Throwable ex1) + { + } + } + + dispatchCallback(new Runnable() + { + @Override + public void run() + { + _callback.connectFailed(SessionHelper.this, ex); + } + }, null); + return; + } + + completeConnect(factory); + } + }); + } + } + + private void + completeConnect(final ConnectStrategy factory) + { new Thread(new Runnable() { @Override |