`
zhzhy86
  • 浏览: 18371 次
  • 性别: Icon_minigender_1
  • 来自: 安徽
社区版块
存档分类
最新评论

解决Http连接超时的问题

阅读更多
今天用DWR开发一个手工调度ETL的界面:遇到了由于ETL调度慢,而导致连接超时的问题;
解决方案:前台用DWR定时调度后台,而后台不是等到ETL实行完了才进行返回,而是开启一个线程的方式,让其在后台运行。


前台代码如下:

						
						/**
						 * 执行ETL调度
						 */
						var execETL = function(){
							
							//DWR调用
							DbSyncService.execETLForOther(Ext.getCmp('month').getValue(true), function(d){
								if(d == 'true'){
									Ext.getBody().unmask();
									Msg.alert('' + Ext.getCmp('month').getValue().format('Y年m月') +'ETL抽取成功' + ':<br><span style="color:red">' +
										'   &nbsp;&nbsp;&nbsp;&nbsp;(1)卷包生产模块及设备效能两个文档中所涉及的ETL;<br>' +
								 	    '	&nbsp;&nbsp;&nbsp;&nbsp;(2)生产综合模块中四个ETL:<br>' +
								 	    '		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;6.1制造中心产量综合分析月报表DW_SUM_SCZH_OUTPUT_ZHFX_MT<br>' +
								 	    '		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;6.2制造中心卷烟价类结构对比分析月报表DW_SUM_SCZH_MANU_PRICE_DBFX_MT<br>' +
								 	    '		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;7.2.1卷包机组产能产量日报表DW_SUM_JBSC_JB_MACHSET_CNCL_DT<br>' +
								 	    '		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;7.2.2卷包班组台套产能产量日报表DW_SUM_JBSC_JBBZ_MSET_CNCL_DT<br>' +
								 	    '		&nbsp;&nbsp;&nbsp;&nbsp;(3)计划调度模块中:2.5中烟计划管理----生产情况<br>' +
	  								    '	</span>');
								}else{
									Ext.getBody().mask('正在' + Ext.getCmp('month').getValue().format('Y年m月') + 'ETL<span style="color:red">' + d + ' </span>数据...','x-mask-loading');
									execETL.defer(3000);
								}
							})
							
						}
						
						//执行调度函数
						execETL();



后台代码如下:

   在service上声明一个静态变量:
	/**
	 * 当前正在执行ETL相关信息
	 */
	public static String currentEtlInfo = "";




/**
	* <p>方法名: execETLForOther</p>
	* <p>描述: 其他模块的ETL抽取</p>
	* @param month		月份
	* @return
	* @throws Exception
	 */
	public String execETLForOther(final String month)throws Exception{
		//要执行的ETL数组
		final String[][] etlNameArr=new String[][]{
				/********************卷包生产模块所有ETL-Start******************************/
				
				//机台上报
				{"cn.com.widemex.dc.etl.jb.jtsb.DwTxJbscScjcxxDt-D",""},			//生产基础信息
				{"cn.com.widemex.dc.etl.jb.jtsb.DwSumJbscJjclxhhzDt-D",""},		//卷接机产量消耗汇总表
				{"cn.com.widemex.dc.etl.jb.jtsb.DwSumJbscBzclxhhzDt-D",""},		//包装机产量消耗汇总表
				
				//机台生产日报
				{"cn.com.widemex.dc.etl.jb.scrb.DwSumJbscJjbbDt-D","卷接生产日报表"},			// 卷接生产日报表
				{"cn.com.widemex.dc.etl.jb.scrb.DwSumJbscPackingDt-D","包装生产日报表"},		// 包装生产日报表
				{"cn.com.widemex.dc.etl.jb.scrb.DwSumJbscPackBrandDt-D","包装生产按牌号汇总日报表"},		// 包装生产按牌号汇总日报表 
				
		};
		
		if("".equals(currentEtlInfo)){//如果当前ETL信息为空,则启动一个线程,在后台
			//开启一个线程
			new Thread(){
				 public void run() {
					 try {
						 for (String[] etlName : etlNameArr) {
							//当前信息赋值给静态变量currentEtlInfo
							 currentEtlInfo = etlName[1];
							//执行ETL
							dbSyncDao.execETL(new String[]{etlName[0]} , month);
						 }
						 currentEtlInfo = "over";
					} catch (Exception e) {
						e.printStackTrace();
					}
		         }
			}.start();
			
			//设置当前线程为第一个
			currentEtlInfo = etlNameArr[0][1];
			
		}else if("over".equals(currentEtlInfo)){		//如果执行完毕,则返回true
			
			currentEtlInfo = "";		//指控当前ETL的信息
			
			return "true";
			
		}
		
		
		return currentEtlInfo;
	}


分享到:
评论

相关推荐

    解决高并发环境下Redis连接超时与超卖问题

    总的来说,通过结合Redis的乐观锁机制、连接池优化和分布式锁,我们可以有效地解决高并发环境下的连接超时和超卖问题,保障系统的稳定性和正确性。在实际项目中,还需要根据具体业务需求和系统架构进行调整和优化。

    oracle远程连接服务器出现 ORA-12170 TNS:连接超时 解决办法

    错误描述:oracle远程连接服务器出现 ORA-12170 TNS:连接超时 错误检查:有很多是oracle自身安装的问题,但是我这里服务器配置正常,监听正常,服务正常,远程可以ping通服务器。 这里主要是防火墙问题,解决办法: ...

    ora-12170 tns连接超时

    我们可以通过检查 tns 配置文件、服务器防火墙和路由配置,逐步排除问题的原因,从而解决连接超时的问题。 在实现内网和外网的同时访问时,我们可以使用 route 命令来设置路由信息。例如,我们可以使用以下命令: `...

    关于MySQL的wait-timeout连接超时问题报错解决方案.pdf

    解决连接超时问题需要从多方面考虑,包括调整 wait_timeout 参数的值、使用 Connector/J 连接属性、及时释放连接等方法。只有通过合适的方法,才能避免连接超时问题的出现,提高系统性能和稳定性。

    c#socket连接池和连接超时时间设置

    提供一个c# socket连接池设计的例子,解决socket并发连接限制的问题,并且提供一种设置连接超时时间的方法,默认连接超时时间是不能设置的,提供了socket网络发送数据的接口.可用于pos小票打印机通讯。

    关于MySQL的wait-timeout连接超时问题报错解决方案.docx

    要解决连接超时问题,需要从以下几个方面入手: 1. 调整 wait_timeout 参数的值,使其合理化。 2. 在 Hibernate 框架中,使用 Connection.isValid() 方法来测试连接的有效性。 3. 使用 Connector/J 连接属性 '...

    socket连接超时例程.rar

    本篇将详细讲解Socket连接超时的相关知识点,结合易语言提供的源码例程,帮助你深入理解并解决此类问题。 首先,Socket是网络通信的接口,它允许应用程序通过Internet或其他网络进行通信。在TCP/IP协议栈中,Socket...

    nodejs 关于mysql模块 连接超时自动断开解决方法

    nodejs 关于mysql模块 连接超时自动断开解决方法,在这块遇到的坑,而且坑了很久才找到的,分享只为求分

    Sql Server数据库超时问题的解决方法

    在应用程序中,如果遇到连接超时的错误,可以在程序中修改Connection对象的超时设置,然后打开该连接。 例如: Set Conn = Server.CreateObject("ADODB.Connection") DSNtest = "DRIVER={SQLServer};SERVER=...

    如何解决PI超时问题

    ### 如何解决PI超时问题 #### 背景与概述 在SAP NetWeaver Process Integration (简称 SAP PI) 的使用过程中,超时问题是较为常见的技术难题之一。特别是对于同步场景下的集成流程(Synchronous XI/PI Scenarios)...

    delphi DataSnap连接超时设置无效补丁.zip

    为解决这个问题,开发者通常会尝试调整 DataSnap 的连接超时参数,例如在服务器端或客户端代码中设置合适的超时值。然而,如果这些常规方法无效,可能需要寻找额外的解决方案,比如使用特定的补丁。"delphi DataSnap...

    Modbus RTU 通信连接超时参数.docx

    如果从站出现故障或者响应缓慢,整个系统的通信效率可能会降低,导致连接超时。 1. **从站响应时间 (RESP_TO)**:在S7-1200 PLC的Modbus RTU通信中,`RESP_TO`参数定义了主站等待从站响应的最大时间。默认值为1000...

    mysql 8小时空闲后连接超时的问题

    需要注意的是,尽管调整`interactive_timeout`可以解决连接超时问题,但过度增加超时时间可能会导致服务器资源被长时间占用,尤其是在高并发的环境中。因此,优化数据库连接管理和使用连接池是更推荐的做法。 连接...

    delphi DataSnap连接超时设置无效补丁

    解决问题:delphi D10下(XE8\XE7),DataSnap连接超时设置在android中使用无效,导致不能连接服务器时长时间等待。补丁包带源码及说明。 Datasnap ConnectTimeout android

    异步发送解决socket连接超时

    利用新建类,异步传送参数,解决断连接向多个ip发送socket包产生socket.connect超时的问题。实现向每一个ip发送包新建立一个线程,由于是新建立的线程,全部异步,所以没法记录文本文件(同一个文件同时被记录),...

    Sql Server 数据库超时问题的解决方法

    将登录超时设置为一个较大的数字,连接超时改为 0。 四、在.NET 中调整等待响应时间 在.NET 中,如果调用存储过程,需要调整等待响应时间。可以按照以下代码进行调整: ``` Dim Cmd As New SqlCommand("NBA", Con...

    ssh连接超时解决方法

    本文将详细介绍如何解决SSH连接超时的问题。 首先,我们可以从服务器端着手。在服务器上,你需要编辑`/etc/ssh/sshd_config`配置文件。这里有两个关键的参数可以调整以防止连接超时: 1. `ClientAliveInterval 60`...

    RACH冲突解决定时器超时引起RLF重建案例

    为了解决 RACH 冲突解决定时器超时问题,可以采取以下方法: 1. 调整 RACH 配置参数:可以通过调整 RACH 配置参数,例如调整 RACH 时间槽的数量和时长,以减少 RACH 冲突的可能性。 2. 优化 UE 的 RACH 算法:可以...

    解决MySQL 5数据库连接超时问题

    mysql5将其连接的等待时间(wait_timeout)缺省为8小时。怎么不让它超时呢

Global site tag (gtag.js) - Google Analytics