每隔五秒一个函数:
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秒钟就有一个新的连接打开。
我怎样才能避免呢?
不能回收HTTP连接。HTTP是一种无状态协议。您能做的最好的事情是在连接打开后不要关闭它,并保持它的活动状态,并从服务器向客户机发送一个心跳消息。
如果函数的使用是我所猜测的,即测试servlet,最好将连接部分留在;您可以从测试脚本中获得更多的覆盖率。每5秒连接一次几乎不算什么。服务器不会有任何感觉。
否则将连接存储为全局变量。每次提出请求时都要重复使用。
我认为没有其他选择。你必须建立http连接来获取URL的状态。
下面2是Java
的轻量级替代品- Unix curl实用程序
- java脚本中的Ajax调用
假设我们想要在EXPIRY_TIME之后删除客户端的数据。
我认为两种方法之一可以采用:
- 您可以在会话修改时间(建议最后访问时间)中检查一些cron作业(调度器)
- 对于每个客户端请求,在平面文件系统中设置访问日志,并在访问日志 中检查cron作业。
在任何情况下,如果最后访问时间> EXPIRY_TIME,则删除客户端的数据。
这种方法将节省往返路程,有助于减少交通。
任务完成后可以释放连接。无论如何,java web服务器被设计为接受多个请求。