Author: markt Date: Thu Mar 4 19:17:32 2010 New Revision: 919138 URL: http://svn.apache.org/viewvc?rev=919138&view=rev Log: Lifecycle refactoring StandardService - Note use of LifecycleState.MUST_STOP in Catalina to ensure shutdown
Modified: tomcat/trunk/java/org/apache/catalina/core/LocalStrings.properties tomcat/trunk/java/org/apache/catalina/core/LocalStrings_es.properties tomcat/trunk/java/org/apache/catalina/core/LocalStrings_fr.properties tomcat/trunk/java/org/apache/catalina/core/LocalStrings_ja.properties tomcat/trunk/java/org/apache/catalina/core/StandardService.java tomcat/trunk/java/org/apache/catalina/startup/Catalina.java tomcat/trunk/java/org/apache/catalina/startup/Embedded.java tomcat/trunk/java/org/apache/catalina/startup/LocalStrings.properties tomcat/trunk/java/org/apache/catalina/startup/LocalStrings_es.properties tomcat/trunk/java/org/apache/catalina/startup/LocalStrings_fr.properties tomcat/trunk/java/org/apache/catalina/startup/LocalStrings_ja.properties Modified: tomcat/trunk/java/org/apache/catalina/core/LocalStrings.properties URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/LocalStrings.properties?rev=919138&r1=919137&r2=919138&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/core/LocalStrings.properties (original) +++ tomcat/trunk/java/org/apache/catalina/core/LocalStrings.properties Thu Mar 4 19:17:32 2010 @@ -195,9 +195,7 @@ standardService.initialize.failed=Service initializing at {0} failed standardService.register.failed=Error registering Service at domain {0} standardService.start.name=Starting service {0} -standardService.start.started=This service has already been started standardService.stop.name=Stopping service {0} -standardService.stop.notStarted=This service has not yet been started standardWrapper.allocate=Error allocating a servlet instance standardWrapper.allocateException=Allocate exception for servlet {0} standardWrapper.containerServlet=Loading container servlet {0} Modified: tomcat/trunk/java/org/apache/catalina/core/LocalStrings_es.properties URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/LocalStrings_es.properties?rev=919138&r1=919137&r2=919138&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/core/LocalStrings_es.properties (original) +++ tomcat/trunk/java/org/apache/catalina/core/LocalStrings_es.properties Thu Mar 4 19:17:32 2010 @@ -170,9 +170,7 @@ standardService.initialize.failed = Servicio inicializando en {0} fall\u00F3 standardService.register.failed = Error registrando servicio en dominio {0} standardService.start.name = Arrancando servicio {0} -standardService.start.started = Ya ha sido arrancado este sercicio standardService.stop.name = Parando servicio {0} -standardService.stop.notStarted = A\u00FAn no se ha arrancado este servicio standardWrapper.allocate = Error reservando espacio para una instancia de servlet standardWrapper.allocateException = Excepci\u00F3n de reserva de espacio para servlet {0} standardWrapper.containerServlet = Cargando servlet de contenedor {0} Modified: tomcat/trunk/java/org/apache/catalina/core/LocalStrings_fr.properties URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/LocalStrings_fr.properties?rev=919138&r1=919137&r2=919138&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/core/LocalStrings_fr.properties (original) +++ tomcat/trunk/java/org/apache/catalina/core/LocalStrings_fr.properties Thu Mar 4 19:17:32 2010 @@ -141,9 +141,7 @@ standardServer.initialize.initialized=Ce serveur a d\u00e9j\u00e0 \u00e9t\u00e9 initialis\u00e9 standardService.initialize.initialized=Ce service a d\u00e9j\u00e0 \u00e9t\u00e9 initialis\u00e9 standardService.start.name=D\u00e9marrage du service {0} -standardService.start.started=Ce service a d\u00e9j\u00e0 \u00e9t\u00e9 d\u00e9marr\u00e9 standardService.stop.name=Arr\u00eat du service {0} -standardService.stop.notStarted=Ce service n''a pas encore \u00e9t\u00e9 d\u00e9marr\u00e9 standardWrapper.allocate=Erreur d''allocation \u00e0 une instance de servlet standardWrapper.allocateException=Exception lors de l''allocation pour la servlet {0} standardWrapper.containerServlet=Chargement du conteneur (container) de servlet {0} Modified: tomcat/trunk/java/org/apache/catalina/core/LocalStrings_ja.properties URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/LocalStrings_ja.properties?rev=919138&r1=919137&r2=919138&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/core/LocalStrings_ja.properties (original) +++ tomcat/trunk/java/org/apache/catalina/core/LocalStrings_ja.properties Thu Mar 4 19:17:32 2010 @@ -148,9 +148,7 @@ standardServer.initialize.initialized=\u3053\u306e\u30b5\u30fc\u30d0\u306f\u65e2\u306b\u521d\u671f\u5316\u3055\u308c\u3066\u3044\u307e\u3059 standardService.initialize.initialized=\u3053\u306e\u30b5\u30fc\u30d3\u30b9\u306f\u65e2\u306b\u521d\u671f\u5316\u3055\u308c\u3066\u3044\u307e\u3059 standardService.start.name=\u30b5\u30fc\u30d3\u30b9 {0} \u3092\u8d77\u52d5\u3057\u307e\u3059 -standardService.start.started=\u3053\u306e\u30b5\u30fc\u30d3\u30b9\u306f\u65e2\u306b\u8d77\u52d5\u3055\u308c\u3066\u3044\u307e\u3059 standardService.stop.name=\u30b5\u30fc\u30d3\u30b9 {0} \u3092\u505c\u6b62\u3057\u307e\u3059 -standardService.stop.notStarted=\u3053\u306e\u30b5\u30fc\u30d3\u30b9\u306f\u307e\u3060\u8d77\u52d5\u3055\u308c\u3066\u3044\u307e\u305b\u3093 standardWrapper.allocate=\u30b5\u30fc\u30d6\u30ec\u30c3\u30c8\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u5272\u308a\u5f53\u3066\u4e2d\u306e\u30a8\u30e9\u30fc\u3067\u3059 standardWrapper.allocateException=\u30b5\u30fc\u30d6\u30ec\u30c3\u30c8 {0} \u306b\u4f8b\u5916\u3092\u5272\u308a\u5f53\u3066\u307e\u3059 standardWrapper.containerServlet=\u30b3\u30f3\u30c6\u30ca\u30b5\u30fc\u30d6\u30ec\u30c3\u30c8 {0} \u3092\u30ed\u30fc\u30c9\u3057\u307e\u3059 Modified: tomcat/trunk/java/org/apache/catalina/core/StandardService.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/StandardService.java?rev=919138&r1=919137&r2=919138&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/core/StandardService.java (original) +++ tomcat/trunk/java/org/apache/catalina/core/StandardService.java Thu Mar 4 19:17:32 2010 @@ -28,11 +28,11 @@ import org.apache.catalina.Engine; import org.apache.catalina.Lifecycle; import org.apache.catalina.LifecycleException; -import org.apache.catalina.LifecycleListener; +import org.apache.catalina.LifecycleState; import org.apache.catalina.Server; import org.apache.catalina.Service; import org.apache.catalina.connector.Connector; -import org.apache.catalina.util.LifecycleSupport; +import org.apache.catalina.util.LifecycleBase; import org.apache.tomcat.util.res.StringManager; import org.apache.juli.logging.Log; import org.apache.juli.logging.LogFactory; @@ -49,7 +49,8 @@ * @author Craig R. McClanahan */ -public class StandardService implements Service, MBeanRegistration { +public class StandardService extends LifecycleBase + implements Service, MBeanRegistration { private static final Log log = LogFactory.getLog(StandardService.class); @@ -71,12 +72,6 @@ /** - * The lifecycle event support for this component. - */ - private LifecycleSupport lifecycle = new LifecycleSupport(this); - - - /** * The string manager for this package. */ private static final StringManager sm = @@ -88,12 +83,6 @@ private Server server = null; /** - * Has this component been started? - */ - private boolean started = false; - - - /** * The property change support for this component. */ protected PropertyChangeSupport support = new PropertyChangeSupport(this); @@ -151,7 +140,7 @@ this.container = container; if ((this.container != null) && (this.container instanceof Engine)) ((Engine) this.container).setService(this); - if (started && (this.container != null)) { + if (getState().isAvailable() && (this.container != null)) { try { this.container.start(); } catch (LifecycleException e) { @@ -162,7 +151,7 @@ for (int i = 0; i < connectors.length; i++) connectors[i].setContainer(this.container); } - if (started && (oldContainer != null)) { + if (getState().isAvailable() && (oldContainer != null)) { try { oldContainer.stop(); } catch (LifecycleException e) { @@ -266,7 +255,7 @@ } } - if (started) { + if (getState().isAvailable()) { try { ((Lifecycle) connector).start(); } catch (LifecycleException e) { @@ -330,7 +319,7 @@ } if (j < 0) return; - if (started) { + if (getState().isAvailable()) { try { ((Lifecycle) connectors[j]).stop(); } catch (LifecycleException e) { @@ -380,43 +369,6 @@ } - // ------------------------------------------------------ Lifecycle Methods - - - /** - * Add a LifecycleEvent listener to this component. - * - * @param listener The listener to add - */ - public void addLifecycleListener(LifecycleListener listener) { - - lifecycle.addLifecycleListener(listener); - - } - - - /** - * Get the lifecycle listeners associated with this lifecycle. If this - * Lifecycle has no listeners registered, a zero-length array is returned. - */ - public LifecycleListener[] findLifecycleListeners() { - - return lifecycle.findLifecycleListeners(); - - } - - - /** - * Remove a LifecycleEvent listener from this component. - * - * @param listener The listener to remove - */ - public void removeLifecycleListener(LifecycleListener listener) { - - lifecycle.removeLifecycleListener(listener); - - } - /** * Adds a named executor to the service * @param ex Executor @@ -425,7 +377,7 @@ synchronized (executors) { if (!executors.contains(ex)) { executors.add(ex); - if (started) + if (getState().isAvailable()) try { ex.start(); } catch (LifecycleException x) { @@ -468,7 +420,7 @@ */ public void removeExecutor(Executor ex) { synchronized (executors) { - if ( executors.remove(ex) && started ) { + if ( executors.remove(ex) && getState().isAvailable() ) { try { ex.stop(); } catch (LifecycleException e) { @@ -481,33 +433,21 @@ /** - * Prepare for the beginning of active use of the public methods of this - * component. This method should be called before any of the public - * methods of this component are utilized. It should also send a - * LifecycleEvent of type START_EVENT to any registered listeners. + * Start nested components ({...@link Executor}s, {...@link Connector}s and + * {...@link Container}s) and implement the requirements of + * {...@link LifecycleBase#startInternal()}. * * @exception LifecycleException if this component detects a fatal error * that prevents this component from being used */ - public void start() throws LifecycleException { + protected void startInternal() throws LifecycleException { - // Validate and update our current component state - if (started) { - if (log.isInfoEnabled()) { - log.info(sm.getString("standardService.start.started")); - } - return; - } - if( ! initialized ) init(); - // Notify our interested LifecycleListeners - lifecycle.fireLifecycleEvent(BEFORE_START_EVENT, null); if(log.isInfoEnabled()) log.info(sm.getString("standardService.start.name", this.name)); - lifecycle.fireLifecycleEvent(START_EVENT, null); - started = true; + setState(LifecycleState.STARTING); // Start our defined Container first if (container != null) { @@ -528,31 +468,18 @@ ((Lifecycle) connectors[i]).start(); } } - - // Notify our interested LifecycleListeners - lifecycle.fireLifecycleEvent(AFTER_START_EVENT, null); - } /** - * Gracefully terminate the active use of the public methods of this - * component. This method should be the last one called on a given - * instance of this component. It should also send a LifecycleEvent - * of type STOP_EVENT to any registered listeners. + * Stop nested components ({...@link Executor}s, {...@link Connector}s and + * {...@link Container}s) and implement the requirements of + * {...@link LifecycleBase#stopInternal()}. * * @exception LifecycleException if this component detects a fatal error * that needs to be reported */ - public void stop() throws LifecycleException { - - // Validate and update our current component state - if (!started) { - return; - } - - // Notify our interested LifecycleListeners - lifecycle.fireLifecycleEvent(BEFORE_STOP_EVENT, null); + protected void stopInternal() throws LifecycleException { // Stop our defined Connectors first synchronized (connectors) { @@ -568,11 +495,9 @@ // Ignore } - lifecycle.fireLifecycleEvent(STOP_EVENT, null); if(log.isInfoEnabled()) - log.info - (sm.getString("standardService.stop.name", this.name)); - started = false; + log.info(sm.getString("standardService.stop.name", this.name)); + setState(LifecycleState.STOPPING); // Stop our defined Container second if (container != null) { @@ -610,11 +535,6 @@ } } } - - - // Notify our interested LifecycleListeners - lifecycle.fireLifecycleEvent(AFTER_STOP_EVENT, null); - } @@ -673,7 +593,7 @@ } public void destroy() throws LifecycleException { - if( started ) stop(); + if(getState().isAvailable()) stop(); // FIXME unregister should be here probably -- stop doing that ? } Modified: tomcat/trunk/java/org/apache/catalina/startup/Catalina.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/startup/Catalina.java?rev=919138&r1=919137&r2=919138&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/startup/Catalina.java (original) +++ tomcat/trunk/java/org/apache/catalina/startup/Catalina.java Thu Mar 4 19:17:32 2010 @@ -32,6 +32,7 @@ import org.apache.catalina.Container; import org.apache.catalina.LifecycleException; +import org.apache.catalina.LifecycleState; import org.apache.catalina.core.StandardServer; import org.apache.juli.ClassLoaderLogManager; import org.apache.tomcat.util.digester.Digester; @@ -542,7 +543,7 @@ * Start a new server instance. */ @Override - public void start() { + protected void startInternal() { if (getServer() == null) { load(); @@ -554,7 +555,10 @@ } long t1 = System.nanoTime(); - + + setState(LifecycleState.STARTING); + lifecycle.fireLifecycleEvent(START_EVENT, null); + // Start the new server try { getServer().start(); @@ -589,8 +593,10 @@ } if (await) { + setState(LifecycleState.STARTED); + fireLifecycleEvent(AFTER_START_EVENT, null); await(); - stop(); + setState(LifecycleState.MUST_STOP); } } @@ -600,7 +606,10 @@ * Stop an existing server instance. */ @Override - public void stop() { + protected void stopInternal() { + + fireLifecycleEvent(STOP_EVENT, null); + setState(LifecycleState.STOPPING); try { // Remove the ShutdownHook first so that server.stop() @@ -667,7 +676,11 @@ public void run() { if (getServer() != null) { - Catalina.this.stop(); + try { + Catalina.this.stop(); + } catch (LifecycleException e) { + log.error(sm.getString("catalina.shutdownHookFail"), e); + } } // If JULI is used, shut JULI down *after* the server shuts down Modified: tomcat/trunk/java/org/apache/catalina/startup/Embedded.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/startup/Embedded.java?rev=919138&r1=919137&r2=919138&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/startup/Embedded.java (original) +++ tomcat/trunk/java/org/apache/catalina/startup/Embedded.java Thu Mar 4 19:17:32 2010 @@ -32,6 +32,7 @@ import org.apache.catalina.Lifecycle; import org.apache.catalina.LifecycleException; import org.apache.catalina.LifecycleListener; +import org.apache.catalina.LifecycleState; import org.apache.catalina.Loader; import org.apache.catalina.Realm; import org.apache.catalina.Valve; @@ -42,6 +43,7 @@ import org.apache.catalina.core.StandardService; import org.apache.catalina.loader.WebappLoader; import org.apache.catalina.security.SecurityConfig; +import org.apache.catalina.util.LifecycleBase; import org.apache.catalina.util.LifecycleSupport; import org.apache.tomcat.util.res.StringManager; import org.apache.juli.logging.Log; @@ -188,11 +190,6 @@ /** - * Has this component been started yet? - */ - protected boolean started = false; - - /** * Use await. */ protected boolean await = false; @@ -347,7 +344,7 @@ engines = results; // Start this Engine if necessary - if (started) { + if (getState().isAvailable()) { try { engine.start(); } catch (LifecycleException e) { @@ -796,15 +793,14 @@ /** - * Prepare for the beginning of active use of the public methods of this - * component. This method should be called after <code>configure()</code>, - * and before any of the public methods of the component are utilized. + * Start nested components ({...@link Connector}s and {...@link Engine}s) and + * implement the requirements of {...@link LifecycleBase#startInternal()}. * * @exception LifecycleException if this component detects a fatal error * that prevents this component from being used */ @Override - public void start() throws LifecycleException { + protected void startInternal() throws LifecycleException { if( log.isInfoEnabled() ) log.info("Starting tomcat server"); @@ -815,12 +811,8 @@ // Initialize some naming specific properties initNaming(); - // Validate and update our current component state - if (started) - throw new LifecycleException - (sm.getString("embedded.alreadyStarted")); + setState(LifecycleState.STARTING); lifecycle.fireLifecycleEvent(START_EVENT, null); - started = true; initialized = true; // Start our defined Engines first @@ -838,25 +830,20 @@ /** - * Gracefully terminate the active use of the public methods of this - * component. This method should be the last one called on a given - * instance of this component. + * Stop nested components ({...@link Connector}s and {...@link Engine}s) and + * implement the requirements of {...@link LifecycleBase#stopInternal()}. * * @exception LifecycleException if this component detects a fatal error * that needs to be reported */ @Override - public void stop() throws LifecycleException { + protected void stopInternal() throws LifecycleException { if( log.isDebugEnabled() ) log.debug("Stopping embedded server"); - // Validate and update our current component state - if (!started) - throw new LifecycleException - (sm.getString("embedded.notStarted")); - lifecycle.fireLifecycleEvent(STOP_EVENT, null); - started = false; + fireLifecycleEvent(STOP_EVENT, null); + setState(LifecycleState.STARTING); // Stop our defined Connectors first for (int i = 0; i < connectors.length; i++) { Modified: tomcat/trunk/java/org/apache/catalina/startup/LocalStrings.properties URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/startup/LocalStrings.properties?rev=919138&r1=919137&r2=919138&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/startup/LocalStrings.properties (original) +++ tomcat/trunk/java/org/apache/catalina/startup/LocalStrings.properties Thu Mar 4 19:17:32 2010 @@ -13,6 +13,7 @@ # See the License for the specific language governing permissions and # limitations under the License. +catalina.shutdownHookFail=The shutdown hook experienced an error while trying to stop the server catalina.stopServer=No shutdown port configured. Shut down server through OS signal. Server not shut down. contextConfig.altDDNotFound=alt-dd file {0} not found contextConfig.applicationUrl=Unable to determine URL for application web.xml @@ -54,10 +55,8 @@ contextConfig.urlPatternValue=Both the UrlPattern and value attribute were set for the WebServlet annotation on class [{0}] contextConfig.webinfClassesUrl=Unable to determine URL for WEB-INF/classes contextConfig.xmlSettings=Context [{0}] will parse web.xml and web-fragment.xml files with validation:{1} and namespaceAware:{2} -embedded.alreadyStarted=Embedded service has already been started embedded.noEngines=No engines have been defined yet embedded.notmp=Cannot find specified temporary folder at {0} -embedded.notStarted=Embedded service has not yet been started embedded.authenticatorNotInstanceOfValve=Specified Authenticator is not a Valve engineConfig.cce=Lifecycle event data object {0} is not an Engine engineConfig.start=EngineConfig: Processing START Modified: tomcat/trunk/java/org/apache/catalina/startup/LocalStrings_es.properties URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/startup/LocalStrings_es.properties?rev=919138&r1=919137&r2=919138&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/startup/LocalStrings_es.properties (original) +++ tomcat/trunk/java/org/apache/catalina/startup/LocalStrings_es.properties Thu Mar 4 19:17:32 2010 @@ -34,10 +34,8 @@ contextConfig.start = "ContextConfig"\: Tratamiento del "START" contextConfig.stop = "ContextConfig"\: Tratamiento del "STOP" contextConfig.unavailable = Esta aplicaci\u00F3n est\u00E1 marcada como no disponible debido a los errores precedentes -embedded.alreadyStarted = El servicio embebido (embedded service) ya ha sido arrancado embedded.noEngines = Alg\u00FAn motor (engine) no ha sido a\u00FAn definido embedded.notmp = No puedo hallar carpeta temporal especificada en {0} -embedded.notStarted = El servicio embebido (embedded service) a\u00FAn no ha sido arrancado embedded.authenticatorNotInstanceOfValve = El Autenticado especificado no es un V\u00E1lvula engineConfig.cce = El objeto de los datos de evento de ciclo de vida (Lifecycle event data object) {0} no es un motor (engine) engineConfig.start = "EngineConfig"\: Tratamiento del "START" Modified: tomcat/trunk/java/org/apache/catalina/startup/LocalStrings_fr.properties URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/startup/LocalStrings_fr.properties?rev=919138&r1=919137&r2=919138&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/startup/LocalStrings_fr.properties (original) +++ tomcat/trunk/java/org/apache/catalina/startup/LocalStrings_fr.properties Thu Mar 4 19:17:32 2010 @@ -29,9 +29,7 @@ contextConfig.start="ContextConfig": Traitement du "START" contextConfig.stop="ContextConfig": Traitement du "STOP" contextConfig.unavailable=Cette application est marqu\u00e9e comme non disponible suite aux erreurs pr\u00e9c\u00e9dentes -embedded.alreadyStarted=Le service enfoui (embedded service) a d\u00e9j\u00e0 \u00e9t\u00e9 d\u00e9marr\u00e9 embedded.noEngines=Aucun moteur (engine) n''a encore \u00e9t\u00e9 d\u00e9fini -embedded.notStarted=Le service enfoui (embedded service) n''a pas encore \u00e9t\u00e9 d\u00e9marr\u00e9 engineConfig.cce=L''objet donn\u00e9e \u00e9v\u00e8nement cycle de vie (Lifecycle event data object) {0} n''est pas un moteur (engine) engineConfig.start="EngineConfig": Traitement du "START" engineConfig.stop="EngineConfig": Traitement du "STOP" Modified: tomcat/trunk/java/org/apache/catalina/startup/LocalStrings_ja.properties URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/startup/LocalStrings_ja.properties?rev=919138&r1=919137&r2=919138&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/startup/LocalStrings_ja.properties (original) +++ tomcat/trunk/java/org/apache/catalina/startup/LocalStrings_ja.properties Thu Mar 4 19:17:32 2010 @@ -29,9 +29,7 @@ contextConfig.start=ContextConfig: \u51e6\u7406\u3092\u958b\u59cb\u3057\u307e\u3059 contextConfig.stop=ContextConfig: \u51e6\u7406\u3092\u505c\u6b62\u3057\u307e\u3059 contextConfig.unavailable=\u524d\u306e\u30a8\u30e9\u30fc\u306e\u305f\u3081\u306b\u3053\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306f\u5229\u7528\u3067\u304d\u306a\u3044\u3088\u3046\u306b\u30de\u30fc\u30af\u3057\u307e\u3059 -embedded.alreadyStarted=\u7d44\u307f\u8fbc\u307f\u30b5\u30fc\u30d3\u30b9\u306f\u65e2\u306b\u8d77\u52d5\u3055\u308c\u3066\u3044\u307e\u3059 embedded.noEngines=\u307e\u3060\u30a8\u30f3\u30b8\u30f3\u304c\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u307e\u305b\u3093 -embedded.notStarted=\u7d44\u307f\u8fbc\u307f\u30b5\u30fc\u30d3\u30b9\u306f\u307e\u3060\u8d77\u52d5\u3055\u308c\u3066\u3044\u307e\u305b\u3093 engineConfig.cce=\u30e9\u30a4\u30d5\u30b5\u30a4\u30af\u30eb\u30a4\u30d9\u30f3\u30c8\u30c7\u30fc\u30bf\u30aa\u30d6\u30b8\u30a7\u30af\u30c8 {0} \u306f\u30a8\u30f3\u30b8\u30f3\u3067\u306f\u3042\u308a\u307e\u305b\u3093 engineConfig.start=EngineConfig: \u51e6\u7406\u3092\u958b\u59cb\u3057\u307e\u3059 engineConfig.stop=EngineConfig: \u51e6\u7406\u3092\u505c\u6b62\u3057\u307e\u3059 --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org