一、前言
最近通过前端Ext.Ajax.request请求等待大量数据同步到Mysql,希望任务未完成之前前端页面一直处于等待中状态,由于后端tomcat的connectionTimeout="20000",因此20秒后前端就报异常error提示,相关配置如下
前端Ext.Ajax.request默认配置如下
Ext.getCmp('index_bar_processing').setText("处理中..."); @b@Ext.Ajax.request({@b@ url: "/page/index/dateimport.action",@b@ params: {keyword: words},@b@ method: "post",@b@ success: function(response){ @b@ Ext.getCmp('index_bar_processing').setText(""); @b@ alertMsg("结果", "同步成功");@b@ }, failure: function(){@b@ errorMsg("结果", '同步失败!');@b@ }@b@ });
tomcat连接配置如下
<Connector executor="tomcatThreadPool"@b@ port="8080" protocol="HTTP/1.1" @b@ connectionTimeout="20000" @b@ redirectPort="8443" />
二、解决方法
1.修改前端ajax设置如下(timeout: 100000000 - 单位:毫秒)
Ext.getCmp('index_bar_processing').setText("处理中..."); @b@Ext.Ajax.request({@b@ url: "/page/index/dateimport.action",@b@ params: {keyword: words},@b@ method: "post",@b@ timeout: 100000000,@b@ success: function(response){ @b@ Ext.getCmp('index_bar_processing').setText(""); @b@ alertMsg("结果", "同步成功");@b@ }, failure: function(){@b@ errorMsg("结果", '同步失败!');@b@ }@b@ });
或者修改后端tomcat延时(connectionTimeout="100000000" - 单位:毫秒 )
<Connector executor="tomcatThreadPool"@b@ port="8080" protocol="HTTP/1.1" @b@ connectionTimeout="100000000" @b@ redirectPort="8443" />
三、相关配置
1.基于$.ajax的相关配置如下
$.ajax({ @b@ url: '/page/index/dateimport.action',@b@ timeout: 100000000, @b@ type: 'POST', @b@ data: {}, @b@ dataType:'json',//返回的数据格式@b@ success:function(data){ //请求成功的回调函数@b@ alert("同步成功");@b@ },@b@ error: function() { @b@ alert("同步失败 !"); @b@ } @b@});
2.关于apache的httpd.conf配置超时如下
# @b@# Timeout: The number of seconds before receives and sends time out. (单位:秒)@b@# @b@Timeout 100000
3.JK的配置文件/etc/httpd/conf/workers.properties,(单位:秒)
worker.master.socket_timeout=100000