@ Override public void close ( ) { if ( closed . compareAndSet ( false , true ) ) { super . close ( ) ; synchronized ( baseClients ) { for ( WebClient wc : baseClients ) { wc . close ( ) ; } } String moduleName = getModuleName ( ) ; synchronized ( clientsPerModule ) { List < JAXRSClientImpl > clients = clientsPerModule . get ( moduleName ) ; if ( clients != null ) { // the only way this isn't null is if the same client was closed twice clients . remove ( this ) ; if ( clients . isEmpty ( ) ) { for ( String id : busCache . keySet ( ) ) { if ( id . startsWith ( moduleName ) || id . startsWith ( "unknown:" ) ) { busCache . remove ( id ) . shutdown ( false ) ; } } clientsPerModule . remove ( moduleName ) ; } } } baseClients = null ; } }
make the cxf ClientImpl . close works and we should close all clients too