Sto lavorando a un progetto per creare un client di riposo generico per la nostra applicazione per l'integrazione attuale e futura con più servizi (diversi sistemi esterni). Di seguito è riportato un diagramma di alto livello
Sto pensando di creare un RestClient per host esterno e di memorizzarlo come valore in una mappa con nome di servizio come chiave e rest client. Di seguito è riportata la mia classe RestClient (che verrà memorizzata nella cache) che include ResteasyWebTarget.
public class RestClient {
private ResteasyWebTarget target;
@Singleton
public class RestClientRepository {
private final Map<String, RestClient> repository =
new ConcurrentHashMap<String, RestClient>()
La mia implementazione predefinita userà RestEasy. Dato che il mio codice cliente farà parte di una webapp (ambiente multi-cavo). Userò PoolingClientConnectionManager
ClientConnectionManager cm = new PoolingClientConnectionManager();
HttpClient httpClient = new DefaultHttpClient(cm);
ApacheHttpClient4Engine engine = new ApacheHttpClient4Engine(httpClient);
ResteasyClient client = ((ResteasyClientBuilder) ResteasyClientBuilder
.newBuilder()).httpEngine(engine).build();
C'è una soluzione migliore di questo approccio?