@SuppressWarnings("unchecked") public static <T> T createClient(final Class<T> clazz, ClientConfig config) { // create the server URI URI uri = null; try { uri = new URI(config.getServer()); } catch (Exception ex) { throw new RuntimeException( "Error creating the URI form the server string: " + config.getServer(), ex); } T service = null; if (clientCache.containsKey(clazz)) { service = (T) clientCache.get(clazz); } else { // create the rest-easy provider factory ClientBuilder builder = ClientBuilder.newBuilder(); if (config.isAllowAllHttps()) { builder.hostnameVerifier(new AllowAllHostnameVerifier()); } // add the default interceptors. if (config.isDefaultLogInterceptor()) { builder.register(ClientServiceLogFilter.class); } // add the advanced interceptors List<Class> cpc = config.getComponentClasses(); if (cpc != null) { for (Class filter : cpc) { builder.register(filter); } } List<Object> filters = config.getComponents(); if (filters != null) { for (Object filter : filters) { builder.register(filter); } } Client client = builder.build(); WebTarget target = client.target(uri); service = ClientServiceProxyFactory.newResource(clazz, target); clientCache.put(clazz, service); } return service; }