2016-01-20 139 views
0

我使用wildfly服務器,apache httpd proxy和jsf作爲我的應用程序。Ajax請求在10分鐘後超時,如何增加它

<h:form id='form' style='display:none' prependId="false"> 
     <h:commandLink id="link"> 
      <f:ajax event="click" listener="#{bean.retriveData()}" render="confirm" onevent="onLoad" /> 
     </h:commandLink> 
</h:form> 

這是正在調用的ajax調用。

retriveData是一種計時方法,需要大約14分鐘才能完成任務。

我在服務器端10分鐘後出現超時。

enter image description here

是否有wildfly服務器端的任何配置,以增加超時延遲到15分鐘?

它可以是一個wildfly配置或apache httpd配置?

+3

糟糕的設計做一些事情,在同步調用中需要這麼長時間。使其異步並使用例如一個推送機制來通知客戶事情完成 – Kukeltje

+0

它只是一個ajax調用。 –

+1

然後請退後一步,瞭解所有技術以及它們的用途...... – Kukeltje

回答

0

你有兩個超時。瀏覽器超時和服務器。 您可以設置超時在Tomcat在$ TOMCAT_HOME/conf目錄/ server.xml中

connectionTimeout = 「值」

和瀏覽器,你可以看到here如何設置超時瀏覽器。

+0

我使用Apache作爲Web服務器和widlfy作爲應用程序服務器。不使用tomcat。 –

3

我同意@Kukeltje的評論,你的應用程序有一個設計問題。

您寫道:

retriveData是將大約14分鐘完成任務 (...) 是否有wildfly服務器端的任何配置,以增加 超時延遲到timetaking方法15分鐘 ?

那麼,如果你把這個超時延遲增加到15分鐘,而且任務需要比平常長一點時間,比如16分鐘?

然後,根據你的GUI屏幕截圖,你有一個「正在加載...」模式出現在這種治療過程中。所以我的理解是,用戶只需在治療運行14分鐘時離開並喝杯咖啡......(你是否考慮到一些用戶可能不喜歡咖啡?)

因此,你應該真的考慮做這種處理是異步的,如果你在後端使用Java EE,可以在@Asynchronous註解的幫助下進行。

然後,wildfly中的默認事務超時似乎設置爲300 seconds by default,而不是600.有人已經根據您的過去自定義了此設置Wildfly配置?

然而,所有這些言論之後,如果你真的想修改此超時設置(不這樣做:)!),你可以看看這個線程:How to change Transaction timeout in WildFly 8.2.0

+0

非常好的建議。 :) –

+0

@SujithPS:不客氣... – Kukeltje