Author: markt Date: Mon Oct 31 12:10:22 2016 New Revision: 1767259 URL: http://svn.apache.org/viewvc?rev=1767259&view=rev Log: When a Connector is configured to use an executor, ensure that the StoreConfig component includes the executor name when writing the Connector configuration.
Modified: tomcat/trunk/java/org/apache/catalina/connector/Connector.java tomcat/trunk/java/org/apache/catalina/storeconfig/ConnectorStoreAppender.java tomcat/trunk/webapps/docs/changelog.xml Modified: tomcat/trunk/java/org/apache/catalina/connector/Connector.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/connector/Connector.java?rev=1767259&r1=1767258&r2=1767259&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/connector/Connector.java (original) +++ tomcat/trunk/java/org/apache/catalina/connector/Connector.java Mon Oct 31 12:10:22 2016 @@ -59,6 +59,9 @@ public class Connector extends Lifecycle Boolean.parseBoolean(System.getProperty("org.apache.catalina.connector.RECYCLE_FACADES", "false")); + public static final String INTERNAL_EXECUTOR_NAME = "Internal"; + + // ------------------------------------------------------------ Constructor /** @@ -788,7 +791,7 @@ public class Connector extends Lifecycle if (obj instanceof org.apache.catalina.Executor) { return ((org.apache.catalina.Executor) obj).getName(); } - return "Internal"; + return INTERNAL_EXECUTOR_NAME; } Modified: tomcat/trunk/java/org/apache/catalina/storeconfig/ConnectorStoreAppender.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/storeconfig/ConnectorStoreAppender.java?rev=1767259&r1=1767258&r2=1767259&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/storeconfig/ConnectorStoreAppender.java (original) +++ tomcat/trunk/java/org/apache/catalina/storeconfig/ConnectorStoreAppender.java Mon Oct 31 12:10:22 2016 @@ -25,8 +25,10 @@ import java.io.IOException; import java.io.PrintWriter; import java.util.ArrayList; import java.util.HashMap; +import java.util.HashSet; import java.util.Iterator; import java.util.List; +import java.util.Set; import org.apache.catalina.connector.Connector; import org.apache.coyote.ProtocolHandler; @@ -43,6 +45,7 @@ import org.apache.tomcat.util.net.Socket public class ConnectorStoreAppender extends StoreAppender { protected static final HashMap<String, String> replacements = new HashMap<>(); + protected static final Set<String> internalExecutorAttributes = new HashSet<>(); static { replacements.put("timeout", "connectionUploadTimeout"); replacements.put("clientauth", "clientAuth"); @@ -52,6 +55,10 @@ public class ConnectorStoreAppender exte replacements.put("keytype", "keystoreType"); replacements.put("protocol", "sslProtocol"); replacements.put("protocols", "sslProtocols"); + + internalExecutorAttributes.add("maxThreads"); + internalExecutorAttributes.add("minSpareThreads"); + internalExecutorAttributes.add("threadPriority"); } @Override @@ -93,8 +100,13 @@ public class ConnectorStoreAppender exte printValue(writer, indent, key, value); } } - if (protocol != null && !"HTTP/1.1".equals(protocol)) + if (protocol != null && !"HTTP/1.1".equals(protocol)) { super.printValue(writer, indent, "protocol", protocol); + } + String executorName = connector.getExecutorName(); + if (!Connector.INTERNAL_EXECUTOR_NAME.equals(executorName)) { + super.printValue(writer, indent, "executor", executorName); + } } @@ -103,7 +115,7 @@ public class ConnectorStoreAppender exte * * @param bean The connector * @return List of Connector property names - * @throws IntrospectionException Error intropecting connector + * @throws IntrospectionException Error introspecting connector */ protected List<String> getPropertyKeys(Connector bean) throws IntrospectionException { @@ -147,6 +159,10 @@ public class ConnectorStoreAppender exte continue; // Must be a read-write primitive or String } String key = descriptor.getName(); + if (!Connector.INTERNAL_EXECUTOR_NAME.equals(bean.getExecutorName()) && + internalExecutorAttributes.contains(key)) { + continue; + } if (replacements.get(key) != null) { key = replacements.get(key); } Modified: tomcat/trunk/webapps/docs/changelog.xml URL: http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/changelog.xml?rev=1767259&r1=1767258&r2=1767259&view=diff ============================================================================== --- tomcat/trunk/webapps/docs/changelog.xml (original) +++ tomcat/trunk/webapps/docs/changelog.xml Mon Oct 31 12:10:22 2016 @@ -92,6 +92,11 @@ detection enabled (the default) but without the command line option it now requires. (markt) </add> + <fix> + When a Connector is configured to use an executor, ensure that the + StoreConfig component includes the executor name when writing the + Connector configuration. (markt) + </fix> </changelog> </subsection> <subsection name="Coyote"> --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org