I'm creating a RESTEasy service using Client proxies and it works fine so far. However, I did notice that in a few of my functions I see the same line of code:
MyClass client = ProxyFactory.create(MyClass.class, "http://localhost:8080");
Is it better to take that out of the functions and make it a member variable of the class to reduce possible overhead? This service will handle load of 10000 reqs/min. Thanks
You can specify MyClass client as a spring bean, for instance, and inject it wherever it's needed. Be aware of thread safety because the RestEasy proxy client uses underneath the Apache Commons Http Client and as default the SimpleHttpConnectionManager which is not thread safe.
To achieve this in a multithreaded enironment(running in a Servlet Container) do this:
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);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With