Re: [tools] Toolbox preventing session serialization
Christopher Schultz <[email protected]> Thu, 06 Mar 2014 13:04:35 -0500
| Newsgroups | gmane.comp.jakarta.velocity.user |
|---|---|
| Message-ID | <[email protected]> |
Claude,
On 3/6/14, 3:32 AM, Claude Brisson wrote:
> The Toolbox itself is seralizable. But it's enough to have only one
> non-serializable object inside the toolbox. There should be more
> informations in the stack trace.
Here's the stack trace I get from Tomcat:
java.io.NotSerializableException: org.apache.velocity.runtime.log.Log
at
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1354)
at
java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990)
at
java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915)
at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798)
at
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370)
at java.util.HashMap.readObject(HashMap.java:1184)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at
java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1017)
at
java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1893)
at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798)
at
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
at
java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990)
at
java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915)
at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798)
at
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370)
at
org.apache.catalina.session.StandardSession.doReadObject(StandardSession.java:1602)
Looks like the logger is the problem?
I can confirm that removing the Toolbox object from the session prior to
restarting will allow my session to resume, so its definitely the
Toolbox (or obviously some object references through it).
Here's my toolbox configuration, if that helps:
<tools>
<toolbox scope="application">
<tool class="org.apache.velocity.tools.generic.AlternatorTool" />
<tool key="floatMath"
class="org.apache.velocity.tools.generic.MathTool" />
<tool key="escape"
class="org.apache.velocity.tools.generic.EscapeTool" />
<tool key="possiblyEscape" class="com.mysoftware.util.HTMLEscapeTool" />
^^^ This guy extends EscapeTool and adds a method, no data
<tool key="dateFormat"
class="org.apache.velocity.tools.generic.DateTool" />
<tool key="list" class="org.apache.velocity.tools.generic.ListTool" />
<tool key="locallyNamedUtil" class="com.mysoftware.LocallyNamed$Util" />
^^ This guy is a class without any data, but does not
implement Serializable. I'll modify it, but I don't suspect
it will change the Log problem shown above.
<tool class="org.apache.velocity.tools.generic.SortTool" />
<tool key="resource"
class="org.apache.velocity.tools.generic.ResourceTool" />
</toolbox>
<toolbox scope="request" xhtml="true">
<tool class="org.apache.velocity.tools.struts.StrutsLinkTool" />
<tool class="org.apache.velocity.tools.struts.ValidatorTool" />
<tool key="msg" class="org.apache.velocity.tools.struts.MessageTool" />
<tool class="org.apache.velocity.tools.struts.ErrorsTool" />
<tool class="org.apache.velocity.tools.struts.FormTool" />
<tool key="parameterParser"
class="org.apache.velocity.tools.view.tools.ParameterParser" />
<tool key="cookies" class="org.apache.velocity.tools.view.CookieTool" />
</toolbox>
</tools>
My real question is why there is a Toolbox in my session at all... I
shouldn't need one, right?
-chris
signature.asc
(application/pgp-signature, 924 B)
-----BEGIN PGP SIGNATURE----- Version: GnuPG v1 Comment: GPGTools - http://gpgtools.org Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/ iQIcBAEBCAAGBQJTGLizAAoJEBzwKT+lPKRYBY8P/RQBzXxiXrRpgnfTP10OIU/2 rjxDhT6W/R0CeH+BcxItN+XwIpfW8I+0+EM/CMQ9w20olDgDdEzHcEaIrKD/nuSi F9yf8sSEg1RSZRTM/YzJqJEAsFidijbbQiQVZnN7IEcz8bracRL18vfvvXq/1uWo lsvrVkIBeokhjbR3fhGcrJDmjoCnajaoQCvtXARnUZBcutRHNOX41zXtXlgKLLjl 1S4K+CVgSOV1pOe5VZ1CavSal1dpWExHwwPzsdmNaPixJ8ZAAA2CS6N0DhthXpGN 3kFaIoGDEVFMJK+xDVTSehfwVsF3oWjJo3c8ROz/etl5JtxOehhTTk3mFRiAjAfQ n3EQzBvj0ZNGc5k1flVmtmjHSS3S+tbEXZN4gHX3uQCy4tvVFwEa50iqFipsHdwm aY7vwq+jJk1lUUEli34BVooqWLMeTOtUvsoBO17wYD3Md3zicfqS2WO/DMKa6P47 kfGN0YV2G3X8TJxa88ajUkfa2wVe9L9hT0aBYrPBKOswq7idiA6XNoeyam+ridb9 yKsvmpTxj58kJF8Zn6GgGsD9natJXT+kYSfngHQN6i7DsnspNV9DvDN39sWjK5A1 2V4+tYuLuuzNWwaHdcspBPDh2nt17BOz1KT3fFDJahGcionIQNt4fcWejPoSnVKV MRmK3foBuXBRIFNE6lf3 =VLws -----END PGP SIGNATURE-----