`
ganting
  • 浏览: 45758 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

http中连接超时的管理(转载)

    博客分类:
  • java
阅读更多
http是无状态的连接,不像socket可以有timeout的异常,因此在判断超时上一直比较困扰.

这段时间做j2me的一个小游戏.用到了http连接,学习了论坛上说的一种方法.

"声明一个boolean公共变量,表明当前httpconnection是否得到服务器回应。
你的连接线程中在连接之前置这个变量为false;
另起一个监视线程,拿到那个HttpConnection的连接对象,并循环监视这个boolean公共变量。如果指定时间内(20秒后)你的boolean公共变量还是false,那么就主动置httpconnection=null。这样,那边连接线程就会抛出异常退出来。"  -----zhengyun

写了Timer类来实现.(学习国外一个网站上的写法)

class Timer extends Thread {
  /** 每个多少毫秒检测一次 */
  protected int m_rate = 100;
  /** 超时时间长度毫秒计算 */
  private int m_length;
  /** 已经运行的时间 */
  private int m_elapsed;
  /**
   * 构造函数
   *
   * @param length
   *            Length of time before timeout occurs
   */
  public Timer(int length) {
   // Assign to member variable
   m_length = length;
   // Set time elapsed
   m_elapsed = 0;
  }
  /**
   * 重新计时
   *
   */
  public synchronized void reset() {
   m_elapsed = 0;
   System.out.println("reset timer");
  }
  /**
   * 故意设置为超时,可以在服务器有返回,但是错误返回的时候直接调用这个,当成超时处理
   *
   */
  public synchronized void setTimeOut()
  {
   m_elapsed = m_length+1;
  }
  /**
    */
  public void run() {
   // 循环
   System.out.println("timer running");
   for (;;) {
    // Put the timer to sleep
    try {
     Thread.sleep(m_rate);
    } catch (InterruptedException ioe) {
     continue;
    }
    synchronized (this) {
     // Increment time remaining
     m_elapsed += m_rate;
     // Check to see if the time has been exceeded
     if (m_elapsed > m_length && !isConnActive) { //isConnActive 为全局变量
      // Trigger a timeout
      timeout();
      break;
     }
    }
   }
  }
  /**
   * 超时时候的处理
   *
   */
  public void timeout() {
      httpConnection = null;
      System.out.println("conn time > " + TIME_OUT + " ms");
    }
}


在http连接线程调用的同是调用 new Timer(20*1000).start();
需要重新计时时候调用timer.reset()

原文链接:http://www.techrss.cn/html/2008/11-22/175681.htm
分享到:
评论

相关推荐

    JAVA数据库连接大全-转载

    这篇博客"JAVA数据库连接大全-转载"可能详细介绍了在Java中如何管理和使用数据库连接,包括使用JDBC API,数据库连接池以及相关的工具。这里我们将深入探讨JDBC、数据库连接池的重要性和配置方法。 1. **JDBC基础**...

    秒杀应用的MySQL数据库优化 (转载)

    合理的设置最大连接数、最小连接数以及超时策略,避免因连接过多导致的系统瓶颈。 其次,**索引优化**对于提高查询效率至关重要。秒杀商品的库存信息需要频繁查询和更新,应确保这些关键字段有合适的索引。例如,...

    dos局域网命令转载.doc

    - `-w [超时时间]`:设置每个跃点的超时时间。 4. **`ipconfig`** - **用途**:显示当前网络接口的信息。 - **语法**: - `ipconfig`:显示所有网络接口的基本信息。 - `ipconfig /all`:显示所有网络接口的...

    用于shell脚本无交互的ssh自动登陆(转载)

    在进行Linux系统管理或自动化任务部署时,经常需要使用SSH(Secure Shell)协议远程连接到其他服务器上执行命令或管理操作。出于安全考虑,SSH在连接远程主机时会要求输入密码,但在脚本自动化场景中,这种交互式...

    神州数码配置手册中文板

    带外管理是指通过控制台线缆或通过网络以外的通信方式进行管理,而带内管理则是通过网络连接,比如通过Telnet、HTTP等协议进行远程管理。管理界面中包括CLI(命令行界面)和Web界面,各有其配置模式和命令,以及对...

    网钛文章管理系统

    九、若您在官网中下载的网钛文章管理系统,发现有安全漏洞、后门、恶意代码,请告诉我们,我们会第一时间纠正。 十、如果您有什么建议或意义,也请告诉我们,一个完善的系统离不开大家的建议和意见。 欢迎使用网钛...

    香香企业管理系统 v5.0.rar

     1、支持自定义文章的路径,使其他系统的数据转移到网钛文章管理系统中,文章路径可保持不变,不影响网站已被搜索引擎收录的数量和排名;  2、支持仿OK3W文章系统的路径  3、支持仿老Y文章系统的路径  4、...

    ftp服务器搭建

    4. **性能设置**: 如最大并发连接数、连接超时时间等。 5. **FTP服务扩展**: 可以启用或禁用FTP服务的特定功能,如FTP被动模式等。 #### 五、FTP客户端配置 ##### 5.1 FTP客户端软件选择 常见的FTP客户端软件包括...

    【转载】CAS实现单点登录(SSO)经典完整教程

    这通常涉及到修改服务器配置文件、数据库连接参数等。 4. **CAS协议**: CAS支持多种协议,如CAS 1.0、CAS 2.0、CAS 3.0以及SAML等。其中,CAS 2.0及以上版本支持HTTPS,提高了安全性。理解这些协议的工作流程对于...

    php函数大全 word版本

    - ODBC连接类函数:`odbc_connect`、`odbc_close`、`odbc_close_all` 和 `odbc_pconnect` 用于建立和管理ODBC数据库连接。 - ODBC操作类函数:`odbc_commit` 提交事务,`odbc_do` 直接执行SQL,`odbc_exec` 执行非...

    WebService+Android

    - **错误处理**:要处理可能出现的网络错误,如超时、无网络连接、解析错误等,提供友好的用户反馈。 - **数据缓存**:对于不经常变化的数据,可以考虑缓存策略,减少不必要的网络请求。 - **性能优化**:避免频繁...

    Recipe_V_Ver1_C.pdf

    连接机器的设置涉及到GOT网络号、站号、以太网设置、通讯用端口号、重试次数、启动时间、通讯超时时间、发送延迟时间等详细参数配置,以确保画面设计软件与GOT机器的通讯正常。 4. 画面规格与显示语言: 画面能够...

    小小图片爬虫

    6. **异常处理与重试机制**:在爬虫过程中,可能会遇到各种网络问题,如超时、连接失败等。因此,合理的异常处理和重试机制是必要的,以确保在出现问题时能够恢复或者跳过。 7. **日志记录**:为了追踪爬虫运行状态...

    TNS-12541: TNS: 无监听程序 TNS-12560

    3、重新启动windows服务管理中的监听程序.先停止,然后再重新启动. 4、检查结果.发现可以了,返回的值在10毫秒.有时为0毫秒.成功!! 但这并不是问题发生原因,在继续排查过程中偶然发现监听日志大小居然为4G。然后把这...

    Nginx安装包

    最后我们还需要在web.xml中加入spring的session过滤器,我个人理解这个过滤器的作用是告诉spring来接管对session管理与创建工作。 1 <!--session过滤器--> 2 3 <filter-name>springSessionRepositoryFilter 4 ...

Global site tag (gtag.js) - Google Analytics