B/S架构开发hive客户端程序:后台执行时间长,页面过期问题

1 篇文章 0 订阅
0 篇文章 0 订阅

        在公司开发了一套hiveAdmin系统,此系统的主要功能类似于PLSQL Developer,pgAdmin等软件,为的是给熟悉sql语句,但是不熟悉hive的数据分析师等人员方便操作hive。在实际工作中确实有些查询语句执行时间比较长,但是IE等浏览器默认等待响应的时间是5分钟,也就是说如果一个http请求超过5分钟还没有响应,那么页面就会出现超时的情形,见下图。

解决方法:

  主要描述:本系统使用的是struts框架,所以可以在action中启动一个子线程执行查询,主线程则判断子线程的查询结果,在结果未返回之前,主线程则reponse查询状态之类的信息给客户端,以确保上图的问题不发生,可response一些友好而字节比较少的提示信息给前台页面,并且查询结果页面在此action方法中生成,不能用mapping.findForward("****")方法到一个jsp页面。

实际代码(下面代码截取与action方法中):

final PrintWriter out = resp.getWriter();
  out.write("查询正在进行中...");
   out.flush();
   new Thread()//启动一个子线程异步查询
  {
   @Override
   public void run() {
   
    logger.info("查询数据的子线程开始运行。。。。。。");

//下面的result是实际的结果集。

     result = hiveExecuteAO.execute(hq, user, hr, flag );
     logger.info("查询数据的子线程运行结束。。。。。。");
     synchronized(this)
     {
      this.notify();
     }
   };
  }.start();
  
  while(result==null)
  {
   Thread.sleep(1000);
   out.write(".");
   out.flush();
  }
  out.write("查询结束");
     out.flush();

//结果查询处理后

//动态生成jsp页面--------参照sql-result.jsp页面生成-----begin
  logger.info("开始生成页面.......................");

out.write("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");

out.write("<html>");

out.write("<body>");

out.write("实际的结果代码,此处省略n个字");

out.write("</body>");

out.write("</html>");

 out.flush();
  logger.info("生成页面结束.......................");
  return null;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值