001: /*
002: * Copyright 1999,2004 The Apache Software Foundation.
003: *
004: * Licensed under the Apache License, Version 2.0 (the "License");
005: * you may not use this file except in compliance with the License.
006: * You may obtain a copy of the License at
007: *
008: * http://www.apache.org/licenses/LICENSE-2.0
009: *
010: * Unless required by applicable law or agreed to in writing, software
011: * distributed under the License is distributed on an "AS IS" BASIS,
012: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013: * See the License for the specific language governing permissions and
014: * limitations under the License.
015: */
016:
017: package org.apache.catalina;
018:
019: /**
020: * A <strong>Service</strong> is a group of one or more
021: * <strong>Connectors</strong> that share a single <strong>Container</strong>
022: * to process their incoming requests. This arrangement allows, for example,
023: * a non-SSL and SSL connector to share the same population of web apps.
024: * <p>
025: * A given JVM can contain any number of Service instances; however, they are
026: * completely independent of each other and share only the basic JVM facilities
027: * and classes on the system class path.
028: *
029: * @author Craig R. McClanahan
030: * @version $Revision: 1.2 $ $Date: 2004/02/27 14:58:39 $
031: */
032:
033: public interface Service {
034:
035: // ------------------------------------------------------------- Properties
036:
037: /**
038: * Return the <code>Container</code> that handles requests for all
039: * <code>Connectors</code> associated with this Service.
040: */
041: public Container getContainer();
042:
043: /**
044: * Set the <code>Container</code> that handles requests for all
045: * <code>Connectors</code> associated with this Service.
046: *
047: * @param container The new Container
048: */
049: public void setContainer(Container container);
050:
051: /**
052: * Return descriptive information about this Service 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 name of this Service.
060: */
061: public String getName();
062:
063: /**
064: * Set the name of this Service.
065: *
066: * @param name The new service name
067: */
068: public void setName(String name);
069:
070: /**
071: * Return the <code>Server</code> with which we are associated (if any).
072: */
073: public Server getServer();
074:
075: /**
076: * Set the <code>Server</code> with which we are associated (if any).
077: *
078: * @param server The server that owns this Service
079: */
080: public void setServer(Server server);
081:
082: // --------------------------------------------------------- Public Methods
083:
084: /**
085: * Add a new Connector to the set of defined Connectors, and associate it
086: * with this Service's Container.
087: *
088: * @param connector The Connector to be added
089: */
090: public void addConnector(Connector connector);
091:
092: /**
093: * Find and return the set of Connectors associated with this Service.
094: */
095: public Connector[] findConnectors();
096:
097: /**
098: * Remove the specified Connector from the set associated from this
099: * Service. The removed Connector will also be disassociated from our
100: * Container.
101: *
102: * @param connector The Connector to be removed
103: */
104: public void removeConnector(Connector connector);
105:
106: /**
107: * Invoke a pre-startup initialization. This is used to allow connectors
108: * to bind to restricted ports under Unix operating environments.
109: *
110: * @exception LifecycleException If this server was already initialized.
111: */
112: public void initialize() throws LifecycleException;
113:
114: }
|