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.connector.Connector;
021:
022: /**
023: * A <strong>Service</strong> is a group of one or more
024: * <strong>Connectors</strong> that share a single <strong>Container</strong>
025: * to process their incoming requests. This arrangement allows, for example,
026: * a non-SSL and SSL connector to share the same population of web apps.
027: * <p>
028: * A given JVM can contain any number of Service instances; however, they are
029: * completely independent of each other and share only the basic JVM facilities
030: * and classes on the system class path.
031: *
032: * @author Craig R. McClanahan
033: * @version $Revision: 520968 $ $Date: 2007-03-21 19:00:39 +0100 (mer., 21 mars 2007) $
034: */
035:
036: public interface Service {
037:
038: // ------------------------------------------------------------- Properties
039:
040: /**
041: * Return the <code>Container</code> that handles requests for all
042: * <code>Connectors</code> associated with this Service.
043: */
044: public Container getContainer();
045:
046: /**
047: * Set the <code>Container</code> that handles requests for all
048: * <code>Connectors</code> associated with this Service.
049: *
050: * @param container The new Container
051: */
052: public void setContainer(Container container);
053:
054: /**
055: * Return descriptive information about this Service implementation and
056: * the corresponding version number, in the format
057: * <code><description>/<version></code>.
058: */
059: public String getInfo();
060:
061: /**
062: * Return the name of this Service.
063: */
064: public String getName();
065:
066: /**
067: * Set the name of this Service.
068: *
069: * @param name The new service name
070: */
071: public void setName(String name);
072:
073: /**
074: * Return the <code>Server</code> with which we are associated (if any).
075: */
076: public Server getServer();
077:
078: /**
079: * Set the <code>Server</code> with which we are associated (if any).
080: *
081: * @param server The server that owns this Service
082: */
083: public void setServer(Server server);
084:
085: // --------------------------------------------------------- Public Methods
086:
087: /**
088: * Add a new Connector to the set of defined Connectors, and associate it
089: * with this Service's Container.
090: *
091: * @param connector The Connector to be added
092: */
093: public void addConnector(Connector connector);
094:
095: /**
096: * Find and return the set of Connectors associated with this Service.
097: */
098: public Connector[] findConnectors();
099:
100: /**
101: * Remove the specified Connector from the set associated from this
102: * Service. The removed Connector will also be disassociated from our
103: * Container.
104: *
105: * @param connector The Connector to be removed
106: */
107: public void removeConnector(Connector connector);
108:
109: /**
110: * Invoke a pre-startup initialization. This is used to allow connectors
111: * to bind to restricted ports under Unix operating environments.
112: *
113: * @exception LifecycleException If this server was already initialized.
114: */
115: public void initialize() throws LifecycleException;
116:
117: /**
118: * Adds a named executor to the service
119: * @param ex Executor
120: */
121: public void addExecutor(Executor ex);
122:
123: /**
124: * Retrieves all executors
125: * @return Executor[]
126: */
127: public Executor[] findExecutors();
128:
129: /**
130: * Retrieves executor by name, null if not found
131: * @param name String
132: * @return Executor
133: */
134: public Executor getExecutor(String name);
135:
136: /**
137: * Removes an executor from the service
138: * @param ex Executor
139: */
140: public void removeExecutor(Executor ex);
141:
142: }
|