Author: markt Date: Sun Nov 8 16:53:16 2015 New Revision: 1713254 URL: http://svn.apache.org/viewvc?rev=1713254&view=rev Log: Move Processor creation from the ConnectionHandler to the Protocol
Modified: tomcat/trunk/java/org/apache/coyote/AbstractProtocol.java tomcat/trunk/java/org/apache/coyote/ajp/AbstractAjpProtocol.java tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Protocol.java Modified: tomcat/trunk/java/org/apache/coyote/AbstractProtocol.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/AbstractProtocol.java?rev=1713254&r1=1713253&r2=1713254&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/AbstractProtocol.java (original) +++ tomcat/trunk/java/org/apache/coyote/AbstractProtocol.java Sun Nov 8 16:53:16 2015 @@ -419,6 +419,15 @@ public abstract class AbstractProtocol<S protected abstract UpgradeProtocol getNegotiatedProtocol(String name); + /** + * Create and configure a new Processor instance for the current protocol + * implementation. + * + * @return A fully configured Processor instance that is ready to use + */ + protected abstract Processor createProcessor(); + + // ----------------------------------------------------- JMX related methods protected String domain; @@ -722,7 +731,8 @@ public abstract class AbstractProtocol<S processor = recycledProcessors.pop(); } if (processor == null) { - processor = createProcessor(); + processor = getProtocol().createProcessor(); + register(processor); } processor.setSslSupport( @@ -867,8 +877,6 @@ public abstract class AbstractProtocol<S return SocketState.CLOSED; } - protected abstract P createProcessor(); - protected void longPoll(SocketWrapperBase<?> socket, Processor processor) { if (!processor.isAsync()) { @@ -930,7 +938,7 @@ public abstract class AbstractProtocol<S UpgradeToken upgradeToken) throws IOException; - protected void register(AbstractProcessor processor) { + protected void register(Processor processor) { if (getProtocol().getDomain() != null) { synchronized (this) { try { Modified: tomcat/trunk/java/org/apache/coyote/ajp/AbstractAjpProtocol.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/ajp/AbstractAjpProtocol.java?rev=1713254&r1=1713253&r2=1713254&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/ajp/AbstractAjpProtocol.java (original) +++ tomcat/trunk/java/org/apache/coyote/ajp/AbstractAjpProtocol.java Sun Nov 8 16:53:16 2015 @@ -19,6 +19,7 @@ package org.apache.coyote.ajp; import java.nio.ByteBuffer; import org.apache.coyote.AbstractProtocol; +import org.apache.coyote.Processor; import org.apache.coyote.UpgradeProtocol; import org.apache.coyote.UpgradeToken; import org.apache.tomcat.util.net.AbstractEndpoint; @@ -155,15 +156,19 @@ public abstract class AbstractAjpProtoco } - protected void configureProcessor(AjpProcessor processor) { + @Override + protected Processor createProcessor() { + AjpProcessor processor = new AjpProcessor(getPacketSize(), getEndpoint()); processor.setAdapter(getAdapter()); processor.setTomcatAuthentication(getTomcatAuthentication()); processor.setTomcatAuthorization(getTomcatAuthorization()); processor.setRequiredSecret(requiredSecret); processor.setKeepAliveTimeout(getKeepAliveTimeout()); processor.setClientCertProvider(getClientCertProvider()); + return processor; } + protected static class AjpConnectionHandler<S> extends AbstractConnectionHandler<S,AjpProcessor> { @@ -179,15 +184,6 @@ public abstract class AbstractAjpProtoco } - @Override - protected AjpProcessor createProcessor() { - AjpProcessor processor = new AjpProcessor(proto.getPacketSize(), proto.getEndpoint()); - proto.configureProcessor(processor); - register(processor); - return processor; - } - - @Override protected AjpProcessor createUpgradeProcessor(SocketWrapperBase<?> socket, ByteBuffer leftoverInput, UpgradeToken upgradeToken) { Modified: tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Protocol.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Protocol.java?rev=1713254&r1=1713253&r2=1713254&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Protocol.java (original) +++ tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Protocol.java Sun Nov 8 16:53:16 2015 @@ -618,8 +618,11 @@ public abstract class AbstractHttp11Prot // ------------------------------------------------------------- Common code - // Common configuration required for all new HTTP11 processors - protected void configureProcessor(Http11Processor processor) { + @Override + protected Processor createProcessor() { + Http11Processor processor = new Http11Processor(getMaxHttpHeaderSize(), getEndpoint(), + getMaxTrailerSize(), allowedTrailerHeaders, getMaxExtensionSize(), + getMaxSwallowSize(), httpUpgradeProtocols); processor.setAdapter(getAdapter()); processor.setMaxKeepAliveRequests(getMaxKeepAliveRequests()); processor.setConnectionUploadTimeout(getConnectionUploadTimeout()); @@ -631,6 +634,7 @@ public abstract class AbstractHttp11Prot processor.setRestrictedUserAgents(getRestrictedUserAgents()); processor.setMaxSavePostSize(getMaxSavePostSize()); processor.setServer(getServer()); + return processor; } @@ -651,18 +655,6 @@ public abstract class AbstractHttp11Prot } - @Override - public Http11Processor createProcessor() { - Http11Processor processor = new Http11Processor( - proto.getMaxHttpHeaderSize(), proto.getEndpoint(), proto.getMaxTrailerSize(), - proto.allowedTrailerHeaders, proto.getMaxExtensionSize(), - proto.getMaxSwallowSize(), proto.httpUpgradeProtocols); - proto.configureProcessor(processor); - register(processor); - return processor; - } - - @Override protected Processor createUpgradeProcessor( SocketWrapperBase<?> socket, ByteBuffer leftoverInput, --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org