diff options
author | Matthew Newhook <matthew@zeroc.com> | 2009-01-09 11:25:54 -0330 |
---|---|---|
committer | Matthew Newhook <matthew@zeroc.com> | 2009-01-09 11:25:54 -0330 |
commit | 592acfa70b3728953dfe28fa7c33302932c073c2 (patch) | |
tree | d5b1f276b641a11333167a55e21bec4093bf130e /java/demo/Database/library/Server.java | |
parent | - Bug 3135 fix. (diff) | |
download | ice-592acfa70b3728953dfe28fa7c33302932c073c2.tar.bz2 ice-592acfa70b3728953dfe28fa7c33302932c073c2.tar.xz ice-592acfa70b3728953dfe28fa7c33302932c073c2.zip |
added Database demo.
Diffstat (limited to 'java/demo/Database/library/Server.java')
-rw-r--r-- | java/demo/Database/library/Server.java | 142 |
1 files changed, 142 insertions, 0 deletions
diff --git a/java/demo/Database/library/Server.java b/java/demo/Database/library/Server.java new file mode 100644 index 00000000000..ba0929442ab --- /dev/null +++ b/java/demo/Database/library/Server.java @@ -0,0 +1,142 @@ +// ********************************************************************** +// +// Copyright (c) 2003-2008 ZeroC, Inc. All rights reserved. +// +// This copy of Ice is licensed to you under the terms described in the +// ICE_LICENSE file included in this distribution. +// +// ********************************************************************** + +import Demo.*; + +class LibraryServer extends Ice.Application +{ + static class LocatorI implements Ice.ServantLocator + { + public Ice.Object + locate(Ice.Current c, Ice.LocalObjectHolder cookie) + { + assert c.id.category.equals("book"); + return _servant; + } + + public void + finished(Ice.Current c, Ice.Object servant, Object cookie) + { + } + + public void + deactivate(String category) + { + } + + LocatorI(Ice.Object servant) + { + _servant = new DispatchInterceptorI(servant); + } + + private Ice.Object _servant; + } + + public int + run(String[] args) + { + args = communicator().getProperties().parseCommandLineOptions("JDBC", args); + + if(args.length > 0) + { + System.err.println(appName() + ": too many arguments"); + return 1; + } + + Ice.Properties properties = communicator().getProperties(); + + String username = properties.getProperty("JDBC.Username"); + String password = properties.getProperty("JDBC.Password"); + String url = properties.getProperty("JDBC.Url"); + int nConnections = properties.getPropertyAsIntWithDefault("JDBC.NumConnections", 5); + if(nConnections < 1) + { + nConnections = 1; + } + ConnectionPool pool = null; + Ice.Logger logger = communicator().getLogger(); + + try + { + Class.forName("com.mysql.jdbc.Driver").newInstance(); + } + catch(Exception e) + { + java.io.StringWriter sw = new java.io.StringWriter(); + java.io.PrintWriter pw = new java.io.PrintWriter(sw); + e.printStackTrace(pw); + pw.flush(); + System.err.println("failed to initialize mysql driver:\n" + sw.toString()); + return 1; + } + + try + { + pool = new ConnectionPool(logger, url, username, password, nConnections); + } + catch(java.sql.SQLException e) + { + java.io.StringWriter sw = new java.io.StringWriter(); + java.io.PrintWriter pw = new java.io.PrintWriter(sw); + e.printStackTrace(pw); + pw.flush(); + System.err.println("failed to create connection pool: SQLException:\n" + sw.toString()); + return 1; + } + + long timeout = properties.getPropertyAsIntWithDefault("SessionTimeout", 30); + + ReapThread reaper = new ReapThread(logger, timeout); + reaper.start(); + + // + // Create an object adapter + // + Ice.ObjectAdapter adapter = communicator().createObjectAdapter("SessionFactory"); + + SQLRequestContext.initialize(logger, pool); + adapter.addServantLocator(new LocatorI(new BookI()), "book"); + + adapter.add(new SessionFactoryI(logger, reaper, timeout), communicator().stringToIdentity("SessionFactory")); + adapter.add(new Glacier2SessionManagerI(logger, reaper), + communicator().stringToIdentity("LibrarySessionManager")); + + // + // Everything ok, let's go. + // + adapter.activate(); + + shutdownOnInterrupt(); + communicator().waitForShutdown(); + defaultInterrupt(); + + reaper.terminate(); + try + { + reaper.join(); + } + catch(InterruptedException e) + { + } + + pool.destroy(); + + return 0; + } +} + +public class Server +{ + static public void + main(String[] args) + { + LibraryServer app = new LibraryServer(); + app.main("demo.Database.library.Server", args, "config.server"); + } +} |