This is an automated email from the ASF dual-hosted git repository.

remm pushed a commit to branch 8.5.x
in repository https://gitbox.apache.org/repos/asf/tomcat.git


The following commit(s) were added to refs/heads/8.5.x by this push:
     new b70c765a2b Remove useless synchronized
b70c765a2b is described below

commit b70c765a2be42b128b8e619d370e979dc21fb904
Author: remm <r...@apache.org>
AuthorDate: Thu Jan 18 16:34:43 2024 +0100

    Remove useless synchronized
    
    Internal init, destroy, start and stop are always called by the final
    init, destroy, start and stop method of the lifecycle. These methods are
    synchronized. As a result, synchronized on these methods is useless.
---
 java/org/apache/catalina/authenticator/AuthenticatorBase.java   | 4 ++--
 java/org/apache/catalina/authenticator/DigestAuthenticator.java | 2 +-
 java/org/apache/catalina/authenticator/SSLAuthenticator.java    | 2 +-
 java/org/apache/catalina/authenticator/SingleSignOn.java        | 4 ++--
 java/org/apache/catalina/core/ContainerBase.java                | 4 ++--
 java/org/apache/catalina/core/StandardContext.java              | 4 ++--
 java/org/apache/catalina/core/StandardEngine.java               | 2 +-
 java/org/apache/catalina/core/StandardHost.java                 | 2 +-
 java/org/apache/catalina/core/StandardPipeline.java             | 4 ++--
 java/org/apache/catalina/core/StandardWrapper.java              | 4 ++--
 java/org/apache/catalina/ha/context/ReplicatedContext.java      | 4 ++--
 java/org/apache/catalina/ha/session/BackupManager.java          | 4 ++--
 java/org/apache/catalina/ha/session/DeltaManager.java           | 4 ++--
 java/org/apache/catalina/ha/session/JvmRouteBinderValve.java    | 4 ++--
 java/org/apache/catalina/ha/tcp/ReplicationValve.java           | 2 +-
 java/org/apache/catalina/realm/LockOutRealm.java                | 2 +-
 java/org/apache/catalina/session/PersistentManagerBase.java     | 4 ++--
 java/org/apache/catalina/session/StandardManager.java           | 4 ++--
 java/org/apache/catalina/session/StoreBase.java                 | 4 ++--
 java/org/apache/catalina/valves/AccessLogValve.java             | 4 ++--
 java/org/apache/catalina/valves/JDBCAccessLogValve.java         | 4 ++--
 java/org/apache/catalina/valves/RequestFilterValve.java         | 2 +-
 java/org/apache/catalina/valves/SemaphoreValve.java             | 4 ++--
 java/org/apache/catalina/valves/ValveBase.java                  | 4 ++--
 java/org/apache/catalina/valves/rewrite/RewriteValve.java       | 4 ++--
 25 files changed, 43 insertions(+), 43 deletions(-)

diff --git a/java/org/apache/catalina/authenticator/AuthenticatorBase.java 
b/java/org/apache/catalina/authenticator/AuthenticatorBase.java
index af045ae94d..95761e3311 100644
--- a/java/org/apache/catalina/authenticator/AuthenticatorBase.java
+++ b/java/org/apache/catalina/authenticator/AuthenticatorBase.java
@@ -1198,7 +1198,7 @@ public abstract class AuthenticatorBase extends ValveBase 
implements Authenticat
 
 
     @Override
