tomcat-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Filip Hanik - Dev Lists <devli...@hanik.com>
Subject Re: svn commit: r486216 - in /tomcat/connectors/trunk/jk/java/org/apache/coyote/ajp: AjpAprProcessor.java AjpAprProtocol.java AjpMessage.java
Date Tue, 12 Dec 2006 18:15:58 GMT
tabs used instead of spaces

pero@apache.org wrote:
> Author: pero
> Date: Tue Dec 12 08:34:12 2006
> New Revision: 486216
>
> URL: http://svn.apache.org/viewvc?view=rev&rev=486216
> Log:
> Backport AJP packetSize handling from Tomcat 6.0.x
> Add support to send and receive more the 8K BODY packets.
>
> Modified:
>     tomcat/connectors/trunk/jk/java/org/apache/coyote/ajp/AjpAprProcessor.java
>     tomcat/connectors/trunk/jk/java/org/apache/coyote/ajp/AjpAprProtocol.java
>     tomcat/connectors/trunk/jk/java/org/apache/coyote/ajp/AjpMessage.java
>
> Modified: tomcat/connectors/trunk/jk/java/org/apache/coyote/ajp/AjpAprProcessor.java
> URL: http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/java/org/apache/coyote/ajp/AjpAprProcessor.java?view=diff&rev=486216&r1=486215&r2=486216
> ==============================================================================
> --- tomcat/connectors/trunk/jk/java/org/apache/coyote/ajp/AjpAprProcessor.java (original)
> +++ tomcat/connectors/trunk/jk/java/org/apache/coyote/ajp/AjpAprProcessor.java Tue Dec
12 08:34:12 2006
> @@ -75,7 +75,7 @@
>      // ----------------------------------------------------------- Constructors
>  
>  
> -    public AjpAprProcessor(AprEndpoint endpoint) {
> +    public AjpAprProcessor(int packetSize, AprEndpoint endpoint) {
>  
>          this.endpoint = endpoint;
>  
> @@ -84,9 +84,13 @@
>  
>          response = new Response();
>          response.setHook(this);
> -        response.setOutputBuffer(new SocketOutputBuffer());
> +        response.setOutputBuffer(new SocketOutputBuffer(packetSize));
>          request.setResponse(response);
>  
> +        requestHeaderMessage = new AjpMessage(packetSize);
> +        responseHeaderMessage = new AjpMessage(packetSize);
> +        bodyMessage = new AjpMessage(packetSize);
> +        
>          if (endpoint.getFirstReadTimeout() > 0) {
>              readTimeout = endpoint.getFirstReadTimeout() * 1000;
>          } else {
> @@ -94,15 +98,27 @@
>          }
>  
>          // Allocate input and output buffers
> -        inputBuffer = ByteBuffer.allocateDirect(Constants.MAX_PACKET_SIZE * 2);
> +        inputBuffer = ByteBuffer.allocateDirect(packetSize * 2);
>          inputBuffer.limit(0);
> -        outputBuffer = ByteBuffer.allocateDirect(Constants.MAX_PACKET_SIZE * 2);
> +        outputBuffer = ByteBuffer.allocateDirect(packetSize * 2);
>  
>          // Cause loading of HexUtils
>          int foo = HexUtils.DEC[0];
>  
>          // Cause loading of HttpMessages
>          HttpMessages.getMessage(200);
> +        
> +        // Set the get body message buffer
> +        AjpMessage getBodyMessage = new AjpMessage(128);
> +        getBodyMessage.reset();
> +        getBodyMessage.appendByte(Constants.JK_AJP13_GET_BODY_CHUNK);
> +        getBodyMessage.appendInt(packetSize -Constants.H_SIZE - 2);
> +        getBodyMessage.end();
> +        getBodyMessageBuffer =
> +            ByteBuffer.allocateDirect(getBodyMessage.getLen());
> +        getBodyMessageBuffer.put(getBodyMessage.getBuffer(), 0,
> +                getBodyMessage.getLen());
> +
>  
>      }
>  
> @@ -133,19 +149,19 @@
>       * processing of the first message of a "request", so it might not be a request
>       * header. It will stay unchanged during the processing of the whole request.
>       */
> -    protected AjpMessage requestHeaderMessage = new AjpMessage();
> +    protected AjpMessage requestHeaderMessage ;
>  
>  
>      /**
>       * Message used for response header composition.
>       */
> -    protected AjpMessage responseHeaderMessage = new AjpMessage();
> +    protected AjpMessage responseHeaderMessage ;
>  
>  
>      /**
>       * Body message.
>       */
> -    protected AjpMessage bodyMessage = new AjpMessage();
> +    protected AjpMessage bodyMessage ;
>  
>  
>      /**
> @@ -248,7 +264,7 @@
>      /**
>       * Direct buffer used for sending right away a get body message.
>       */
> -    protected static final ByteBuffer getBodyMessageBuffer;
> +    protected ByteBuffer getBodyMessageBuffer;
>  
>  
>      /**
> @@ -272,19 +288,9 @@
>  
>      static {
>  
> -        // Set the get body message buffer
> -        AjpMessage getBodyMessage = new AjpMessage();
> -        getBodyMessage.reset();
> -        getBodyMessage.appendByte(Constants.JK_AJP13_GET_BODY_CHUNK);
> -        getBodyMessage.appendInt(Constants.MAX_READ_SIZE);
> -        getBodyMessage.end();
> -        getBodyMessageBuffer =
> -            ByteBuffer.allocateDirect(getBodyMessage.getLen());
> -        getBodyMessageBuffer.put(getBodyMessage.getBuffer(), 0,
> -                getBodyMessage.getLen());
>  
>          // Set the read body message buffer
> -        AjpMessage pongMessage = new AjpMessage();
> +        AjpMessage pongMessage = new AjpMessage(128);
>          pongMessage.reset();
>          pongMessage.appendByte(Constants.JK_AJP13_CPONG_REPLY);
>          pongMessage.end();
> @@ -293,7 +299,7 @@
>                  pongMessage.getLen());
>  
>          // Allocate the end message array
> -        AjpMessage endMessage = new AjpMessage();
> +        AjpMessage endMessage = new AjpMessage(128);
>          endMessage.reset();
>          endMessage.appendByte(Constants.JK_AJP13_END_RESPONSE);
>          endMessage.appendByte(1);
> @@ -303,7 +309,7 @@
>                  endMessage.getLen());
>  
>          // Set the flush message buffer
> -        AjpMessage flushMessage = new AjpMessage();
> +        AjpMessage flushMessage = new AjpMessage(128);
>          flushMessage.reset();
>          flushMessage.appendByte(Constants.JK_AJP13_SEND_BODY_CHUNK);
>          flushMessage.appendInt(0);
> @@ -369,8 +375,6 @@
>          // Error flag
>          error = false;
>  
> -        long soTimeout = endpoint.getSoTimeout();
> -
>          int limit = 0;
>          if (endpoint.getFirstReadTimeout() > 0) {
>              limit = endpoint.getMaxThreads() / 2;
> @@ -1249,7 +1253,12 @@
>      protected class SocketOutputBuffer
>          implements OutputBuffer {
>  
> -
> +        int maxSendPacketSize ;
> +        
> +        SocketOutputBuffer(int maxSendSize) {
> +        	this.maxSendPacketSize = maxSendSize - Constants.H_SIZE - 4 ;
> +        }
> +        
>          /**
>           * Write chunk.
>           */
> @@ -1268,7 +1277,7 @@
>  
>              int len = chunk.getLength();
>              // 4 - hardcoded, byte[] marshalling overhead
> -            int chunkSize = Constants.MAX_SEND_SIZE;
> +            int chunkSize = maxSendPacketSize ;
>              int off = 0;
>              while (len > 0) {
>                  int thisTime = len;
>
> Modified: tomcat/connectors/trunk/jk/java/org/apache/coyote/ajp/AjpAprProtocol.java
> URL: http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/java/org/apache/coyote/ajp/AjpAprProtocol.java?view=diff&rev=486216&r1=486215&r2=486216
> ==============================================================================
> --- tomcat/connectors/trunk/jk/java/org/apache/coyote/ajp/AjpAprProtocol.java (original)
> +++ tomcat/connectors/trunk/jk/java/org/apache/coyote/ajp/AjpAprProtocol.java Tue Dec
12 08:34:12 2006
> @@ -107,6 +107,12 @@
>  
>  
>      /**
> +     * AJP packet size.
> +     */
> +    protected int packetSize = Constants.MAX_PACKET_SIZE;
> +
> +    
> +    /**
>       * Adapter which will process the requests recieved by this endpoint.
>       */
>      private Adapter adapter;
> @@ -405,6 +411,19 @@
>          this.requiredSecret = requiredSecret;
>      }
>      
> +
> +    public int getPacketSize() {
> +        return packetSize;
> +    }
> +
> +
> +    public void setPacketSize(int packetSize) {
> +        if(packetSize <Constants.MAX_PACKET_SIZE) {
> +        	packetSize = Constants.MAX_PACKET_SIZE;
> +        }
> +        this.packetSize = packetSize;
> +    }
> +    
>      
>      // --------------------------------------  AjpConnectionHandler Inner Class
>  
> @@ -424,7 +443,7 @@
>              try {
>                  processor = (AjpAprProcessor) localProcessor.get();
>                  if (processor == null) {
> -                    processor = new AjpAprProcessor(proto.ep);
> +                    processor = new AjpAprProcessor(proto.packetSize,proto.ep);
>                      processor.setAdapter(proto.adapter);
>                      processor.setTomcatAuthentication(proto.tomcatAuthentication);
>                      processor.setRequiredSecret(proto.requiredSecret);
>
> Modified: tomcat/connectors/trunk/jk/java/org/apache/coyote/ajp/AjpMessage.java
> URL: http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/java/org/apache/coyote/ajp/AjpMessage.java?view=diff&rev=486216&r1=486215&r2=486216
> ==============================================================================
> --- tomcat/connectors/trunk/jk/java/org/apache/coyote/ajp/AjpMessage.java (original)
> +++ tomcat/connectors/trunk/jk/java/org/apache/coyote/ajp/AjpMessage.java Tue Dec 12
08:34:12 2006
> @@ -47,14 +47,19 @@
>      protected static StringManager sm =
>          StringManager.getManager(Constants.Package);
>  
> +    // ------------------------------------------------------------ Constructor
>  
> +    public AjpMessage(int packetSize) {
> +        buf = new byte[packetSize];
> +    }
> +   
>      // ----------------------------------------------------- Instance Variables
>  
>  
>      /**
>       * Fixed size buffer.
>       */
> -    protected byte buf[] = new byte[8 * 1024];
> +    protected byte buf[] = null ;
>  
>  
>      /**
> @@ -71,7 +76,7 @@
>       */
>      protected int len; 
>  
> -    
> +     
>      // --------------------------------------------------------- Public Methods
>  
>  
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
> For additional commands, e-mail: dev-help@tomcat.apache.org
>
>
>
>   



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


Mime
View raw message