相关疑难解决方法(0)

使用HttpRequest.execute()的异常:无效使用SingleClientConnManager:仍然分配了连接

我正在使用google-api-client-java 1.2.1-alpha来执行POST请求,并在执行()HttpRequest时获得以下stacktrace.

它在我捕获并忽略从先前的POST到同一URL的403错误后立即发生,并重新使用传输进行后续请求.(它在一个循环中插入多个条目到同一个ATOM提要).

在403之后,我应该做些什么来"清理"?

Exception in thread "main" java.lang.IllegalStateException: Invalid use of SingleClientConnManager: connection still allocated.
Make sure to release the connection before allocating another one.
    at org.apache.http.impl.conn.SingleClientConnManager.getConnection(SingleClientConnManager.java:199)
    at org.apache.http.impl.conn.SingleClientConnManager$1.getConnection(SingleClientConnManager.java:173)
    at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:390)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:641)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:576)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:554)
    at com.google.api.client.apache.ApacheHttpRequest.execute(ApacheHttpRequest.java:47)
    at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:207)
    at au.com.machaira.pss.gape.RedirectHandler.execute(RedirectHandler.java:38)
    at au.com.machaira.pss.gape.ss.model.records.TableEntry.executeModification(TableEntry.java:81)
Run Code Online (Sandbox Code Playgroud)

为什么我下面的代码会尝试获取新连接?

java httpclient google-api-java-client

80
推荐指数
4
解决办法
6万
查看次数

如何在多线程操作中使用 HttpAsyncClient?

与这个问题密切相关:How to use HttpClient with multithreaded operation? ,我想知道 apache HttpAsyncClient 是否是线程安全的,或者它是否也需要使用 MultiThreadedHttpConnectionManager 或 ThreadSafeClientConnManager。

如果确实需要这样的连接管理器,异步库中是否存在?

我能够在异步库中找到 PoolingClientAsyncConnectionManager,但我不确定这是否是我需要的。

或者,我正在考虑使用 ThreadLocal 为每个线程创建一个 HttpAsyncClient 对象。

请注意,与我之前引用的问题不同,我需要状态在会话之间保持独立,即使多个会话访问同一个域。如果Cookie在会话1套,饼干应该不会是会议2。出于这个原因可见,我也考虑每一个请求创建一个全新的HttpAsyncClient对象,但我得到的印象应该有更好的办法.

谢谢。

java multithreading apache-httpclient-4.x

5
推荐指数
1
解决办法
8116
查看次数