java - Multi-threaded connection manager with Jersey Apache Client 4 -


i have jersey client , running, using apache client 4 library, this:

private client createclient() {     apachehttpclient4config cc = new defaultapachehttpclient4config();     // boring stuff here     return apachehttpclient4.create(cc); } 

but default uses basicclientconnmanager, doesn't allow multi-threaded connections.

the apachehttpclient4config javadoc says need set property_connection_manager threadsafeclientconnmanager instance if want multi-threaded operation. can this, , works ok:

private client createclient() {     apachehttpclient4config cc = new defaultapachehttpclient4config();     cc.getproperties().put(apachehttpclient4config.property_connection_manager,         new threadsafeclientconnmanager());     // boring stuff here     return apachehttpclient4.create(cc); } 

but threadsafeclientconnmanager deprecated. annoying.

the more modern version poolinghttpclientconnectionmanager. unfortunately, though, apachehttpclient4.create() method requires connection manager implementation of clientconnectionmanager (itself deprecated), , poolinghttpclientconnectionmanager doesn't implement interface. if try use it, connection manager gets ignored , we're basicclientconnmanager.

how can end thread-safe client without using that's deprecated?

you can create client follows (see https://github.com/phillbarber/connection-leak-test/blob/master/src/test/java/com/github/phillbarber/connectionleak/integrationtestthatexaminesconnectionpoolbeforeandafterrun.java#l30-l33):

    client = new apachehttpclient4(new apachehttpclient4handler(httpclients.custom()             .setconnectionmanager(new poolinghttpclientconnectionmanager())             .build(), null, false)); 

Comments

Popular posts from this blog

matlab - "Contour not rendered for non-finite ZData" -

delphi - Indy UDP Read Contents of Adata -

javascript - Any ideas when Firefox is likely to implement lengthAdjust and textLength? -