<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<body link="#355491" alink="#4262a1" vlink="#355491" style="background: #e2e2e2; margin: 0; padding: 20px;">

<div>
        <table cellpadding="0" bgcolor="#FFFFFF" border="0" cellspacing="0" style="border: 1px solid #dadada; margin-bottom: 30px; width: 100%; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
                <tbody>
                        <tr>

                                <td>

                                        <table border="0" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF" style="border: solid 2px #ccc; background: #dadada; width: 100%; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
                                                <tbody>
                                                        <tr>
                                                                <td bgcolor="#000000" valign="middle" height="58px" style="border-bottom: 1px solid #ccc; padding: 20px; -moz-border-radius-topleft: 3px; -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 5px; -webkit-border-top-left-radius: 5px;">
                                                                        <h1 style="color: #333333; font: bold 22px Arial, Helvetica, sans-serif; margin: 0; display: block !important;">
                                                                        <!-- To have a header image/logo replace the name below with your img tag -->
                                                                        <!-- Email clients will render the images when the message is read so any image -->
                                                                        <!-- must be made available on a public server, so that all recipients can load the image. -->
                                                                        <a href="https://community.jboss.org/index.jspa" style="text-decoration: none; color: #E1E1E1">JBoss Community</a></h1>
                                                                </td>

                                                        </tr>
                                                        <tr>
                                                                <td bgcolor="#FFFFFF" style="font: normal 12px Arial, Helvetica, sans-serif; color:#333333; padding: 20px;  -moz-border-radius-bottomleft: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 5px; -webkit-border-bottom-left-radius: 5px;"><h3 style="margin: 10px 0 5px; font-size: 17px; font-weight: normal;">
    issues with replicated infinispan cache and classloading - ClassNotFoundException deserializing packet
</h3>
<span style="margin-bottom: 10px;">
    created by <a href="https://community.jboss.org/people/hatchetman82">Radai Rosenblatt</a> in <i>JBoss AS 7 Development</i> - <a href="https://community.jboss.org/message/824702#824702">View the full discussion</a>
</span>
<hr style="margin: 20px 0; border: none; background-color: #dadada; height: 1px;">

