/************************************************************************** * StandardServer * * $Revision: 1.47 $ * $Date: 2005/04/28 13:49:43 $ * * Copyright (C) 2001 CERN - European Organization for Nuclear Research * All rights reserved. **************************************************************************/ package com.c2kernel.process; import org.tanukisoftware.wrapper.WrapperListener; import org.tanukisoftware.wrapper.WrapperManager; import com.c2kernel.utils.Logger; /************************************************************************** * Base class for all servers i.e. c2k processes that serve Entities * * @author $Author: abranson $ $Date: 2005/04/28 13:49:43 $ * @version $Revision: 1.47 $ **************************************************************************/ public class StandardServer extends AbstractMain implements WrapperListener { protected static StandardServer server; /************************************************************************** * C2KRootPOA suitable for Factory objects **************************************************************************/ /************************************************************************** * void StandardInitalisation( String[] ) * * Set-up calls to ORB, POA and Factorys, both optional and required. **************************************************************************/ protected void standardInitialisation( String[] args ) throws Exception { // read args and init Gateway Gateway.init(readC2KArgs(args)); // connect to LDAP as root Gateway.connect(); //start console Logger.initConsole("ItemServer"); //initialize the server objects Gateway.startServer(); Logger.msg(5, "StandardServer::standardInitialisation - complete."); } /************************************************************************** * Sets up and runs and item server **************************************************************************/ @Override public Integer start(String[] args) { try { //initialise everything standardInitialisation( args ); } catch( Exception ex ) { Logger.error(ex); Logger.die("Startup failed"); } return null; } public static void main(String[] args) { AbstractMain.runningAsWrapper = true; server = new StandardServer(); WrapperManager.start( server, args ); } /** * */ @Override public void controlEvent(int event) { if (WrapperManager.isControlledByNativeWrapper()) { // The Wrapper will take care of this event } else { // We are not being controlled by the Wrapper, so // handle the event ourselves. if ((event == WrapperManager.WRAPPER_CTRL_C_EVENT) || (event == WrapperManager.WRAPPER_CTRL_CLOSE_EVENT) || (event == WrapperManager.WRAPPER_CTRL_SHUTDOWN_EVENT)){ WrapperManager.stop(0); } } } /************************************************************************** * Closes all listeners, quits the VM. * This method should be called to kill the server process * e.g. from the NT service wrapper **************************************************************************/ @Override public int stop(int arg0) { WrapperManager.signalStopping(10000); try { Gateway.close(); } catch( Exception ex ) { Logger.error(ex); return 1; } Logger.msg("StandardServer::shutdown - complete. "); return 0; } }