如何避免每五秒钟建立一个新连接?

时间:2013-01-03 06:17:16

标签: java java-ee servlets httpconnection

每五秒钟一个功能:

private boolean ping() {
    try {
        URL pingServerUrl = new URL(serverResourceLocator);
        HttpURLConnection connection = (HttpURLConnection) pingServerUrl.openConnection();
        if(connection.getResponseCode() == 200) {
            lastPingSuccessful = true;
        }
        System.out.println("pinged");
    }catch(Exception exc) {
       exc.printStackTrace(); 
       return lastPingSuccessful;
    }

    return lastPingSuccessful;

}

被调用。它是ping函数的类型。它尝试连接到服务器上的servlet,并发送一些凭据以及URL serverResourceLocator。困扰我的是每5秒打开一个新连接。

我该如何避免它?

5 个答案:

答案 0 :(得分:4)

您无法回收HTTP连接。 HTTP是无状态协议。您可以做的最好的事情是在打开连接后不关闭连接并使其保持活动状态,并从服务器向客户端发送心跳消息。

答案 1 :(得分:0)

如果函数的使用是我猜测的,即测试servlet,最好将连接部分保留在;您可以从测试脚本中获得更多的覆盖范围。每5秒钟连接一次几乎没有。服务器什么都感觉不到。

否则只将连接存储为全局变量。并在每次提出请求时重复使用它。

答案 2 :(得分:0)

我认为没有其他选择。您必须建立http连接才能获取URL的状态。

2以下是 Java

的轻量级替代品
  • Unix curl实用程序
  • 从您的java脚本调用Ajax

答案 3 :(得分:0)

我们想在EXPIRY_TIME之后删除客户的数据。

我认为可以遵循以下两种方法之一:

  1. 您可以在会话修改时间(建议上次访问时间)检查一些cron作业(调度程序)
  2. 对于每个客户端请求,在平面文件系统中设置访问日志,并使用访问日志中的cron作业进行检查
  3. 在任何一种情况下,如果上次访问时间> EXPIRY_TIME然后删除客户的数据。

    这种方法可以节省往返次数并有助于减少流量。

答案 4 :(得分:0)

一旦完成作业,你就可以释放连接。无论如何,java webserver被设计为接受多个请求。即使每5秒请求进入服务器,它也不是问题。