我正在使用客户端代理创建RESTEasy服务,并且到目前为止效果很好。但是,我确实注意到,在我的一些函数中,我看到的是同一行代码:
MyClass client = ProxyFactory.create(MyClass.class, "http://localhost:8080");
是否最好将其从函数中删除并使其成为类的成员变量以减少可能的开销?此服务将处理10000 reqs/min的负载。谢谢
最佳答案
例如,您可以将MyClass客户端指定为spring bean,并在需要时将其注入(inject)。请注意线程安全性,因为RestEasy代理客户端在Apache Commons Http客户端以及默认情况下不是线程安全的SimpleHttpConnectionManager之下使用。
要在多线程环境(在Servlet容器中运行)中实现此目的,请执行以下操作:
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);