我想防止在大约1分钟后发生的SocketTimeoutException
,如果用户试图从Grails web应用程序的上传表单上传一个大文件。我知道这是Tomcat的事情,而不是Grails的事情,但我正在努力使用eventConfigureTomcat
事件块在_Events.groovy
修改server.xml
。
根据tomcat文档,有一个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
属性。
我做错了什么?我应该如何设置此属性,或者是否有其他方法可以防止长时间运行的文件上传超时?
还没有检查,但是看一下tomcat文档,您想要修改的配置似乎是Connector的一个属性。
连接器有一个名为setAttribute的方法。所以我猜你会成功使用以下代码:
eventConfigureTomcat = { tomcat ->
tomcat.connector.setAttribute('disableUploadTimeout', true); //may 'true'
}
不得不承认我自己无法测试这段代码…
更新:根据@Charles-Wood,它必须设置为false
而不是true
。
PS:如果你发布更多关于如何重现你的问题的信息,我会给它一个尝试