我正在打电话给REST URL,并试图衡量恢复响应所花费的时间。
我DefaultHttpClient
为此目的是要从获得回复REST URL
。
在下面的程序中,每个线程将在特定范围内工作。就像每个线程将在1 - 100
第二个线程之间工作,101 - 200
等等。
因此,在我下面的代码中,它第一次正常工作。但是,这是第二次在该行上抛出异常,httpclient.execute
因为-
java.lang.IllegalStateException: Invalid use of BasicClientConnManager: connection still allocated.
Make sure to release the connection before allocating another one.
我在这里做错什么吗?-
以下是我的代码-
class Task implements Runnable {
private DefaultHttpClient httpclient = new DefaultHttpClient();
private HttpGet httpGet;
private HttpResponse response;
@Override
public void run() {
try {
httpGet = new HttpGet(
"http://localhost:8080/service/BEService/v1/get/USERID=10000/profile.ACCOUNT.SERVICE
httpGet.getRequestLine();
for (int userId = id; userId < id + noOfTasks; userId++) {
long start = System.nanoTime();
response = httpclient.execute(httpGet);
long end = System.nanoTime() - start;
}
} catch (Exception e) {
LOG.error("Threw a Exception in " + getClass().getSimpleName(), e);
}
}
}
更新代码:
如果我正在做这样的事情-
class Task implements Runnable {
private DefaultHttpClient httpclient = new DefaultHttpClient();
private HttpGet httpGet;
private HttpResponse response;
@Override
public void run() {
try {
for (int userId = id; userId < id + noOfTasks; userId++) {
httpGet = new HttpGet("http://localhost:8080/service/BEService/v1/get/USERID=10000/profile.ACCOUNT.SERVICE");
httpGet.getRequestLine();
long start = System.nanoTime();
response = httpclient.execute(httpGet);
long end = System.nanoTime() - start;
HttpEntity entity = response.getEntity();
EntityUtils.consume(entity);
}
} catch (Exception e) {
LOG.error("Threw a Exception in " + getClass().getSimpleName(), e);
}
}
}
那好吗?
我在这里做错什么吗?
是。如文档所述:
BasicClientConnectionManager是一个简单的连接管理器,一次仅维护一个连接。即使此类是线程安全的,也应仅由一个执行线程使用。BasicClientConnectionManager将努力将连接重新用于具有相同路由的后续请求。但是,如果持久连接的路由与连接请求的路由不匹配,它将关闭现有连接并针对给定的路由重新打开它。如果已经分配了连接,则抛出java.lang.IllegalStateException。
默认情况下,HttpClient使用BasicClientConnectionManager。
有关如何使用可处理多个线程中的请求的池连接管理器,请参阅“多线程请求执行”。
问题内容: 我正在使用google-api-client-java 1.2.1-alpha执行POST请求,并在我执行execute()HttpRequest时得到以下stacktrace。 在我捕获并忽略从先前的POST到相同URL的403错误并重新用于后续请求的传输之后,它立即发生。(这是将多个条目插入同一ATOM提要的循环)。 403之后,我应该做些什么来“清理”吗? 为什么我下面的代码试图
我有下面的代码,将检查,看看用户是否在数据库中可用之前,他被授予访问该网站,但是当用户输入任何值,它将登录他,即使他没有在数据库中注册。在这段代码之后是JQuery代码,我也用它来防止任何值被输入到数据库中,如果字段是空的,并且它不是默认的文本字段值它继续登录过程,而不是阻止我在填写所需字段之前做任何事情。 下一行是JQuery代码。
问题内容: 下面的简单测试案例失败了,但有一个例外。 我不知道怎么了 问题答案: Mockito要求您在存入方法调用时仅使用原始值或仅使用匹配器。完整的例外情况(您未在此处发布)肯定可以解释所有情况。 简单更改行: 至 它应该工作。
本文向大家介绍Vue使用Proxy代理后仍无法生效的解决,包括了Vue使用Proxy代理后仍无法生效的解决的使用技巧和注意事项,需要的朋友参考一下 vue.js 配置了前端代理却未能生效 记录一下最近踩得小坑: 配置完代理后请一定重新执行(重要,非常重要!) npm run dev 若重新执行命令后,代理仍为生效,请按下方步骤进行检查: 检查index.js文件中的代理是否配置正确,示例如下: 检
我们将app engine与CloudSQL结合使用,有时会出现以下异常。只有当我们从Java执行本机查询时才会发生这种情况(当我们使用JPA时不会发生这种情况)。知道怎么摆脱它吗? 异常[EclipseLink-4002](Eclipse持久性服务-2.3.2.v20111125-r10461):org。日食坚持不懈例外。DatabaseException内部异常:com。谷歌。云sql。jdb
如果将块分配给文件,使得文件的所有逻辑块都得到硬盘中的连续物理块,则这种分配方案被称为连续分配。 在下面显示的图像中,目录中有三个文件。 表中提到了起始块和每个文件的长度。 我们可以在表格中检查连续块是否按照需要分配给每个文件。 优点 实现起来很简单。 可获得优秀的读取性能。 支持随机访问文件。 缺点 磁盘将变成碎片。 文件增长可能很困难。