次のように、ProxyFactory と ClientExecutor を使用して RESTEasy でサービスを開発しました。
PoolingClientConnectionManager connectionManager = new PoolingClientConnectionManager();
DefaultHttpClient httpClient = new DefaultHttpClient(connectionManager);
HttpParams params = httpClient.getParams();
HttpConnectionParams.setConnectionTimeout(params, 5000);
HttpConnectionParams.setSoTimeout(params, 5000);
ClientExecutor clientExecutor = new ApacheHttpClient4Executor(httpClient);
MyClass client = ProxyFactory.create(MyClass.class, "http://www.example.com", clientExecutor);
それは常に完璧に機能しました。RESTEasy が ClientExecutor と ProxyFactory の両方を廃止した後、外部接続用に新しい ResteasyClient を提供しましたが、この新しい ResteasyClient がスレッドセーフかどうかはわかりません。これは、ドキュメントの新しいサンプル コードです。
ResteasyClient client = new ResteasyClientBuilder().build();
ResteasyWebTarget target = client.target("http://example.com/base/uri");
SimpleClient simple = target.proxy(SimpleClient.class);
更新: ResteasyClient でコードを使用したところ、これらのエラーの多くが発生しました。
javax.ws.rs.ProcessingException: Unable to invoke request
のせいで
java.lang.IllegalStateException: Invalid use of BasicClientConnManager: connection still allocated. Make sure to release the connection before allocating another one.