2014-07-10 25 views
5

Tôi muốn ngăn chặn SocketTimeoutException xảy ra sau khoảng 1 phút nếu người dùng cố gắng tải lên tệp lớn từ biểu mẫu tải lên trong ứng dụng web Grails của tôi. Tôi biết đây là một điều Tomcat hơn là một điều Grails, nhưng tôi đang đấu tranh một chút để sửa đổi server.xml bằng cách sử dụng khối sự kiện eventConfigureTomcat trong _Events.groovy.Thời gian chờ kết nối Grails trong thời gian tải lên lớn

Theo tomcat docs có một tài sản mà tôi nên thiết lập để true trên các kết nối disableUploadTimeout, nhưng khi tôi cố gắng này trong khối eventConfigureTomcat, tôi nhận được lỗi sau khi ứng dụng của tôi khởi động:

| 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) 

Nội dung _Events.groovy của tôi trông như thế này:

eventConfigureTomcat = { tomcat -> 
    tomcat.connector.disableUploadTimeout = "true" 
} 

Và lỗi mà làm cho tinh thần - theo javadoc, không có tài sản disableUploadTimeout về việc triển khai trình kết nối đó.

Tôi đang làm gì sai? Tôi nên đặt thuộc tính này như thế nào hoặc có cách nào khác để ngăn tải lên tệp tải lên từ thời gian không?

+0

được thông báo lỗi chính xác mà bạn nhận được trong catalina.out khi timeout xảy ra là gì? – rdmueller

+1

Lưu ý rằng, theo các tài liệu bạn đã liên kết, 'disableUploadTimeout' mặc định là' true' và bạn nên đặt thành 'false' để bạn có thể đặt khoảng thời gian chờ lâu hơn cho' connectionUploadTimeout'. (Thật không may, tôi không biết làm thế nào để thiết lập đúng những giá trị mặc dù.) –

Trả lời

2

chưa kiểm tra, nhưng hãy xem tài liệu tomcat, cấu hình bạn muốn sửa đổi có vẻ là thuộc tính của Trình kết nối.

Trình kết nối có phương thức được gọi là setAttribute. Vì vậy, tôi đoán bạn sẽ thành công với đoạn mã sau:

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

phải thừa nhận rằng tôi không thể kiểm tra mã này bản thân mình ...

Cập nhật: Theo @ Charles-Wood, nó phải được đặt thành false và không phải là true.

PS: nếu bạn gửi thêm thông tin về làm thế nào để tái tạo vấn đề của bạn, tôi sẽ cung cấp cho nó một thử

+0

kết nối của tôi là null. Bất kỳ đầu mối? – Seva

Các vấn đề liên quan