/** * Copyright (c) 2002-2015 "Neo Technology," * Network Engine for Objects in Lund AB [http://neotechnology.com] * * This file is part of Neo4j. * * Neo4j is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package org.neo4j.wrapper; import java.util.logging.Level; import java.util.logging.Logger; public class NeoServiceWrapper { private static final Logger LOGGER = Logger.getLogger( NeoServiceWrapper.class.getName() ); public static void main( String[] args ) throws Exception { try { new LoggingService().initLogger(); } catch ( Exception e ) { // user should see the log info from terminal even if we failed to create the logging file LOGGER.log( Level.SEVERE, e.toString(), e ); } if ( args.length == 1 ) { launchAsService( args[0] ); } else { launchAsConsoleApp(); } } private static void launchAsService( String serviceName ) { LOGGER.info( "Launched as windows service." ); WindowsService service = new WindowsService( serviceName ); service.init(); Runtime.getRuntime().halt( 0 ); } private static void launchAsConsoleApp() throws Exception { LOGGER.info( "Launched as console application." ); final ServerProcess process = new ServerProcessConsole(); Runtime.getRuntime().addShutdownHook( new Thread( new Runnable() { @Override public void run() { process.stop(); } } ) ); // process.waitFor(); Runtime.getRuntime().halt( 0 ); } }