Session clustering with MyFaces (JSF) fails
-------------------------------------------
Key: CDV-383
URL: https://jira.terracotta.org/jira//browse/CDV-383
Project: Community Development
Issue Type: Bug
Components: Sessions
Affects Versions: 2.4.1
Reporter: Daniel Wiell
Assigned To: Issue Review Board
Attachments: myfaces-test.war, tc-config.xml
When the number of request exceeds the number of view stored in the session,
the following exception is thrown:
com.tc.exception.TCNonPortableObjectError:
*******************************************************************************
Attempt to share an instance of a non-portable class referenced by a portable
class. This
unshareable class is a subclass of a JVM- or host machine-specific resource.
Please either
modify the class hierarchy or ensure that instances of this class don't enter
the shared object
graph.
Referring class :
org.apache.commons.collections.map.AbstractReferenceMap$ReferenceEntry
Referring field :
org.apache.commons.collections.map.AbstractHashedMap$HashEntry.value
Thread : http-9081-Processor4
JVM ID : VM(0)
Unshareable superclass names: java.lang.ref.SoftReference
*******************************************************************************
at
com.tc.object.ClientObjectManagerImpl.throwNonPortableException(ClientObjectManagerImpl.java:720)
at
com.tc.object.ClientObjectManagerImpl.checkPortabilityOfTraversedReference(ClientObjectManagerImpl.java:616)
at
com.tc.object.ClientObjectManagerImpl.access$800(ClientObjectManagerImpl.java:69)
at
com.tc.object.ClientObjectManagerImpl$NewObjectTraverseTest.checkPortability(ClientObjectManagerImpl.java:942)
at com.tc.object.Traverser.addReferencedObjects(Traverser.java:48)
at com.tc.object.Traverser.traverse(Traverser.java:82)
at
com.tc.object.ClientObjectManagerImpl.addToManagedFromRoot(ClientObjectManagerImpl.java:876)
at
com.tc.object.ClientObjectManagerImpl.create(ClientObjectManagerImpl.java:268)
at
com.tc.object.ClientObjectManagerImpl.lookupOrCreateIfNecesary(ClientObjectManagerImpl.java:332)
at
com.tc.object.ClientObjectManagerImpl.lookupOrCreate(ClientObjectManagerImpl.java:305)
at
com.tc.object.tx.ClientTransactionManagerImpl.fieldChanged(ClientTransactionManagerImpl.java:516)
at com.tc.object.TCObjectImpl.objectFieldChanged(TCObjectImpl.java:294)
at
com.tc.object.bytecode.hook.impl.ArrayManager.objectArrayChanged(ArrayManager.java:122)
at
com.tc.object.bytecode.ManagerUtil.objectArrayChanged(ManagerUtil.java:359)
at
org.apache.commons.collections.map.AbstractHashedMap.addEntry(AbstractHashedMap.java:524)
at
org.apache.commons.collections.map.AbstractHashedMap.addMapping(AbstractHashedMap.java:492)
at
org.apache.commons.collections.map.AbstractHashedMap.put(AbstractHashedMap.java:282)
at
org.apache.commons.collections.map.AbstractReferenceMap.put(AbstractReferenceMap.java:255)
at
org.apache.myfaces.application.jsp.JspStateManagerImpl$SerializedViewCollection.add(JspStateManagerImpl.java:628)
at
org.apache.myfaces.application.jsp.JspStateManagerImpl.saveSerializedViewInServletSession(JspStateManagerImpl.java:453)
at
org.apache.myfaces.application.jsp.JspStateManagerImpl.saveSerializedView(JspStateManagerImpl.java:312)
at
com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:601)
at
org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:41)
at org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:132)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:140)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at com.tc.tomcat55.session.SessionValve55.tcInvoke(SessionValve55.java:63)
at com.tc.tomcat55.session.SessionValve55.invoke(SessionValve55.java:50)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
at
org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
at
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at
org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:595)
A minimal war has been attached. The number of views stored in the session has
been reduced to 5, in order to replicate the problem quicker. To reproduce,
deploy the war in the Terracotta Session Configurator, point the browser to one
of the servers and reload the page 5 times.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
https://jira.terracotta.org/jira//secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
_______________________________________________
tc-dev mailing list
[email protected]
http://lists.terracotta.org/mailman/listinfo/tc-dev