/* * Copyright 2003-2006 Rick Knowles <winstone-devel at lists sourceforge net> * Distributed under the terms of either: * - the common development and distribution license (CDDL), v1.0; or * - the GNU Lesser General Public License, v2.1 or later */ package winstone; import org.eclipse.jetty.server.Server; import winstone.cmdline.Option; import java.io.File; import java.io.IOException; import java.util.Hashtable; import java.util.Map; /** * Manages the references to individual hosts within the container. This object handles * the mapping of ip addresses and hostnames to groups of webapps, and init and * shutdown of any hosts it manages. * * @author <a href="mailto:rick_knowles@hotmail.com">Rick Knowles</a> * @version $Id: HostGroup.java,v 1.4 2006/03/24 17:24:21 rickknowles Exp $ */ public class HostGroup { private final static String DEFAULT_HOSTNAME = "default"; private final Server server; // private Map args; private Map hostConfigs; private String defaultHostName; public HostGroup( Server server, ClassLoader commonLibCL, File commonLibCLPaths[], Map args) throws IOException { this.server = server; // this.args = args; this.hostConfigs = new Hashtable(); // Is this the single or multiple configuration ? Check args File webappsDir = Option.WEBAPPS_DIR.get(args); // If host mode initHost(webappsDir, DEFAULT_HOSTNAME, commonLibCL, commonLibCLPaths, args); this.defaultHostName = DEFAULT_HOSTNAME; Logger.log(Logger.DEBUG, Launcher.RESOURCES, "HostGroup.InitSingleComplete", this.hostConfigs.size() + "", this.hostConfigs.keySet() + ""); } public HostConfiguration getHostByName(String hostname) { if ((hostname != null) && (this.hostConfigs.size() > 1)) { HostConfiguration host = (HostConfiguration) this.hostConfigs.get(hostname); if (host != null) { return host; } } return (HostConfiguration) this.hostConfigs.get(this.defaultHostName); } protected void initHost(File webappsDir, String hostname, ClassLoader commonLibCL, File commonLibCLPaths[], Map args) throws IOException { Logger.log(Logger.DEBUG, Launcher.RESOURCES, "HostGroup.DeployingHost", hostname); HostConfiguration config = new HostConfiguration(server, hostname, commonLibCL, commonLibCLPaths, args, webappsDir); this.hostConfigs.put(hostname, config); } }