All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.lightbody.bmp.proxy.jetty.jetty.win32.Service Maven / Gradle / Ivy

The newest version!
// ========================================================================
// $Id: Service.java,v 1.8 2005/08/13 00:01:27 gregwilkins Exp $
// Copyright 1999-2004 Mort Bay Consulting Pty. Ltd.
// ------------------------------------------------------------------------
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at 
// http://www.apache.org/licenses/LICENSE-2.0
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// ========================================================================

package net.lightbody.bmp.proxy.jetty.jetty.win32;

import net.lightbody.bmp.proxy.jetty.http.HttpServer;
import net.lightbody.bmp.proxy.jetty.jetty.Server;
import net.lightbody.bmp.proxy.jetty.log.LogFactory;
import net.lightbody.bmp.proxy.jetty.util.LogSupport;
import org.apache.commons.logging.Log;

import java.io.File;
import java.io.FileOutputStream;
import java.io.PrintStream;
import java.util.Vector;

/* ------------------------------------------------------------ */
/** Run Jetty as a Win32 service.
 *
 * System.out and System.err output can be controlled with java
 * properties:  SERVICE_OUT and SERVICE_ERR.
 * The log file can be controlled with the property SERVICE_LOG_FILE
 * Derived from SCMEventManager.java by Bill Giel/KC Multimedia and Design Group, Inc.,
 * 

Example

*
 * jettysvc -c -DSERVICE_OUT="./logs/jettysvc.out" \\
 *             -DSERVICE_ERR="./logs/jettysvc.err" \\
 *             Jetty.xml wrkdir=$JETTY_HOME
 * 
* * @version $Revision: 1.8 $ * @author Greg Wilkins (gregw) */ public class Service { private static Log log = LogFactory.getLog(Service.class); /* ------------------------------------------------------------ */ static String serviceLogFile= System.getProperty("SERVICE_LOG_FILE","logs"+File.separator+"yyyy_mm_dd.service.log"); /* ------------------------------------------------------------ */ public static final int SERVICE_CONTROL_STOP = 1; public static final int SERVICE_CONTROL_PAUSE = 2; public static final int SERVICE_CONTROL_CONTINUE = 3; public static final int SERVICE_CONTROL_INTERROGATE = 4; public static final int SERVICE_CONTROL_SHUTDOWN = 5; public static final int SERVICE_CONTROL_PARAMCHANGE = 6; /* ------------------------------------------------------------ */ private static Vector _servers; private static Vector _configs; /* ------------------------------------------------------------ */ /** Constructor. */ private Service() {} /* ------------------------------------------------------------ */ public static void dispatchSCMEvent(int eventID) { switch(eventID) { case SERVICE_CONTROL_STOP: case SERVICE_CONTROL_PAUSE: stopAll(); break; case SERVICE_CONTROL_CONTINUE : startAll(); break; case SERVICE_CONTROL_SHUTDOWN: destroyAll(); break; case SERVICE_CONTROL_PARAMCHANGE: stopAll(); destroyAll(); createAll(); startAll(); break; default: break; } } /* ------------------------------------------------------------ */ private static void createAll() { if (_configs!=null) { synchronized(_configs) { _servers=new Vector(); for(int i=0;i<_configs.size();i++) { try { Server server = new Server((String)_configs.get(i)); _servers.add(server); } catch(Exception e) { log.warn(_configs.get(i)+" configuration problem: ",e); } } } } } /* ------------------------------------------------------------ */ private static void startAll() { try { if (_configs!=null) { synchronized(_configs) { for(int i=0;i<_servers.size();i++) { HttpServer server = (HttpServer)_servers.get(i); if (!server.isStarted()) server.start(); } } } } catch(Exception e) { log.warn(LogSupport.EXCEPTION,e); } } /* ------------------------------------------------------------ */ private static void stopAll() { if (_configs!=null) { synchronized(_configs) { for(int i=0;i<_servers.size();i++) { HttpServer server = (HttpServer)_servers.get(i); try{server.stop();}catch(InterruptedException e){} } } } } /* ------------------------------------------------------------ */ private static void destroyAll() { stopAll(); if (_servers!=null) _servers.clear(); _servers=null; } /* ------------------------------------------------------------ */ public static void stopAndDestroy(String[] arg) { if (arg==null || arg.length==0) { stopAll(); destroyAll(); } else { log.warn(LogSupport.NOT_IMPLEMENTED); } } /* ------------------------------------------------------------ */ public static void main(String[] arg) { String opt; opt = System.getProperty("SERVICE_OUT"); if (opt != null) { try { PrintStream stdout = new PrintStream(new FileOutputStream(opt)); System.setOut(stdout); } catch(Exception e){log.warn(LogSupport.EXCEPTION,e);} } opt = System.getProperty("SERVICE_ERR"); if (opt != null) { try { PrintStream stderr = new PrintStream(new FileOutputStream(opt)); System.setErr(stderr); } catch(Exception e){log.warn(LogSupport.EXCEPTION,e);} } if (arg.length==0) arg=new String[] {"etc/jetty.xml"}; try { _configs=new Vector(); for (int i=0;i




© 2015 - 2024 Weber Informatics LLC | Privacy Policy