Hello

I've made some more tests and after reading the Book "*Tomcat, The definitive Guide*" I discovered the existence of a parameter called "*connectionUploadTimeout*" (below I join the description of this property taken from this book). I've changed the configuration of the HTTP connector and now uploading big files directly on tomcat (without Apache HTTP) works without problems:

<Connector port="80" protocol="HTTP/1.1"
   connectionTimeout="600000"
   connectionUploadTimeout="3600000"
   disableUploadTimeout="true"
   redirectPort="8443" />

However, if I reset our original configuration with Tomcat behind an Apache HTTP connected with mod_proxy_ajp (or mod_proxy_http) I get the same Exception as before (the Upload stops after 30 minutes).

<IfModule mod_proxy_ajp.c>
   ProxyRequests Off
   ProxyTimeout 3600
   <Location / >
       ProxyPass ajp://localhost:8009/
       ProxyPassReverse ajp://localhost:8009/
   </Location>
</IfModule>
<Connector port="8009" protocol="AJP/1.3"
   connectionTimeout="600000"
   connectionUploadTimeout="3600000"
   disableUploadTimeout="true"
   redirectPort="8443" />

Or

<IfModule mod_proxy_http.c>
   ProxyRequests Off
   ProxyTimeout 3600
   <Location / >
       ProxyPass http://localhost:8080/
       ProxyPassReverse http://localhost:8080/
   </Location>
</IfModule>

<Connector port="8080" protocol="HTTP/1.1"
   connectionTimeout="600000"
   connectionUploadTimeout="3600000"
   disableUploadTimeout="true"
   redirectPort="8443" />

I've tried setting the "timeout" parameter in the ProxyPass instruction to one hour:

ProxyPass ajp://localhost:8009/ timeout=3600

But it did not help...
Do you have any suggestion?

Thanks a lot for your attention and your help
Patrick


Here the description of the three properties copied from the Book "Tomcat, The definitive Guide" (O'Reilly, Jason Brittain with Ian F. Darwin). I missed these information in the official Tomcat documentation (didn't I see it?):

*disableUploadTimeout*
Should Tomcat use the regular connectionTimeout for request socket connections even for long servlet requests, such as uploads? Setting disableUploadTimeout to true allows long requests to servlets to continue without the Connector closing the connection. Setting it to false means that a longer connection timeout (connectionUploadTimeout's value) will be used for requests to servlets. Setting it to false means that the lower connection timeout specified in the connectionTimeout attribute will be applied to all types of requests. The default for this attribute is not consistent between Connector implementations and versions of Tomcat. We strongly suggest that you explicitly set it to either true or false.

*connectionTimeout*
The Connector may wait a configurable number of milliseconds from the time the client's request TCP socket is accepted until the request method line is sent to Tomcat.
The default is 1 minute. 60000

*connectionUploadTimeout*
By default, Connectors keep request socket connections open while Tomcat processes the request, until the connectionTimeout of 1 minute has passed. At that point, the Connector will close the socket. But, this causes trouble if the request was for a long running servlet, such as a file upload. During requests that map to servlets, Tomcat will use a longer timeout, specified by the connectionUploadTimeout attribute in milliseconds.
The default is 300000 milliseconds (5 minutes). 300000

Reply via email to