summaryrefslogtreecommitdiff
path: root/java/test/Ice/dispatcher/Server.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/test/Ice/dispatcher/Server.java')
-rw-r--r--java/test/Ice/dispatcher/Server.java25
1 files changed, 22 insertions, 3 deletions
diff --git a/java/test/Ice/dispatcher/Server.java b/java/test/Ice/dispatcher/Server.java
index 0d9841aa952..b53e9eb5a71 100644
--- a/java/test/Ice/dispatcher/Server.java
+++ b/java/test/Ice/dispatcher/Server.java
@@ -19,7 +19,8 @@ public class Server extends test.Util.Application
Ice.ObjectAdapter adapter = communicator().createObjectAdapter("TestAdapter");
Ice.ObjectAdapter adapter2 = communicator().createObjectAdapter("ControllerAdapter");
- adapter.add(new TestI(), communicator().stringToIdentity("test"));
+ assert(_dispatcher != null);
+ adapter.add(new TestI(_dispatcher), communicator().stringToIdentity("test"));
adapter.activate();
adapter2.add(new TestControllerI(adapter), communicator().stringToIdentity("testController"));
adapter2.activate();
@@ -29,23 +30,41 @@ public class Server extends test.Util.Application
protected Ice.InitializationData getInitData(Ice.StringSeqHolder argsH)
{
+ assert(_dispatcher == null);
+ _dispatcher = new Dispatcher();
Ice.InitializationData initData = new Ice.InitializationData();
initData.properties = Ice.Util.createProperties(argsH);
initData.properties.setProperty("Ice.Package.Test", "test.Ice.dispatcher");
initData.properties.setProperty("TestAdapter.Endpoints", "default -p 12010");
initData.properties.setProperty("ControllerAdapter.Endpoints", "tcp -p 12011");
initData.properties.setProperty("ControllerAdapter.ThreadPool.Size", "1");
- initData.dispatcher = new Dispatcher();
+ initData.dispatcher = _dispatcher;
return initData;
}
+ public void terminate()
+ {
+ if(_dispatcher != null)
+ {
+ _dispatcher.terminate();
+ }
+ }
+
public static void
main(String[] args)
{
Server app = new Server();
int result = app.main("Server", args);
- Dispatcher.terminate();
+ app.terminate();
System.gc();
System.exit(result);
}
+
+ //
+ // The Dispatcher class uses a static "_instance" member in other language
+ // mappings. In Java, we avoid the use of static members because we need to
+ // maintain support for Android (in which the client and server run in the
+ // same process).
+ //
+ private Dispatcher _dispatcher;
}