On 02/14/2013 09:03 PM, Oleg Kalnichevski wrote:
On Thu, 2013-02-14 at 16:11 +0530, Asankha C. Perera wrote:
Hi All
I was trying to use a custom connection pool implementation extending
the BasicNIOConnPool for sending messages. My use case requires me to
use different socket timeouts for different requests. When I want to
send out messages, I do something like the following (code simplified
for illustration)
final BasicHttpContext coreContext = new BasicHttpContext();
coreContext.setAttribute("timeout", 3000);
asyncRequester.execute(requestProducer, responseConsumer,
connectionPool, coreContext);
My connection pool overrides the requestCompleted() method, and tries to
read the socket timeout I had set earlier
public class UltraNIOConnPool extends BasicNIOConnPool {
protected void requestCompleted(SessionRequest request) {
super.requestCompleted(request);
Integer timeout = (Integer)
request.getSession().getAttribute("timeout");
if (timeout != null) {
NHttpClientConnection conn = (NHttpClientConnection)
request.getSession().getAttribute(ExecutionContext.HTTP_CONNECTION);
conn.setSocketTimeout(timeout);
}
}
}
However, the values I put into the coreContext above is not available in
the session within the requestCompleted(). I need to set the socket
timeout before the new connection is used. I am quite sure I am
overlooking something simpler.. so any help is very much appreciated
regards
asankha
Asankha
A custom request interceptor should be a better place to do so. The
request interceptor will give you access to the right execution context
containing your custom attribute(s).
Hope this helps
Oleg
Hi Oleg
Do you mean overriding the
HttpAsyncRequestExecutor.connected(NHttpClientConnection conn, Object
attachment) method? That too does not have the context set..
regards
asankha
--
Asankha C. Perera
AdroitLogic, http://adroitlogic.org
http://esbmagic.blogspot.com
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]