private void notifyConnectionClosed() {
		if(_dataModelConnection != null){
			// hierdurch werden laufende Operationen in der 2. Verbindung unterbrochen, die die folgenden Aktionen blockieren können.
			// Deswegen am Anfang der Methode ausführen.
			_dataModelConnection.disconnect(false, "");
		}
		List<DavConnectionListener> connectionListenersCopy = new ArrayList<DavConnectionListener>(_connectionListeners);
		for(DavConnectionListener davConnectionListener : connectionListenersCopy) {
			try {
				davConnectionListener.connectionClosed(this);
			}
			catch(Exception e) {
				_debug.warning("Fehler beim Verarbeiten der connectionClosed-Meldung", e);
			}
		}
		synchronized(_lock) {
			if(_implicitUnsubscriber != null) {
				_implicitUnsubscriber.interrupt();
				_implicitUnsubscriber = null;
			}
			_isConnected = false;
			_isLoggedIn = false;
			if(_dataModel instanceof DafDataModel && _dataModelConnection == null) {
				((DafDataModel) _dataModel).close();
			}
			if(_subscriptionManager != null) {
				_subscriptionManager.close();
			}
			if(_cacheManager != null) {
				_cacheManager.close();
			}
		}
		DataFactory.forget(getDataModel());
	}