Dave Johnson on open web technologies, social software and Java
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
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.
private JDO mJDO = null;
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