Hi,

Firstly, I'm using Tomcat 5.5 and Wicket 1.3.5

I've recently been tasked with running our current application in a
clustered environment.  Having got the cluster configured (sticky sessions
and session replication) I figured the app should run without a problem
and it does, mostly.

I've found a problem whereby it does not appear that the DiskPageStore
file is being clustered correctly (its also possible that I've missed
something)..  Our app has a feature that lets the user navigate backwards
from the current page, retrieving the previous pages from the
DiskPageStore and providing links on the pages (Back to SearchResults,
previous page, etc.) to allow for backwards navigation.  On a single
server this works, but in a clustered environment if the session was
created on server A, then if server A failed over to server B, Wicket
throws a StackOverflowError (Top of the stack trace is below).  Has
anybody seen this behaviour before?  I have seen some comments about
clusters failing over and exceptions being thrown on a subsequent use of
the back button; is this still the case as that is essentially what we are
doing with pages in a flow.

Any help appreciated.

java.lang.StackOverflowError
        java.io.ObjectStreamClass.readNonProxy(ObjectStreamClass.java:600)
        
java.io.ObjectInputStream.readClassDescriptor(ObjectInputStream.java:789)
        java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1534)
        java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1466)
        
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1699)
        java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305)
        java.io.ObjectInputStream.readObject(ObjectInputStream.java:348)
        
org.joda.time.chrono.ISOChronology$Stub.readObject(ISOChronology.java:210)
        sun.reflect.GeneratedMethodAccessor34.invoke(Unknown Source)
        
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        java.lang.reflect.Method.invoke(Method.java:585)
        java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:946)
        java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1809)
        
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1719)
        java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305)
        java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1908)
        java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1832)
        
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1719)
        java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305)
        java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1908)
        java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1832)
        
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1719)
        java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305)
        java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1908)
        java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1832)
        
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1719)
        java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305)
        java.io.ObjectInputStream.readObject(ObjectInputStream.java:348)
        java.util.ArrayList.readObject(ArrayList.java:591)
        sun.reflect.GeneratedMethodAccessor33.invoke(Unknown Source)
        
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        java.lang.reflect.Method.invoke(Method.java:585)
        java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:946)
        java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1809)
        
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1719)
        java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305)
        java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1908)
        java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1832)
        
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1719)
        java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305)
        java.io.ObjectInputStream.readArray(ObjectInputStream.java:1634)
        java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1299)
        java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1908)
        java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1832)
        
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1719)
        java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305)
        java.io.ObjectInputStream.readObject(ObjectInputStream.java:348)
        org.apache.wicket.util.lang.Objects.byteArrayToObject(Objects.java:393)
        
org.apache.wicket.protocol.http.pagestore.AbstractPageStore.deserializePage(AbstractPageStore.java:228)
        
org.apache.wicket.protocol.http.pagestore.DiskPageStore.getPage(DiskPageStore.java:707)
        
org.apache.wicket.protocol.http.pagestore.DiskPageStore.convertToPage(DiskPageStore.java:1234)
        
org.apache.wicket.protocol.http.SecondLevelCacheSessionStore$SecondLevelCachePageMap.getLastPage(SecondLevelCacheSessionStore.java:228)
        
org.apache.wicket.protocol.http.SecondLevelCacheSessionStore$SecondLevelCachePageMap.get(SecondLevelCacheSessionStore.java:296)
        org.apache.wicket.Session.getPage(Session.java:751)
        
org.apache.wicket.protocol.http.pagestore.AbstractPageStore$PageHolder.readResolve(AbstractPageStore.java:363)
        sun.reflect.GeneratedMethodAccessor51.invoke(Unknown Source)
        
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        java.lang.reflect.Method.invoke(Method.java:585)
        java.io.ObjectStreamClass.invokeReadResolve(ObjectStreamClass.java:1033)
        
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1728)
        java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305)
        java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1908)
        java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1832)
        
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1719)
        java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305)
        java.io.ObjectInputStream.readArray(ObjectInputStream.java:1634)
        java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1299)
        java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1908)
        java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1832)
        
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1719)
        java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305)
        java.io.ObjectInputStream.readObject(ObjectInputStream.java:348)
        org.apache.wicket.util.lang.Objects.byteArrayToObject(Objects.java:393)
        
org.apache.wicket.protocol.http.pagestore.AbstractPageStore.deserializePage(AbstractPageStore.java:228)
        
org.apache.wicket.protocol.http.pagestore.DiskPageStore.getPage(DiskPageStore.java:707)
        
org.apache.wicket.protocol.http.pagestore.DiskPageStore.convertToPage(DiskPageStore.java:1234)
        
org.apache.wicket.protocol.http.SecondLevelCacheSessionStore$SecondLevelCachePageMap.getLastPage(SecondLevelCacheSessionStore.java:228)
        
org.apache.wicket.protocol.http.SecondLevelCacheSessionStore$SecondLevelCachePageMap.get(SecondLevelCacheSessionStore.java:296)
        org.apache.wicket.Session.getPage(Session.java:751)
        
org.apache.wicket.protocol.http.pagestore.AbstractPageStore$PageHolder.readResolve(AbstractPageStore.java:363)
        sun.reflect.GeneratedMethodAccessor51.invoke(Unknown Source)
        
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        java.lang.reflect.Method.invoke(Method.java:585)






---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to