<div class="jive-rendered-content"><p>Hi.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>I have an *.ear deployed on 2 clustered AS7 (7.1.3) machines, inside this ear is an ejb jar that uses drools (drools jars are packed in the ear's /lib directory).</p><p>this application uses a replicated infinispan cache, defined with module="deployment.my.ear" which, according to the docs, means the cache uses the deployment's classpath.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>the class that i place as a value into the cache is externalizable, and serializes/deserializes drools classes in its writeExternal()/readExternal() methods.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>when i put something in the cache from node A, i get the following exception on the receiving node B (also mirrored in A's log):</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>Caused by: java.lang.ClassNotFoundException: org.drools.rule.DialectRuntimeRegistry from [Module "org.jboss.as.clustering.common:main" from local module loader @3c941140 (roots: C:\[install dir]\modules)]</p><p>&#160;&#160;&#160; at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:190)</p><p>&#160;&#160;&#160; at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:468)</p><p>&#160;&#160;&#160; at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:456)</p><p>&#160;&#160;&#160; at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:398)</p><p>&#160;&#160;&#160; at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:120)</p><p>&#160;&#160;&#160; at java.lang.Class.forName0(Native Method) [rt.jar:1.7.0_25]</p><p>&#160;&#160;&#160; at java.lang.Class.forName(Class.java:270) [rt.jar:1.7.0_25]</p><p>&#160;&#160;&#160; at org.drools.common.DroolsObjectInputStream.resolveClass(DroolsObjectInputStream.java:88) [drools-core.jar:5.1.1]</p><p>&#160;&#160;&#160; at org.drools.common.DroolsObjectInputStream.resolveClass(DroolsObjectInputStream.java:100) [drools-core.jar:5.1.1]</p><p>&#160;&#160;&#160; at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1610) [rt.jar:1.7.0_25]</p><p>&#160;&#160;&#160; at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1515) [rt.jar:1.7.0_25]</p><p>&#160;&#160;&#160; at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1769) [rt.jar:1.7.0_25]</p><p>&#160;&#160;&#160; at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1348) [rt.jar:1.7.0_25]</p><p>&#160;&#160;&#160; at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370) [rt.jar:1.7.0_25]</p><p>&#160;&#160;&#160; at org.drools.rule.Package.readExternal(Package.java:197) [drools-core.jar:5.1.1]</p><p>&#160;&#160;&#160; at org.drools.definitions.impl.KnowledgePackageImp.readExternal(KnowledgePackageImp.java:115) [drools-core.jar:5.1.1]</p><p>&#160;&#160;&#160; at org.jboss.marshalling.river.RiverUnmarshaller.doReadNewObject(RiverUnmarshaller.java:1259) [jboss-marshalling-river-1.3.15.GA.jar:1.3.15.GA]</p><p>&#160;&#160;&#160; at org.jboss.marshalling.river.RiverUnmarshaller.doReadObject(RiverUnmarshaller.java:272) [jboss-marshalling-river-1.3.15.GA.jar:1.3.15.GA]</p><p>&#160;&#160;&#160; at org.jboss.marshalling.river.RiverUnmarshaller.doReadObject(RiverUnmarshaller.java:209) [jboss-marshalling-river-1.3.15.GA.jar:1.3.15.GA]</p><p>&#160;&#160;&#160; at org.jboss.marshalling.AbstractObjectInput.readObject(AbstractObjectInput.java:37) [jboss-marshalling-1.3.15.GA.jar:1.3.15.GA]</p><p>&#160;&#160;&#160; at org.infinispan.marshall.exts.ArrayListExternalizer.readObject(ArrayListExternalizer.java:57) [infinispan-core-5.1.7.Final.jar:5.1.7.Final]</p><p>&#160;&#160;&#160; at org.infinispan.marshall.exts.ArrayListExternalizer.readObject(ArrayListExternalizer.java:45) [infinispan-core-5.1.7.Final.jar:5.1.7.Final]</p><p>&#160;&#160;&#160; at org.infinispan.marshall.jboss.ExternalizerTable$ExternalizerAdapter.readObject(ExternalizerTable.java:395) [infinispan-core-5.1.7.Final.jar:5.1.7.Final]</p><p>&#160;&#160;&#160; at org.infinispan.marshall.jboss.ExternalizerTable.readObject(ExternalizerTable.java:224) [infinispan-core-5.1.7.Final.jar:5.1.7.Final]</p><p>&#160;&#160;&#160; at org.jboss.marshalling.river.RiverUnmarshaller.doReadObject(RiverUnmarshaller.java:351) [jboss-marshalling-river-1.3.15.GA.jar:1.3.15.GA]</p><p>&#160;&#160;&#160; at org.jboss.marshalling.river.BlockUnmarshaller.readObject(BlockUnmarshaller.java:153) [jboss-marshalling-river-1.3.15.GA.jar:1.3.15.GA]</p><p>&#160;&#160;&#160; at org.jboss.marshalling.river.BlockUnmarshaller.readObject(BlockUnmarshaller.java:139) [jboss-marshalling-river-1.3.15.GA.jar:1.3.15.GA]</p><p>&#160;&#160;&#160; <span style="font-size: 12pt;"><strong style="color: #ff0000;">at com.my.Class.readExternal(Class.java:321) [my-ejb.jar:version]</strong></span></p><p>&#160;&#160;&#160; at org.jboss.marshalling.river.RiverUnmarshaller.doReadNewObject(RiverUnmarshaller.java:1259) [jboss-marshalling-river-1.3.15.GA.jar:1.3.15.GA]</p><p>&#160;&#160;&#160; at org.jboss.marshalling.river.RiverUnmarshaller.doReadObject(RiverUnmarshaller.java:272) [jboss-marshalling-river-1.3.15.GA.jar:1.3.15.GA]</p><p>&#160;&#160;&#160; at org.jboss.marshalling.river.RiverUnmarshaller.doReadObject(RiverUnmarshaller.java:209) [jboss-marshalling-river-1.3.15.GA.jar:1.3.15.GA]</p><p>&#160;&#160;&#160; at org.jboss.marshalling.AbstractObjectInput.readObject(AbstractObjectInput.java:37) [jboss-marshalling-1.3.15.GA.jar:1.3.15.GA]</p><p>&#160;&#160;&#160; at org.infinispan.marshall.exts.ReplicableCommandExternalizer.readParameters(ReplicableCommandExternalizer.java:119) [infinispan-core-5.1.7.Final.jar:5.1.7.Final]</p><p>&#160;&#160;&#160; at org.infinispan.marshall.exts.ReplicableCommandExternalizer.readObject(ReplicableCommandExternalizer.java:107) [infinispan-core-5.1.7.Final.jar:5.1.7.Final]</p><p>&#160;&#160;&#160; at org.infinispan.marshall.exts.ReplicableCommandExternalizer.readObject(ReplicableCommandExternalizer.java:58) [infinispan-core-5.1.7.Final.jar:5.1.7.Final]</p><p>&#160;&#160;&#160; at org.infinispan.marshall.jboss.ExternalizerTable$ExternalizerAdapter.readObject(ExternalizerTable.java:395) [infinispan-core-5.1.7.Final.jar:5.1.7.Final]</p><p>&#160;&#160;&#160; at org.infinispan.marshall.jboss.ExternalizerTable.readObject(ExternalizerTable.java:224) [infinispan-core-5.1.7.Final.jar:5.1.7.Final]</p><p>&#160;&#160;&#160; at org.jboss.marshalling.river.RiverUnmarshaller.doReadObject(RiverUnmarshaller.java:351) [jboss-marshalling-river-1.3.15.GA.jar:1.3.15.GA]</p><p>&#160;&#160;&#160; at org.jboss.marshalling.river.RiverUnmarshaller.doReadObject(RiverUnmarshaller.java:209) [jboss-marshalling-river-1.3.15.GA.jar:1.3.15.GA]</p><p>&#160;&#160;&#160; at org.jboss.marshalling.AbstractObjectInput.readObject(AbstractObjectInput.java:37) [jboss-marshalling-1.3.15.GA.jar:1.3.15.GA]</p><p>&#160;&#160;&#160; at org.infinispan.marshall.exts.ReplicableCommandExternalizer.readParameters(ReplicableCommandExternalizer.java:119) [infinispan-core-5.1.7.Final.jar:5.1.7.Final]</p><p>&#160;&#160;&#160; at org.infinispan.marshall.exts.CacheRpcCommandExternalizer.readObject(CacheRpcCommandExternalizer.java:162) [infinispan-core-5.1.7.Final.jar:5.1.7.Final]</p><p>&#160;&#160;&#160; at org.infinispan.marshall.exts.CacheRpcCommandExternalizer.readObject(CacheRpcCommandExternalizer.java:66) [infinispan-core-5.1.7.Final.jar:5.1.7.Final]</p><p>&#160;&#160;&#160; at org.infinispan.marshall.jboss.ExternalizerTable$ExternalizerAdapter.readObject(ExternalizerTable.java:395) [infinispan-core-5.1.7.Final.jar:5.1.7.Final]</p><p>&#160;&#160;&#160; at org.infinispan.marshall.jboss.ExternalizerTable.readObject(ExternalizerTable.java:224) [infinispan-core-5.1.7.Final.jar:5.1.7.Final]</p><p>&#160;&#160;&#160; at org.jboss.marshalling.river.RiverUnmarshaller.doReadObject(RiverUnmarshaller.java:351) [jboss-marshalling-river-1.3.15.GA.jar:1.3.15.GA]</p><p>&#160;&#160;&#160; at org.jboss.marshalling.river.RiverUnmarshaller.doReadObject(RiverUnmarshaller.java:209) [jboss-marshalling-river-1.3.15.GA.jar:1.3.15.GA]</p><p>&#160;&#160;&#160; at org.jboss.marshalling.AbstractObjectInput.readObject(AbstractObjectInput.java:37) [jboss-marshalling-1.3.15.GA.jar:1.3.15.GA]</p><p>&#160;&#160;&#160; at org.infinispan.marshall.jboss.AbstractJBossMarshaller.objectFromObjectStream(AbstractJBossMarshaller.java:163) [infinispan-core-5.1.7.Final.jar:5.1.7.Final]</p><p>&#160;&#160;&#160; at org.infinispan.marshall.VersionAwareMarshaller.objectFromByteBuffer(VersionAwareMarshaller.java:114) [infinispan-core-5.1.7.Final.jar:5.1.7.Final]</p><p>&#160;&#160;&#160; at org.infinispan.marshall.AbstractDelegatingMarshaller.objectFromByteBuffer(AbstractDelegatingMarshaller.java:104) [infinispan-core-5.1.7.Final.jar:5.1.7.Final]</p><p>&#160;&#160;&#160; at org.infinispan.remoting.transport.jgroups.MarshallerAdapter.objectFromBuffer(MarshallerAdapter.java:50) [infinispan-core-5.1.7.Final.jar:5.1.7.Final]</p><p>&#160;&#160;&#160; at org.infinispan.remoting.transport.jgroups.CommandAwareRpcDispatcher.handle(CommandAwareRpcDispatcher.java:200) [infinispan-core-5.1.7.Final.jar:5.1.7.Final]</p><p>&#160;&#160;&#160; ... 30 more</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>whats even stranger here is that the above exception shows that infinispan has successfully located my class (packaged inside the ejb jar inside the ear) yet completely failed to find the drools classes (packaged in drools *.jars inside the ear's /lib)</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>what am i doing wrong?</p></div>

<div style="background-color: #f4f4f4; padding: 10px; margin-top: 20px;">
    <p style="margin: 0;">Reply to this message by <a href="https://community.jboss.org/message/824702#824702">going to Community</a></p>
        <p style="margin: 0;">Start a new discussion in JBoss AS 7 Development at <a href="https://community.jboss.org/choose-container!input.jspa?contentType=1&containerType=14&container=2225">Community</a></p>
</div></td>
                        </tr>
                    </tbody>
                </table>


                </td>
            </tr>
        </tbody>
    </table>

</div>

</body>
</html>