/** Disconnects XMPP component if one is currently in use. */ private void stopComponent() { synchronized (connectSynRoot) { if (component == null || componentManager == null) return; if (connectRetry != null) { connectRetry.cancel(); connectRetry = null; } component.shutdown(); try { componentManager.removeComponent(component.getSubdomain()); } catch (ComponentException e) { logger.error(e, e); } component.dispose(); component = null; componentManager = null; } }