|
What this is
Other links
The source code/* * Sun Public License Notice * * The contents of this file are subject to the Sun Public License * Version 1.0 (the "License"). You may not use this file except in * compliance with the License. A copy of the License is available at * http://www.sun.com/ * * The Original Code is NetBeans. The Initial Developer of the Original * Code is Sun Microsystems, Inc. Portions Copyright 1997-2000 Sun * Microsystems, Inc. All Rights Reserved. */ package org.netbeans.modules.httpserver; import java.util.Enumeration; import java.io.*; import java.net.URL; import java.net.MalformedURLException; import java.net.InetAddress; import java.lang.reflect.InvocationTargetException; import org.openide.modules.ModuleInstall; import org.openide.execution.Executor; import org.openide.execution.NbClassPath; import org.openide.util.NbBundle; import org.openide.TopManager; import org.openide.NotifyDescriptor; import org.openide.ErrorManager; import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.openide.util.SharedClassObject; /** * Module installation class for Http Server * * @author Petr Jiricka */ public class HttpServerModule extends ModuleInstall implements Externalizable { private static Thread serverThread; private static boolean inSetRunning = false; static final long serialVersionUID =8562026516563511530L; /** Module installed again. */ public void restored() { try { org.openide.util.HttpServer.registerServer(httpserverSettings ()); } catch (SecurityException e) {} } /** Module is being closed. */ public void close () { // stop the server, don't set the running status try { org.openide.util.HttpServer.deregisterServer(httpserverSettings ()); } catch (SecurityException e) { // pending - why do I get SecurityException ? } synchronized (HttpServerSettings.httpLock ()) { stopHTTPServer(); } } /** initiates HTTPServer so it runs */ static void initHTTPServer() { if (inSetRunning) return; synchronized (HttpServerSettings.httpLock ()) { if (inSetRunning) return; inSetRunning = true; try { if ((serverThread != null) && (!httpserverSettings ().running)) { // another thread is trying to start the server, wait for a while and then stop it if it's still bad try { Thread.currentThread().sleep(2000); } catch (InterruptedException e) {} if ((serverThread != null) && (!httpserverSettings ().running)) { serverThread.stop(); serverThread = null; } } if (serverThread == null) { serverThread = new Thread("HTTPServer") { // NOI18N public void run() { try { TomcatServer.getInstance().start(); httpserverSettings ().runSuccess(); // this is not a debug message, this is a server startup message if (httpserverSettings ().isStartStopMessages()) System.out.println(java.text.MessageFormat.format(NbBundle.getBundle(HttpServerModule.class). getString("CTL_ServerStarted"), new Object[] {new Integer(httpserverSettings ().getPort())})); } catch (ThreadDeath td) { throw td; } catch (Throwable ex) { ex.printStackTrace(); // couldn't start serverThread = null; inSetRunning = false; httpserverSettings ().runFailure(); } finally { httpserverSettings ().setStartStopMessages(true); } } }; serverThread.start(); } // wait for the other thread to start the server try { HttpServerSettings.httpLock ().wait(HttpServerSettings.SERVER_STARTUP_TIMEOUT); } catch (Exception e) { TopManager.getDefault().getErrorManager().notify( ErrorManager.INFORMATIONAL, e); } } finally { inSetRunning = false; } } } /** stops the HTTP server */ static void stopHTTPServer() { if (inSetRunning) return; synchronized (HttpServerSettings.httpLock ()) { if (inSetRunning) return; inSetRunning = true; try { if ( (serverThread != null) && (TomcatServer.getInstance().isRunning() )) { try { TomcatServer.getInstance().stop(); } catch (Exception e) { e.printStackTrace(); serverThread.stop(); /* deprecated, but this really is the last resort, only if everything else failed */ } serverThread = null; // this is not a debug message, this is a server shutdown message if (httpserverSettings ().isStartStopMessages()) System.out.println(NbBundle.getBundle(HttpServerModule.class). getString("CTL_ServerStopped")); } } finally { inSetRunning = false; } } } /** * Obtains settings of this module */ static HttpServerSettings httpserverSettings () { return (HttpServerSettings)SharedClassObject.findObject (HttpServerSettings.class, true); } } |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.