-    protected synchronized void startInternal() throws LifecycleException {
+    protected void startInternal() throws LifecycleException {
         ServletContext servletContext = context.getServletContext();
         jaspicAppContextID = servletContext.getVirtualServerName() + " " + 
servletContext.getContextPath();
 
@@ -1235,7 +1235,7 @@ public abstract class AuthenticatorBase extends ValveBase 
implements Authenticat
 
 
     @Override
-    protected synchronized void stopInternal() throws LifecycleException {
+    protected void stopInternal() throws LifecycleException {
         super.stopInternal();
         sso = null;
     }
diff --git a/java/org/apache/catalina/authenticator/DigestAuthenticator.java 
b/java/org/apache/catalina/authenticator/DigestAuthenticator.java
index 311f0d53c6..0dd1d6cbf4 100644
--- a/java/org/apache/catalina/authenticator/DigestAuthenticator.java
+++ b/java/org/apache/catalina/authenticator/DigestAuthenticator.java
@@ -443,7 +443,7 @@ public class DigestAuthenticator extends AuthenticatorBase {
     // ------------------------------------------------------- Lifecycle 
Methods
 
     @Override
-    protected synchronized void startInternal() throws LifecycleException {
+    protected void startInternal() throws LifecycleException {
         super.startInternal();
 
         // Generate a random secret key
diff --git a/java/org/apache/catalina/authenticator/SSLAuthenticator.java 
b/java/org/apache/catalina/authenticator/SSLAuthenticator.java
index 226312765e..ba2e11ca70 100644
--- a/java/org/apache/catalina/authenticator/SSLAuthenticator.java
+++ b/java/org/apache/catalina/authenticator/SSLAuthenticator.java
@@ -145,7 +145,7 @@ public class SSLAuthenticator extends AuthenticatorBase {
 
 
     @Override
-    protected synchronized void startInternal() throws LifecycleException {
+    protected void startInternal() throws LifecycleException {
 
         super.startInternal();
 
diff --git a/java/org/apache/catalina/authenticator/SingleSignOn.java 
b/java/org/apache/catalina/authenticator/SingleSignOn.java
index 9d49fd8e1f..5b2b8eb5de 100644
--- a/java/org/apache/catalina/authenticator/SingleSignOn.java
+++ b/java/org/apache/catalina/authenticator/SingleSignOn.java
@@ -567,7 +567,7 @@ public class SingleSignOn extends ValveBase {
 
 
     @Override
-    protected synchronized void startInternal() throws LifecycleException {
+    protected void startInternal() throws LifecycleException {
         Container c = getContainer();
         while (c != null && !(c instanceof Engine)) {
             c = c.getParent();
@@ -580,7 +580,7 @@ public class SingleSignOn extends ValveBase {
 
 
     @Override
-    protected synchronized void stopInternal() throws LifecycleException {
+    protected void stopInternal() throws LifecycleException {
         super.stopInternal();
         engine = null;
     }
diff --git a/java/org/apache/catalina/core/ContainerBase.java 
b/java/org/apache/catalina/core/ContainerBase.java
index d3e784c413..d767e30fce 100644
--- a/java/org/apache/catalina/core/ContainerBase.java
+++ b/java/org/apache/catalina/core/ContainerBase.java
@@ -863,7 +863,7 @@ public abstract class ContainerBase extends 
LifecycleMBeanBase implements Contai
      *                                   used
      */
     @Override
-    protected synchronized void startInternal() throws LifecycleException {
+    protected void startInternal() throws LifecycleException {
 
         // Start our subordinate components, if any
         logger = null;
@@ -923,7 +923,7 @@ public abstract class ContainerBase extends 
LifecycleMBeanBase implements Contai
      *                                   used
      */
     @Override
-    protected synchronized void stopInternal() throws LifecycleException {
+    protected void stopInternal() throws LifecycleException {
 
         // Stop our thread
         threadStop();
diff --git a/java/org/apache/catalina/core/StandardContext.java 
b/java/org/apache/catalina/core/StandardContext.java
index 30181ea35e..1c87cc78d5 100644
--- a/java/org/apache/catalina/core/StandardContext.java
+++ b/java/org/apache/catalina/core/StandardContext.java
@@ -4650,7 +4650,7 @@ public class StandardContext extends ContainerBase 
implements Context, Notificat
      *                                   used
      */
     @Override
-    protected synchronized void startInternal() throws LifecycleException {
+    protected void startInternal() throws LifecycleException {
 
         if (log.isDebugEnabled()) {
             log.debug("Starting " + getBaseName());
@@ -5074,7 +5074,7 @@ public class StandardContext extends ContainerBase 
implements Context, Notificat
      *                                   used
      */
     @Override
-    protected synchronized void stopInternal() throws LifecycleException {
+    protected void stopInternal() throws LifecycleException {
 
         // Send j2ee.state.stopping notification
         if (this.getObjectName() != null) {
diff --git a/java/org/apache/catalina/core/StandardEngine.java 
b/java/org/apache/catalina/core/StandardEngine.java
index 5886d03d0f..1f3556cc5f 100644
--- a/java/org/apache/catalina/core/StandardEngine.java
+++ b/java/org/apache/catalina/core/StandardEngine.java
@@ -236,7 +236,7 @@ public class StandardEngine extends ContainerBase 
implements Engine {
      *                                   used
      */
     @Override
-    protected synchronized void startInternal() throws LifecycleException {
+    protected void startInternal() throws LifecycleException {
 
         // Log our server identification information
         if (log.isInfoEnabled()) {
diff --git a/java/org/apache/catalina/core/StandardHost.java 
b/java/org/apache/catalina/core/StandardHost.java
index 8437168900..1d7234cff5 100644
--- a/java/org/apache/catalina/core/StandardHost.java
+++ b/java/org/apache/catalina/core/StandardHost.java
@@ -766,7 +766,7 @@ public class StandardHost extends ContainerBase implements 
Host {
      *                                   used
      */
     @Override
-    protected synchronized void startInternal() throws LifecycleException {
+    protected void startInternal() throws LifecycleException {
 
         // Set error report valve
         String errorValve = getErrorReportValveClass();
diff --git a/java/org/apache/catalina/core/StandardPipeline.java 
b/java/org/apache/catalina/core/StandardPipeline.java
index e3859bf0fe..427137742b 100644
--- a/java/org/apache/catalina/core/StandardPipeline.java
+++ b/java/org/apache/catalina/core/StandardPipeline.java
@@ -158,7 +158,7 @@ public class StandardPipeline extends LifecycleBase 
implements Pipeline {
      *                                   used
      */
     @Override
-    protected synchronized void startInternal() throws LifecycleException {
+    protected void startInternal() throws LifecycleException {
 
         // Start the Valves in our pipeline (including the basic), if any
         Valve current = first;
@@ -183,7 +183,7 @@ public class StandardPipeline extends LifecycleBase 
implements Pipeline {
      *                                   used
      */
     @Override
-    protected synchronized void stopInternal() throws LifecycleException {
+    protected void stopInternal() throws LifecycleException {
 
         setState(LifecycleState.STOPPING);
 
diff --git a/java/org/apache/catalina/core/StandardWrapper.java 
b/java/org/apache/catalina/core/StandardWrapper.java
index 76eed6384d..8bb35105ec 100644
--- a/java/org/apache/catalina/core/StandardWrapper.java
+++ b/java/org/apache/catalina/core/StandardWrapper.java
@@ -1527,7 +1527,7 @@ public class StandardWrapper extends ContainerBase 
implements ServletConfig, Wra
      *                                   used
      */
     @Override
-    protected synchronized void startInternal() throws LifecycleException {
+    protected void startInternal() throws LifecycleException {
 
         // Send j2ee.state.starting notification
         if (this.getObjectName() != null) {
@@ -1557,7 +1557,7 @@ public class StandardWrapper extends ContainerBase 
implements ServletConfig, Wra
      *                                   used
      */
     @Override
-    protected synchronized void stopInternal() throws LifecycleException {
+    protected void stopInternal() throws LifecycleException {
 
         setAvailable(Long.MAX_VALUE);
 
diff --git a/java/org/apache/catalina/ha/context/ReplicatedContext.java 
b/java/org/apache/catalina/ha/context/ReplicatedContext.java
index fdc152a459..d3a17633cf 100644
--- a/java/org/apache/catalina/ha/context/ReplicatedContext.java
+++ b/java/org/apache/catalina/ha/context/ReplicatedContext.java
@@ -52,7 +52,7 @@ public class ReplicatedContext extends StandardContext 
implements MapOwner {
      *                                   used
      */
     @Override
-    protected synchronized void startInternal() throws LifecycleException {
+    protected void startInternal() throws LifecycleException {
         super.startInternal();
         try {
             CatalinaCluster catclust = (CatalinaCluster) this.getCluster();
@@ -76,7 +76,7 @@ public class ReplicatedContext extends StandardContext 
implements MapOwner {
      *                                   used
      */
     @Override
-    protected synchronized void stopInternal() throws LifecycleException {
+    protected void stopInternal() throws LifecycleException {
 
         Map<String,Object> map = ((ReplApplContext) 
this.context).getAttributeMap();
 
diff --git a/java/org/apache/catalina/ha/session/BackupManager.java 
b/java/org/apache/catalina/ha/session/BackupManager.java
index 05ca3cd615..7d7e436e4f 100644
--- a/java/org/apache/catalina/ha/session/BackupManager.java
+++ b/java/org/apache/catalina/ha/session/BackupManager.java
@@ -132,7 +132,7 @@ public class BackupManager extends ClusterManagerBase 
implements MapOwner, Distr
      *                                   used
      */
     @Override
-    protected synchronized void startInternal() throws LifecycleException {
+    protected void startInternal() throws LifecycleException {
 
         super.startInternal();
 
@@ -170,7 +170,7 @@ public class BackupManager extends ClusterManagerBase 
implements MapOwner, Distr
      *                                   used
      */
     @Override
-    protected synchronized void stopInternal() throws LifecycleException {
+    protected void stopInternal() throws LifecycleException {
 
         if (log.isDebugEnabled()) {
             log.debug(sm.getString("backupManager.stopped", getName()));
diff --git a/java/org/apache/catalina/ha/session/DeltaManager.java 
b/java/org/apache/catalina/ha/session/DeltaManager.java
index f13f84c63c..f4c2052c37 100644
--- a/java/org/apache/catalina/ha/session/DeltaManager.java
+++ b/java/org/apache/catalina/ha/session/DeltaManager.java
@@ -758,7 +758,7 @@ public class DeltaManager extends ClusterManagerBase {
      *                                   used
      */
     @Override
-    protected synchronized void startInternal() throws LifecycleException {
+    protected void startInternal() throws LifecycleException {
 
         super.startInternal();
 
@@ -933,7 +933,7 @@ public class DeltaManager extends ClusterManagerBase {
      *                                   used
      */
     @Override
-    protected synchronized void stopInternal() throws LifecycleException {
+    protected void stopInternal() throws LifecycleException {
 
         if (log.isDebugEnabled()) {
             log.debug(sm.getString("deltaManager.stopped", getName()));
diff --git a/java/org/apache/catalina/ha/session/JvmRouteBinderValve.java 
b/java/org/apache/catalina/ha/session/JvmRouteBinderValve.java
index 28e1d5992d..562c2552f4 100644
--- a/java/org/apache/catalina/ha/session/JvmRouteBinderValve.java
+++ b/java/org/apache/catalina/ha/session/JvmRouteBinderValve.java
@@ -355,7 +355,7 @@ public class JvmRouteBinderValve extends ValveBase 
implements ClusterValve {
      *                                   used
      */
     @Override
-    protected synchronized void startInternal() throws LifecycleException {
+    protected void startInternal() throws LifecycleException {
 
         if (cluster == null) {
             Cluster containerCluster = getContainer().getCluster();
@@ -383,7 +383,7 @@ public class JvmRouteBinderValve extends ValveBase 
implements ClusterValve {
      *                                   used
      */
     @Override
-    protected synchronized void stopInternal() throws LifecycleException {
+    protected void stopInternal() throws LifecycleException {
 
         super.stopInternal();
 
diff --git a/java/org/apache/catalina/ha/tcp/ReplicationValve.java 
b/java/org/apache/catalina/ha/tcp/ReplicationValve.java
index a225b6e1aa..befdc33ccb 100644
--- a/java/org/apache/catalina/ha/tcp/ReplicationValve.java
+++ b/java/org/apache/catalina/ha/tcp/ReplicationValve.java
@@ -366,7 +366,7 @@ public class ReplicationValve extends ValveBase implements 
ClusterValve {
      *                                   used
      */
     @Override
-    protected synchronized void startInternal() throws LifecycleException {
+    protected void startInternal() throws LifecycleException {
         if (cluster == null) {
             Cluster containerCluster = getContainer().getCluster();
             if (containerCluster instanceof CatalinaCluster) {
diff --git a/java/org/apache/catalina/realm/LockOutRealm.java 
b/java/org/apache/catalina/realm/LockOutRealm.java
index 82238e1421..5319f5f70c 100644
--- a/java/org/apache/catalina/realm/LockOutRealm.java
+++ b/java/org/apache/catalina/realm/LockOutRealm.java
@@ -78,7 +78,7 @@ public class LockOutRealm extends CombinedRealm {
 
 
     @Override
-    protected synchronized void startInternal() throws LifecycleException {
+    protected void startInternal() throws LifecycleException {
         /*
          * Configure the list of failed users to delete the oldest entry once 
it exceeds the specified size. This is an
          * LRU cache so if the cache size is exceeded the users who most 
recently failed authentication will be
diff --git a/java/org/apache/catalina/session/PersistentManagerBase.java 
b/java/org/apache/catalina/session/PersistentManagerBase.java
index dfa5685038..1896227832 100644
--- a/java/org/apache/catalina/session/PersistentManagerBase.java
+++ b/java/org/apache/catalina/session/PersistentManagerBase.java
@@ -825,7 +825,7 @@ public abstract class PersistentManagerBase extends 
ManagerBase implements Store
      *                                   used
      */
     @Override
-    protected synchronized void startInternal() throws LifecycleException {
+    protected void startInternal() throws LifecycleException {
 
         super.startInternal();
 
@@ -847,7 +847,7 @@ public abstract class PersistentManagerBase extends 
ManagerBase implements Store
      *                                   used
      */
     @Override
-    protected synchronized void stopInternal() throws LifecycleException {
+    protected void stopInternal() throws LifecycleException {
 
         if (log.isDebugEnabled()) {
             log.debug("Stopping");
diff --git a/java/org/apache/catalina/session/StandardManager.java 
b/java/org/apache/catalina/session/StandardManager.java
index 714bdd0e71..e4a6231dcf 100644
--- a/java/org/apache/catalina/session/StandardManager.java
+++ b/java/org/apache/catalina/session/StandardManager.java
@@ -337,7 +337,7 @@ public class StandardManager extends ManagerBase {
      *                                   used
      */
     @Override
-    protected synchronized void startInternal() throws LifecycleException {
+    protected void startInternal() throws LifecycleException {
 
         super.startInternal();
 
@@ -361,7 +361,7 @@ public class StandardManager extends ManagerBase {
      *                                   used
      */
     @Override
-    protected synchronized void stopInternal() throws LifecycleException {
+    protected void stopInternal() throws LifecycleException {
 
         if (log.isDebugEnabled()) {
             log.debug("Stopping");
diff --git a/java/org/apache/catalina/session/StoreBase.java 
b/java/org/apache/catalina/session/StoreBase.java
index 222864a6d6..60d717e1ba 100644
--- a/java/org/apache/catalina/session/StoreBase.java
+++ b/java/org/apache/catalina/session/StoreBase.java
@@ -241,7 +241,7 @@ public abstract class StoreBase extends LifecycleBase 
implements Store {
      *                                   used
      */
     @Override
-    protected synchronized void startInternal() throws LifecycleException {
+    protected void startInternal() throws LifecycleException {
 
         setState(LifecycleState.STARTING);
     }
@@ -254,7 +254,7 @@ public abstract class StoreBase extends LifecycleBase 
implements Store {
      *                                   used
      */
     @Override
-    protected synchronized void stopInternal() throws LifecycleException {
+    protected void stopInternal() throws LifecycleException {
 
         setState(LifecycleState.STOPPING);
     }
diff --git a/java/org/apache/catalina/valves/AccessLogValve.java 
b/java/org/apache/catalina/valves/AccessLogValve.java
index 3acfaaf5f5..63d3527a22 100644
--- a/java/org/apache/catalina/valves/AccessLogValve.java
+++ b/java/org/apache/catalina/valves/AccessLogValve.java
@@ -650,7 +650,7 @@ public class AccessLogValve extends AbstractAccessLogValve {
      *                                   used
      */
     @Override
-    protected synchronized void startInternal() throws LifecycleException {
+    protected void startInternal() throws LifecycleException {
 
         // Initialize the Date formatters
         String format = getFileDateFormat();
@@ -674,7 +674,7 @@ public class AccessLogValve extends AbstractAccessLogValve {
      *                                   used
      */
     @Override
-    protected synchronized void stopInternal() throws LifecycleException {
+    protected void stopInternal() throws LifecycleException {
 
         super.stopInternal();
         close(false);
diff --git a/java/org/apache/catalina/valves/JDBCAccessLogValve.java 
b/java/org/apache/catalina/valves/JDBCAccessLogValve.java
index 07e7319bdb..57e7e75013 100644
--- a/java/org/apache/catalina/valves/JDBCAccessLogValve.java
+++ b/java/org/apache/catalina/valves/JDBCAccessLogValve.java
@@ -622,7 +622,7 @@ public final class JDBCAccessLogValve extends ValveBase 
implements AccessLog {
      *                                   used
      */
     @Override
-    protected synchronized void startInternal() throws LifecycleException {
+    protected void startInternal() throws LifecycleException {
         try {
             open();
         } catch (SQLException e) {
@@ -640,7 +640,7 @@ public final class JDBCAccessLogValve extends ValveBase 
implements AccessLog {
      *                                   used
      */
     @Override
-    protected synchronized void stopInternal() throws LifecycleException {
+    protected void stopInternal() throws LifecycleException {
         super.stopInternal();
         close();
     }
diff --git a/java/org/apache/catalina/valves/RequestFilterValve.java 
b/java/org/apache/catalina/valves/RequestFilterValve.java
index 1110720581..8064e9b08b 100644
--- a/java/org/apache/catalina/valves/RequestFilterValve.java
+++ b/java/org/apache/catalina/valves/RequestFilterValve.java
@@ -331,7 +331,7 @@ public abstract class RequestFilterValve extends ValveBase {
 
 
     @Override
-    protected synchronized void startInternal() throws LifecycleException {
+    protected void startInternal() throws LifecycleException {
         if (!allowValid || !denyValid) {
             throw new 
LifecycleException(sm.getString("requestFilterValve.configInvalid"));
         }
diff --git a/java/org/apache/catalina/valves/SemaphoreValve.java 
b/java/org/apache/catalina/valves/SemaphoreValve.java
index 6715533989..66b03d7868 100644
--- a/java/org/apache/catalina/valves/SemaphoreValve.java
+++ b/java/org/apache/catalina/valves/SemaphoreValve.java
@@ -121,7 +121,7 @@ public class SemaphoreValve extends ValveBase {
      *                                   used
      */
     @Override
-    protected synchronized void startInternal() throws LifecycleException {
+    protected void startInternal() throws LifecycleException {
         semaphore = new Semaphore(concurrency, fairness);
         super.startInternal();
     }
@@ -135,7 +135,7 @@ public class SemaphoreValve extends ValveBase {
      *                                   used
      */
     @Override
-    protected synchronized void stopInternal() throws LifecycleException {
+    protected void stopInternal() throws LifecycleException {
         super.stopInternal();
         semaphore = null;
     }
diff --git a/java/org/apache/catalina/valves/ValveBase.java 
b/java/org/apache/catalina/valves/ValveBase.java
index 08c319fb22..af1473e5a2 100644
--- a/java/org/apache/catalina/valves/ValveBase.java
+++ b/java/org/apache/catalina/valves/ValveBase.java
@@ -141,7 +141,7 @@ public abstract class ValveBase extends LifecycleMBeanBase 
implements Contained,
      *                                   used
      */
     @Override
-    protected synchronized void startInternal() throws LifecycleException {
+    protected void startInternal() throws LifecycleException {
         setState(LifecycleState.STARTING);
     }
 
@@ -154,7 +154,7 @@ public abstract class ValveBase extends LifecycleMBeanBase 
implements Contained,
      *                                   used
      */
     @Override
-    protected synchronized void stopInternal() throws LifecycleException {
+    protected void stopInternal() throws LifecycleException {
         setState(LifecycleState.STOPPING);
     }
 
diff --git a/java/org/apache/catalina/valves/rewrite/RewriteValve.java 
b/java/org/apache/catalina/valves/rewrite/RewriteValve.java
index b3b1b35669..bac8623836 100644
--- a/java/org/apache/catalina/valves/rewrite/RewriteValve.java
+++ b/java/org/apache/catalina/valves/rewrite/RewriteValve.java
@@ -135,7 +135,7 @@ public class RewriteValve extends ValveBase {
 
 
     @Override
-    protected synchronized void startInternal() throws LifecycleException {
+    protected void startInternal() throws LifecycleException {
 
         super.startInternal();
 
@@ -285,7 +285,7 @@ public class RewriteValve extends ValveBase {
     }
 
     @Override
-    protected synchronized void stopInternal() throws LifecycleException {
+    protected void stopInternal() throws LifecycleException {
         super.stopInternal();
         for (RewriteMap map : maps.values()) {
             if (map instanceof Lifecycle) {


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to