Hibernate version: 2.1.6  
Can anyone explain the reason why the PersistentCollection.class needs to throw a LazyInitializationException if a session is disconnected? 
In that circumstance could it not connect and then disconnect instead, perhaps change the code to:
Code:
protected final void initialize(boolean writing) {
      if (!initialized) {
         if (initializing) throw new AssertionFailure("cannot access loading collection");
         if ( isConnectedToSession() )  {
            if ( session.isConnected() ) {
               try {
                   session.initializeCollection(this, writing);
               }
               catch (Exception e) {
                  LogFactory.getLog(PersistentCollection.class).error(
                     "Failed to lazily initialize a collection", e
                  );
                  throw new LazyInitializationException("Failed to lazily initialize a collection", e);
               }
            }
            else {
                 session.reconnect();
                 try {
                     session.initializeCollection(this, writing);
                 }
                 catch (Exception e) {
                  LogFactory.getLog(PersistentCollection.class).error(
                     "Failed to lazily initialize a collection", e
                  );
                  throw new LazyInitializationException("Failed to lazily initialize a collection", e);
               }
               session.disconnect();
               
               //throw new LazyInitializationException("Failed to lazily initialize a collection - session is disconnected");
            }
         }
         else {
            throw new LazyInitializationException("Failed to lazily initialize a collection - no session or session was closed");
         }
      }
   }
[/code]