/** * Reference counts and deactivate a configuration Notice: this won't remove the servers since a * server may have previous XIDs * * @param resourceConfig */ public void unRegister(final XARecoveryConfig resourceConfig) { RecoveryDiscovery discoveryRecord = configSet.get(resourceConfig); if (discoveryRecord != null && discoveryRecord.decrementUsage() == 0) { discoveryRecord = configSet.remove(resourceConfig); if (discoveryRecord != null) { discoveryRecord.stop(); } } }
/** * This will be called by then resource adapters, to register a new discovery * * @param resourceConfig */ public void register(final XARecoveryConfig resourceConfig) { RecoveryDiscovery newInstance = new RecoveryDiscovery(resourceConfig); RecoveryDiscovery discoveryRecord = configSet.putIfAbsent(resourceConfig, newInstance); if (discoveryRecord == null) { discoveryRecord = newInstance; discoveryRecord.start(false); } // you could have a configuration shared with multiple MDBs or RAs discoveryRecord.incrementUsage(); }
/** * We need to make sure that all resources are closed, we don't actually do this when a * resourceConfig is closed but maybe we should. */ public void stop() { for (RecoveryDiscovery recoveryDiscovery : configSet.values()) { recoveryDiscovery.stop(); } for (HornetQXAResourceWrapper hornetQXAResourceWrapper : recoveries.values()) { hornetQXAResourceWrapper.close(); } recoveries.clear(); configSet.clear(); }