List copy = null;
synchronized (resourceManagers) {
copy = new ArrayList(resourceManagers);
resourceManagers.addReferenceCollectionListener(new ReferenceCollectionListener() {
public void memberAdded(ReferenceCollectionEvent event) {
ResourceManager resourceManager = (ResourceManager) event.getMember();
recoverResourceManager(resourceManager);
}
public void memberRemoved(ReferenceCollectionEvent event) {
}
});
}
for (Iterator iterator = copy.iterator(); iterator.hasNext();) {
ResourceManager resourceManager = (ResourceManager) iterator.next();
recoverResourceManager(resourceManager);
}
//what to do if there are recovery errors? or not all resource managers are online?
}