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