A Roller user just reported a problem, here is the stack trace:

2002-04-26 10:36:16 StandardManager[/roller] Cannot serialize session attribute
session.roller for session 12E495204943E50434A5E3420231A166
java.io.NotSerializableException: org.exolab.castor.jdo.engine.DatabaseImpl
        at java.io.ObjectOutputStream.outputObject(Unknown Source)
        at java.io.ObjectOutputStream.writeObject(Unknown Source)
        at java.io.ObjectOutputStream.outputClassFields(Unknown Source)
        at java.io.ObjectOutputStream.defaultWriteObject(Unknown Source) 
        ...

The error that he got is due to the Persistent Session features of Tomcat. I think it is possible to turn off Persistent Sessions in the server.xml file, but I have not really tried this route - they are on by default and Roller should be able to live with them.

As a work around you can stop Roller, then delete the serialized session file. This file can be found in <tomcat>/work/localhost/roller/sessions.ser and it is safe to delete.  Then restart Tomcat and Roller should work fine.

I tried to avoid this problem by removing the RollerImpl object from the session in my session listener (see org.roller.presentation.RollerSession). But something must be wrong with my listener.  I will look into this before my next release.


Another fix/work-around might be to change the data member mJDO in org.roller.business.castor.RollerImpl to be transient.

Change this:

   private JDO mJDO = null;
to this:
   private transient JDO mJDO = null;


If you try that, please let me know if it stops the error you were getting.

P.S. This should be fixed in Roller 0.9.1

Main | Next day (Apr 26, 2002) »