001: /*
002: * Licensed to the Apache Software Foundation (ASF) under one or more
003: * contributor license agreements. See the NOTICE file distributed with
004: * this work for additional information regarding copyright ownership.
005: * The ASF licenses this file to You under the Apache License, Version 2.0
006: * (the "License"); you may not use this file except in compliance with
007: * the License. You may obtain a copy of the License at
008: *
009: * http://www.apache.org/licenses/LICENSE-2.0
010: *
011: * Unless required by applicable law or agreed to in writing, software
012: * distributed under the License is distributed on an "AS IS" BASIS,
013: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014: * See the License for the specific language governing permissions and
015: * limitations under the License.
016: */
017:
018: package org.apache.catalina;
019:
020: import org.apache.catalina.deploy.NamingResources;
021:
022: /**
023: * A <code>Server</code> element represents the entire Catalina
024: * servlet container. Its attributes represent the characteristics of
025: * the servlet container as a whole. A <code>Server</code> may contain
026: * one or more <code>Services</code>, and the top level set of naming
027: * resources.
028: * <p>
029: * Normally, an implementation of this interface will also implement
030: * <code>Lifecycle</code>, such that when the <code>start()</code> and
031: * <code>stop()</code> methods are called, all of the defined
032: * <code>Services</code> are also started or stopped.
033: * <p>
034: * In between, the implementation must open a server socket on the port number
035: * specified by the <code>port</code> property. When a connection is accepted,
036: * the first line is read and compared with the specified shutdown command.
037: * If the command matches, shutdown of the server is initiated.
038: * <p>
039: * <strong>NOTE</strong> - The concrete implementation of this class should
040: * register the (singleton) instance with the <code>ServerFactory</code>
041: * class in its constructor(s).
042: *
043: * @author Craig R. McClanahan
044: * @version $Revision: 467222 $ $Date: 2006-10-24 05:17:11 +0200 (mar., 24 oct. 2006) $
045: */
046:
047: public interface Server {
048:
049: // ------------------------------------------------------------- Properties
050:
051: /**
052: * Return descriptive information about this Server implementation and
053: * the corresponding version number, in the format
054: * <code><description>/<version></code>.
055: */
056: public String getInfo();
057:
058: /**
059: * Return the global naming resources.
060: */
061: public NamingResources getGlobalNamingResources();
062:
063: /**
064: * Set the global naming resources.
065: *
066: * @param globalNamingResources The new global naming resources
067: */
068: public void setGlobalNamingResources(
069: NamingResources globalNamingResources);
070:
071: /**
072: * Return the port number we listen to for shutdown commands.
073: */
074: public int getPort();
075:
076: /**
077: * Set the port number we listen to for shutdown commands.
078: *
079: * @param port The new port number
080: */
081: public void setPort(int port);
082:
083: /**
084: * Return the shutdown command string we are waiting for.
085: */
086: public String getShutdown();
087:
088: /**
089: * Set the shutdown command we are waiting for.
090: *
091: * @param shutdown The new shutdown command
092: */
093: public void setShutdown(String shutdown);
094:
095: // --------------------------------------------------------- Public Methods
096:
097: /**
098: * Add a new Service to the set of defined Services.
099: *
100: * @param service The Service to be added
101: */
102: public void addService(Service service);
103:
104: /**
105: * Wait until a proper shutdown command is received, then return.
106: */
107: public void await();
108:
109: /**
110: * Return the specified Service (if it exists); otherwise return
111: * <code>null</code>.
112: *
113: * @param name Name of the Service to be returned
114: */
115: public Service findService(String name);
116:
117: /**
118: * Return the set of Services defined within this Server.
119: */
120: public Service[] findServices();
121:
122: /**
123: * Remove the specified Service from the set associated from this
124: * Server.
125: *
126: * @param service The Service to be removed
127: */
128: public void removeService(Service service);
129:
130: /**
131: * Invoke a pre-startup initialization. This is used to allow connectors
132: * to bind to restricted ports under Unix operating environments.
133: *
134: * @exception LifecycleException If this server was already initialized.
135: */
136: public void initialize() throws LifecycleException;
137: }
|