Yes, it is problem in SessionHolder implementation, but it is trivial to
fix:

>
> 01:public class SessionHolder
> 02:{
> 03:  private static final boolean DEBUG = true;
> 04:  private static ThreadLocal session;
> 05:
> 06:  public static Session getSession()
> 07:  {
> 08:    SessionHolder.connect();
> 09:
> 10:    return((Session )SessionHolder.session.get());
> 11:  }
> 12:
> 13:  public static void connect()
> 14:  {
> 15:    if (SessionHolder.session.get() == null)
> 16:    {
> 17:      try
> 18:      {
> 19:        SessionFactory sessionFactory = new Configuration()
> 20:          .configure().buildSessionFactory();
> 21:        SessionHolder.session.set( sessionFactory.openSession() );
> 22:      } catch (HibernateException e)
> 23:      {
> 24:         throw new RuntimeException(e);
               }
> 26:    }
        }
> 34:
> 35:  public static void disconnect()
> 36:  {
> 37:    if (SessionHolder.session.get() != null)
> 38:    {
> 39:      try
> 40:      {
> 41:        SessionHolder.session.close();
> 42:         } catch (HibernateException e) {
                         throw new RuntimeException(e);
          }
> 44:    }
> 45:  }
> 46:}



>
> QHat do you think?  Is there a better way that I should be doing this
> without rewriting a heck of a lot of code?  I like the idea of having the
> session establishment self-contained within the SessionHolder object?
>
> Does this SessionHolder seem to be the culprit behind the
> ConcurrentModificationException issues?
>
> > > We seem to be having some problems like this in more than one section
> > > of code. I really don't understand it at all; we suspect some kind of
> > > JVM bug. Unfortunately, no-one has been able to deliver a testcase
> > > that will help me reproduce this on my machine.
>
> > > I can't really do much, until I can reproduce it.
>
> > > P.S. You might also get this if you share a session between two
> > > threads - but at least some occurrences of this problem do not seem to
> > > be caused by this....
>
> > > >I'm receiving an Exception in a Hibernate application I've built, and
> > > >I'm a bit confused as to why this might be happening.  The code at
> > > >where the Exception is thrown is quite simple, and I think this might
> > > >be a bug in Hibernate itself.  I've searched Google for this to no
> > > >avail, and I'm using the latest recommended Hibernate release as
> > > >available on the site.
>
> > > >The exception I receive has a stacktrace as follows:
>
> > > > java.util.ConcurrentModificationException
> > > >  at java.util.AbstractList$Itr.checkForComodification(Unknown
Source)
> > > >  at java.util.AbstractList$Itr.remove(Unknown Source)
> > > >  at
net.sf.hibernate.impl.SessionImpl.executeAll(SessionImpl.java:2101)
> > > >  at net.sf.hibernate.impl.SessionImpl.execute(SessionImpl.java:2061)
> > > >  at net.sf.hibernate.impl.SessionImpl.flush(SessionImpl.java:2005)
> > > >  at net.sf.hibernate.transaction.JDBCTransaction.commit(
> > > >       JDBCTransaction.java:57
> > > >     )
> > > >  at
> > org.express.ftpsrv.ConnectionHandler.<init>(ConnectionHandler.java:72)
> > > >  at
> > org.express.ftpsrv.ConnectionListener.accept(ConnectionListener.java:56)
> > > >  at
> > org.express.ftpsrv.ConnectionListener.main(ConnectionListener.java:19)
> > > >
> > > >And the code at ConnectionHandler.java:72 that causes this looks
like:
> > > >
> > > >  52:this.ftpSession = new FtpSession();
> > > >  53:
> > > >  54:/* ftpSession.setSessionId() does not operate on the unique
> > > >  55: * 'id' field that is also part of the ftpSession object.
> > > >  56: */
> > > >  57:ftpSession.setSessionId(UniqueGenerator.makeUniqueNumber());
> > > >  58:
> > > >  59:Date currentDate = new Date();
> > > >  60:currentDate.setTime(System.currentTimeMillis());
> > > >  61:this.ftpSession.setBegTime(currentDate);
> > > >  62:
> > > >  63:net.sf.hibernate.Session hSession = null;
> > > >  64:Transaction transaction = null;
> > > >  65:
> > > >  66:try
> > > >  67:{
> > > >  68:  hSession = SessionHolder.getSession();
> > > >  69:
> > > >  70:  transaction = hSession.beginTransaction();
> > > >  71:  hSession.save(this.ftpSession);
> > > >  72:  transaction.commit();
> > > >  73:} catch (HibernateException e)
> > > >  74:{
> > > >  75:  transaction.rollback();
> > > >  76:}
>
> > > >I'd like to point out that this seems to be an intermittent thing,
> > > >occurring more often when I instantiate many objects quickly (the
> > > >quoted lines 52-72, above, are within a cronstructor in the Object).
>
> > > >Does anyone have any ideas as to what might be happening or where I
> > > >might look for additional information in order to track down this
> > > >bug? Thanks, in advance, for any response on this.
>
> --          _
> __ __ ___ _| | William R. Lorenz <[EMAIL PROTECTED]>
> \ V  V / '_| | http://www.clevelandlug.net/ ; "Every revolution was
>  \./\./|_| |_| first a thought in one man's mind." - Ralph Waldo Emerson
>
>



-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
_______________________________________________
hibernate-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/hibernate-devel

Reply via email to