6

クライアントプロキシを使用してRESTEasyサービスを作成していますが、これまでのところ正常に機能しています。ただし、いくつかの関数で同じコード行が表示されていることに気付きました。

MyClass client = ProxyFactory.create(MyClass.class, "http://localhost:8080");

それを関数から取り除き、それをクラスのメンバー変数にして、起こりうるオーバーヘッドを減らす方が良いでしょうか?このサービスは、10000 reqs/minの負荷を処理します。ありがとう

4

1 に答える 1

7

たとえば、MyClassクライアントをSpring Beanとして指定し、必要な場所に注入することができます。RestEasyプロキシクライアントはApacheCommonsHttp Clientの下で使用し、デフォルトではスレッドセーフではないSimpleHttpConnectionManagerを使用するため、スレッドセーフに注意してください。

マルチスレッド環境(サーブレットコンテナで実行)でこれを実現するには、次のようにします。

MultiThreadedHttpConnectionManager connectionManager = new MultiThreadedHttpConnectionManager();
HttpClient httpClient = new HttpClient(connectionManager);

// Only needed if you have a authentication
Credentials credentials = new UsernamePasswordCredentials(username, password);
httpClient.getState().setCredentials(AuthScope.ANY, credentials);
httpClient.getParams().setAuthenticationPreemptive(true);

clientExecutor = new ApacheHttpClientExecutor(httpClient);

MyClass client = ProxyFactory.create(MyClass.class, "http://localhost:8080", clientExecutor);
于 2013-03-19T19:26:10.533 に答える