2016-01-20 72 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