2014-07-10 18 views
5

Ich möchte verhindern, dass die SocketTimeoutException nach etwa 1 Minute auftritt, wenn ein Benutzer versucht, eine große Datei von einem Upload-Formular in meiner Grails-Webanwendung hochzuladen. Ich weiß, das ist eher eine Tomcat-Sache als eine Grails-Sache, aber ich habe ein wenig Mühe, server.xml mit dem Ereignisblock eventConfigureTomcat in _Events.groovy zu ändern.Grails Verbindungstimeout während großer Dateiupload

Nach den tomcat docs gibt es eine disableUploadTimeout Eigenschaft, die ich true auf dem Steckverbinderset sollte, aber wenn ich versuche, diese im eventConfigureTomcat Block, bekomme ich folgende Fehlermeldung, wenn mein app startet:

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

die Inhalte meiner _Events.groovy sieht wie folgt aus:

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

Und das Fehler macht Sinn - nach dem javadoc gibt es keine Eigenschaft disableUploadTimeout bei dieser Connector-Implementierung.

Was mache ich falsch? Wie sollte ich diese Eigenschaft festlegen, oder gibt es eine andere Möglichkeit, zu verhindern, dass lange laufende Dateiuploads fehlschlagen?

+0

was ist die genaue Fehlermeldung Sie in catalina.out erhalten, wenn das Timeout auftritt? – rdmueller

+1

Beachten Sie, dass 'disableUploadTimeout' standardmäßig auf' true' eingestellt ist, und Sie sollten es auf 'false' setzen, damit Sie ein längeres Zeitlimit für' connectionUploadTimeout' festlegen können. (Leider weiß ich nicht, wie ich diese Werte richtig einstellen soll.) –

Antwort

2

haben es nicht überprüft, aber bei der Tomcat-Dokumentation scheint die Konfiguration, die Sie ändern möchten, ein Attribut des Connectors zu sein.

Der Connector hat eine Methode namens setAttribute. Also ich denke, Sie mit dem folgenden Code gelingen wird:

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

muss zugeben, dass ich den Code nicht selbst testen konnte ...

Update: nach @ Charles-Holz, es muss auf false und nicht auf true eingestellt werden.

PS: Wenn Sie mehr Informationen zu veröffentlichen, wie Sie Ihr Problem zu reproduzieren, ich werde versuchen Sie es mal

+0

mein Connector ist null. Irgendeine Ahnung? – Seva