|  | /* | 
|  | * Licensed to the Apache Software Foundation (ASF) under one or more | 
|  | * contributor license agreements.  See the NOTICE file distributed with | 
|  | * this work for additional information regarding copyright ownership. | 
|  | * The ASF licenses this file to You under the Apache License, Version 2.0 | 
|  | * (the "License"); you may not use this file except in compliance with | 
|  | * the License.  You may obtain a copy of the License at | 
|  | * | 
|  | *      http://www.apache.org/licenses/LICENSE-2.0 | 
|  | * | 
|  | * Unless required by applicable law or agreed to in writing, software | 
|  | * distributed under the License is distributed on an "AS IS" BASIS, | 
|  | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 
|  | * See the License for the specific language governing permissions and | 
|  | * limitations under the License. | 
|  | */ | 
|  |  | 
|  |  | 
|  | package org.apache.catalina; | 
|  |  | 
|  | import org.apache.catalina.connector.Connector; | 
|  | import org.apache.catalina.mapper.Mapper; | 
|  |  | 
|  | /** | 
|  | * A <strong>Service</strong> is a group of one or more | 
|  | * <strong>Connectors</strong> that share a single <strong>Container</strong> | 
|  | * to process their incoming requests.  This arrangement allows, for example, | 
|  | * a non-SSL and SSL connector to share the same population of web apps. | 
|  | * <p> | 
|  | * A given JVM can contain any number of Service instances; however, they are | 
|  | * completely independent of each other and share only the basic JVM facilities | 
|  | * and classes on the system class path. | 
|  | * | 
|  | * @author Craig R. McClanahan | 
|  | */ | 
|  | public interface Service extends Lifecycle { | 
|  |  | 
|  | // ------------------------------------------------------------- Properties | 
|  |  | 
|  | /** | 
|  | * @return the <code>Container</code> that handles requests for all | 
|  | * <code>Connectors</code> associated with this Service. | 
|  | * | 
|  | * @deprecated Return value will be narrowed to Engine in Tomcat 9. | 
|  | */ | 
|  | @Deprecated | 
|  | public Container getContainer(); | 
|  |  | 
|  | /** | 
|  | * Set the <code>Container</code> that handles requests for all | 
|  | * <code>Connectors</code> associated with this Service. | 
|  | * | 
|  | * @param container The new Container | 
|  | * | 
|  | * @deprecated Use {@link #setContainer(Engine)} Will be removed in Tomcat | 
|  | *             9. | 
|  | */ | 
|  | @Deprecated | 
|  | public void setContainer(Container container); | 
|  |  | 
|  | /** | 
|  | * Set the <code>Engine</code> that handles requests for all | 
|  | * <code>Connectors</code> associated with this Service. | 
|  | * | 
|  | * @param engine The new Engine | 
|  | */ | 
|  | public void setContainer(Engine engine); | 
|  |  | 
|  | /** | 
|  | * @return the name of this Service. | 
|  | */ | 
|  | public String getName(); | 
|  |  | 
|  | /** | 
|  | * Set the name of this Service. | 
|  | * | 
|  | * @param name The new service name | 
|  | */ | 
|  | public void setName(String name); | 
|  |  | 
|  | /** | 
|  | * @return the <code>Server</code> with which we are associated (if any). | 
|  | */ | 
|  | public Server getServer(); | 
|  |  | 
|  | /** | 
|  | * Set the <code>Server</code> with which we are associated (if any). | 
|  | * | 
|  | * @param server The server that owns this Service | 
|  | */ | 
|  | public void setServer(Server server); | 
|  |  | 
|  | /** | 
|  | * @return the parent class loader for this component. If not set, return | 
|  | * {@link #getServer()} {@link Server#getParentClassLoader()}. If no server | 
|  | * has been set, return the system class loader. | 
|  | */ | 
|  | public ClassLoader getParentClassLoader(); | 
|  |  | 
|  | /** | 
|  | * Set the parent class loader for this service. | 
|  | * | 
|  | * @param parent The new parent class loader | 
|  | */ | 
|  | public void setParentClassLoader(ClassLoader parent); | 
|  |  | 
|  | /** | 
|  | * @return the domain under which this container will be / has been | 
|  | * registered. | 
|  | */ | 
|  | public String getDomain(); | 
|  |  | 
|  |  | 
|  | // --------------------------------------------------------- Public Methods | 
|  |  | 
|  | /** | 
|  | * Add a new Connector to the set of defined Connectors, and associate it | 
|  | * with this Service's Container. | 
|  | * | 
|  | * @param connector The Connector to be added | 
|  | */ | 
|  | public void addConnector(Connector connector); | 
|  |  | 
|  | /** | 
|  | * Find and return the set of Connectors associated with this Service. | 
|  | * | 
|  | * @return the set of associated Connectors | 
|  | */ | 
|  | public Connector[] findConnectors(); | 
|  |  | 
|  | /** | 
|  | * Remove the specified Connector from the set associated from this | 
|  | * Service.  The removed Connector will also be disassociated from our | 
|  | * Container. | 
|  | * | 
|  | * @param connector The Connector to be removed | 
|  | */ | 
|  | public void removeConnector(Connector connector); | 
|  |  | 
|  | /** | 
|  | * Adds a named executor to the service | 
|  | * @param ex Executor | 
|  | */ | 
|  | public void addExecutor(Executor ex); | 
|  |  | 
|  | /** | 
|  | * Retrieves all executors | 
|  | * @return Executor[] | 
|  | */ | 
|  | public Executor[] findExecutors(); | 
|  |  | 
|  | /** | 
|  | * Retrieves executor by name, null if not found | 
|  | * @param name String | 
|  | * @return Executor | 
|  | */ | 
|  | public Executor getExecutor(String name); | 
|  |  | 
|  | /** | 
|  | * Removes an executor from the service | 
|  | * @param ex Executor | 
|  | */ | 
|  | public void removeExecutor(Executor ex); | 
|  |  | 
|  | /** | 
|  | * @return the mapper associated with this Service. | 
|  | */ | 
|  | Mapper getMapper(); | 
|  | } |