[jboss-jira] [JBoss JIRA] Updated: (JBCLUSTER-150) CNFE issues with Hibernate and JBoss Cache

Brian Stansberry (JIRA) jira-events at lists.jboss.org
Tue Mar 20 16:36:49 EDT 2007


     [ http://jira.jboss.com/jira/browse/JBCLUSTER-150?page=all ]

Brian Stansberry updated JBCLUSTER-150:
---------------------------------------

    Fix Version/s: Q2Y7
                       (was: Q4Y6)

Solved in EJB3 for pessimistic locking in Q406 and for optimistic in Q107. Remaining issue is to port fix to Hibernate code base.

> CNFE issues with Hibernate and JBoss Cache
> ------------------------------------------
>
>                 Key: JBCLUSTER-150
>                 URL: http://jira.jboss.com/jira/browse/JBCLUSTER-150
>             Project: JBoss Clustering
>          Issue Type: Bug
>      Security Level: Public(Everyone can see) 
>            Reporter: Brian Stansberry
>         Assigned To: Brian Stansberry
>             Fix For: Q2Y7
>
>
> Hibernate w/ JBC as 2nd level cache can potentially place instances of custom user classes in the cache.  Can happen if the query cache is used, since instances of custom classes can be parameters to queries.
> This leads to replication or state transfer problems like the following if the custom classes are not visible to JBC's classloader (i.e. the custom classes aren't in server/all/lib).   For regular entity caching, Hibernate stores primitives in the cache, so this is less of an issue.  Problem is more with the query cache.
> java.lang.ClassNotFoundException: No ClassLoaders found for: services.entities.ProductDemandPK
>         at org.jboss.mx.loading.LoadMgr3.beginLoadTask(LoadMgr3.java:212)
>         at org.jboss.mx.loading.RepositoryClassLoader.loadClassImpl(RepositoryClassLoader.java:511)
>         at org.jboss.mx.loading.RepositoryClassLoader.loadClass(RepositoryClassLoader.java:405)
>         at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
>         at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
>         at java.lang.Class.forName0(Native Method)
>         at java.lang.Class.forName(Class.java:242)
>         at java.io.ObjectInputStream.resolveClass(ObjectInputStream.java:585)
>         at org.jboss.invocation.MarshalledValueInputStream.resolveClass(MarshalledValueInputStream.j
> ava:109)
>         at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1544)
>         at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1466)
>         at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1699)
>         at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305)
>         at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1908)
>         at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1832)
>         at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1719)
>         at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305)
>         at java.io.ObjectInputStream.readObject(ObjectInputStream.java:348)
>         at org.jboss.cache.Fqn.readExternal(Fqn.java:355)
>         at java.io.ObjectInputStream.readExternalData(ObjectInputStream.java:1755)
>         at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1717)
>         at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305)
>         at java.io.ObjectInputStream.readObject(ObjectInputStream.java:348)
>         at org.jboss.cache.loader.NodeData.readExternal(NodeData.java:59)
>         at java.io.ObjectInputStream.readExternalData(ObjectInputStream.java:1755)
>         at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1717)
>         at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305)
>         at java.io.ObjectInputStream.readObject(ObjectInputStream.java:348)
>         at org.jboss.cache.statetransfer.StateTransferIntegrator_140.integrateStateTransferChildren(
> StateTransferIntegrator_140.java:241)
>         at org.jboss.cache.statetransfer.StateTransferIntegrator_140.integrateStateTransferChildren(
> StateTransferIntegrator_140.java:271)
>         at org.jboss.cache.statetransfer.StateTransferIntegrator_140.integrateStateTransferChildren(
> StateTransferIntegrator_140.java:271)
>         at org.jboss.cache.statetransfer.StateTransferIntegrator_140.integrateStateTransferChildren(
> StateTransferIntegrator_140.java:271)
>         at org.jboss.cache.statetransfer.StateTransferIntegrator_140.integrateTransientState(StateTr
> ansferIntegrator_140.java:222)
>         at org.jboss.cache.statetransfer.StateTransferIntegrator_140.integrateTransientState(StateTr
> ansferIntegrator_140.java:97)
>         at org.jboss.cache.TreeCache._setState(TreeCache.java:2640)
>         at org.jboss.cache.TreeCache.access$000(TreeCache.java:86)
>         at org.jboss.cache.TreeCache$MessageListenerAdaptor.setState(TreeCache.java:5306)
>         at org.jgroups.blocks.MessageDispatcher$ProtocolAdapter.passUp(MessageDispatcher.java:614)
>         at org.jgroups.blocks.RequestCorrelator.receive(RequestCorrelator.java:331)
>         at org.jgroups.blocks.MessageDispatcher$ProtocolAdapter.handleUp(MessageDispatcher.java:722)
>         at org.jgroups.blocks.MessageDispatcher$ProtocolAdapter.access$300(MessageDispatcher.java:55
> 4)
>         at org.jgroups.blocks.MessageDispatcher$1.run(MessageDispatcher.java:691)
>         at java.lang.Thread.run(Thread.java:595)
> 	
> JBC's region-based marshalling API is meant for dealing with this kind of thing.  Need to see how Hibernate can be configured to work with this API.  Expect this will lead to JIRAs in the Hibernate and possible EBJ3 project.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        



More information about the jboss-jira mailing list