【问题标题】:Grails connection timeout during large fileupload大型文件上传期间的 Grails 连接超时
【发布时间】: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 设置更长的超时期限。 (不幸的是,我不知道如何正确设置这些值。)

标签: tomcat grails file-upload timeout


【解决方案1】:

没查过,但是看了一下tomcat文档,你要修改的配置好像是Connector的一个属性。

连接器有一个名为setAttribute 的方法。所以我猜你会用下面的代码成功:

eventConfigureTomcat = { tomcat ->
    tomcat.connector.setAttribute('disableUploadTimeout', true); //may 'true'
}

不得不承认我自己无法测试这段代码......

更新:根据@Charles-Wood,它必须设置为false 而不是true

PS:如果您发布有关如何重现问题的更多信息,我会尝试一下

【讨论】:

  • 我的连接器为空。有什么线索吗?
猜你喜欢
  • 2015-12-20
  • 1970-01-01
  • 2017-01-30
  • 2019-05-15
  • 2020-02-11
  • 2011-11-13
  • 1970-01-01
  • 1970-01-01
  • 2018-07-30
相关资源
最近更新 更多