大型文件上传期间的 Grails 连接超时
Posted
技术标签:
【中文标题】大型文件上传期间的 Grails 连接超时【英文标题】:Grails connection timeout during large fileupload 【发布时间】:2014-08-31 11:20:50 【问题描述】:如果用户尝试从我的 Grails Web 应用程序中的上传表单上传大文件,我想防止在大约 1 分钟后出现 SocketTimeoutException
。我知道这是 Tomcat 的事情,而不是 Grails 的事情,但我正在努力使用 _Events.groovy
中的 eventConfigureTomcat
事件块修改 server.xml
。
根据tomcat docs 有一个disableUploadTimeout
属性,我应该在连接器上设置为true
,但是当我在eventConfigureTomcat
块中尝试此操作时,当我的应用程序启动时出现以下错误:
| Running Grails application
| Error Server failed to start: No such property: disableUploadTimeout for class: org.apache.catalina.connector.Connector (Use --stacktrace to see the full trace)
我的_Events.groovy
的内容是这样的:
eventConfigureTomcat = tomcat ->
tomcat.connector.disableUploadTimeout = "true"
而且该错误确实有意义 - 根据 javadoc,该连接器实现上没有属性 disableUploadTimeout
。
我做错了什么?我应该如何设置此属性,或者是否有其他方法可以防止长时间运行的文件上传超时?
【问题讨论】:
发生超时时您在 catalina.out 中收到的确切错误消息是什么? 请注意,根据您链接的文档,disableUploadTimeout
默认为true
,您应该将其设置为false
,以便您可以为connectionUploadTimeout
设置更长的超时期限。 (不幸的是,我不知道如何正确设置这些值。)
【参考方案1】:
没查过,但是看了一下tomcat文档,你要修改的配置好像是Connector的一个属性。
连接器有一个名为setAttribute 的方法。所以我猜你会用下面的代码成功:
eventConfigureTomcat = tomcat ->
tomcat.connector.setAttribute('disableUploadTimeout', true); //may 'true'
不得不承认我自己无法测试这段代码......
更新:根据@Charles-Wood,它必须设置为false
而不是true
。
PS:如果您发布有关如何重现问题的更多信息,我会尝试一下
【讨论】:
我的连接器为空。有什么线索吗?以上是关于大型文件上传期间的 Grails 连接超时的主要内容,如果未能解决你的问题,请参考以下文章
MySQL 连接超时问题 - 使用 Hibernate 和 ORM 的 Tomcat 上的 Grails 应用程序