ignite - ClassNotFoundException in CacheJdbcStoreExample run on cluster -


i have cluster 2 nodes. tried run cachejdbcstoreexample in apache-ignite-fabric-2.1.0-bin/examples.but got following exception:

visor> [06:51:41,113][severe][tcp-disco-msg-worker-#13%null%][tcpdiscoveryspi] failed unmarshal discovery custom message. class org.apache.ignite.ignitecheckedexception: failed find class given class loader unmarshalling (make sure same versions of classes available on nodes or enable pee r-class-loading) [clsldr=sun.misc.launcher$appclassloader@4aa4ceeb, cls=org.apache.ignite.examples.datagrid.store.jdbc.cachejdbcstoreexample$1] @ org.apache.ignite.marshaller.jdk.jdkmarshaller.unmarshal0(jdkmarshaller.java:124)     @ org.apache.ignite.marshaller.abstractnodenameawaremarshaller.unmarshal(abstractnodenameawaremarshaller.java:94)     @ org.apache.ignite.marshaller.jdk.jdkmarshaller.unmarshal0(jdkmarshaller.java:143)     @ org.apache.ignite.marshaller.abstractnodenameawaremarshaller.unmarshal(abstractnodenameawaremarshaller.java:82)     @ org.apache.ignite.internal.util.igniteutils.unmarshal(igniteutils.java:9733)     @ org.apache.ignite.spi.discovery.tcp.messages.tcpdiscoverycustomeventmessage.message(tcpdiscoverycustomeventmessage.java:81)     @ org.apache.ignite.spi.discovery.tcp.serverimpl$ringmessageworker.notifydiscoverylistener(serverimpl.java:5436)     @ org.apache.ignite.spi.discovery.tcp.serverimpl$ringmessageworker.processcustommessage(serverimpl.java:5321)     @ org.apache.ignite.spi.discovery.tcp.serverimpl$ringmessageworker.processmessage(serverimpl.java:2629)     @ org.apache.ignite.spi.discovery.tcp.serverimpl$ringmessageworker.processmessage(serverimpl.java:2420)     @ org.apache.ignite.spi.discovery.tcp.serverimpl$messageworkeradapter.body(serverimpl.java:6576)     @ org.apache.ignite.spi.discovery.tcp.serverimpl$ringmessageworker.body(serverimpl.java:2506)     @ org.apache.ignite.spi.ignitespithread.run(ignitespithread.java:62) caused by: java.lang.classnotfoundexception: org.apache.ignite.examples.datagrid.store.jdbc.cachejdbcstoreexample$1     @ java.net.urlclassloader$1.run(urlclassloader.java:359)     @ java.net.urlclassloader$1.run(urlclassloader.java:348)     @ java.security.accesscontroller.doprivileged(native method)     @ java.net.urlclassloader.findclass(urlclassloader.java:347)     @ java.lang.classloader.loadclass(classloader.java:425)     @ sun.misc.launcher$appclassloader.loadclass(launcher.java:308)     @ java.lang.classloader.loadclass(classloader.java:358)     @ java.lang.class.forname0(native method)     @ java.lang.class.forname(class.java:278)     @ org.apache.ignite.internal.util.igniteutils.forname(igniteutils.java:8465)     @ org.apache.ignite.marshaller.jdk.jdkmarshallerobjectinputstream.resolveclass(jdkmarshallerobjectinputstream.java:54)     @ java.io.objectinputstream.readnonproxydesc(objectinputstream.java:1817)     @ java.io.objectinputstream.readclassdesc(objectinputstream.java:1711)     @ java.io.objectinputstream.readordinaryobject(objectinputstream.java:1982)     @ java.io.objectinputstream.readobject0(objectinputstream.java:1533)     @ java.io.objectinputstream.readarray(objectinputstream.java:1917)     @ java.io.objectinputstream.readobject0(objectinputstream.java:1527)     @ java.io.objectinputstream.defaultreadfields(objectinputstream.java:2227)     @ java.io.objectinputstream.readserialdata(objectinputstream.java:2151)     @ java.io.objectinputstream.readordinaryobject(objectinputstream.java:2009)     @ java.io.objectinputstream.readobject0(objectinputstream.java:1533)     @ java.io.objectinputstream.defaultreadfields(objectinputstream.java:2227)     @ java.io.objectinputstream.readserialdata(objectinputstream.java:2151)     @ java.io.objectinputstream.readordinaryobject(objectinputstream.java:2009)     @ java.io.objectinputstream.readobject0(objectinputstream.java:1533)     @ java.io.objectinputstream.readobject(objectinputstream.java:420)     @ java.util.arraylist.readobject(arraylist.java:771)     @ sun.reflect.generatedmethodaccessor16.invoke(unknown source)     @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:43)     @ java.lang.reflect.method.invoke(method.java:606)     @ java.io.objectstreamclass.invokereadobject(objectstreamclass.java:1058)     @ java.io.objectinputstream.readserialdata(objectinputstream.java:2118)     @ java.io.objectinputstream.readordinaryobject(objectinputstream.java:2009)     @ java.io.objectinputstream.readobject0(objectinputstream.java:1533)     @ java.io.objectinputstream.defaultreadfields(objectinputstream.java:2227)     @ java.io.objectinputstream.readserialdata(objectinputstream.java:2151)     @ java.io.objectinputstream.readordinaryobject(objectinputstream.java:2009)     @ java.io.objectinputstream.readobject0(objectinputstream.java:1533)     @ java.io.objectinputstream.defaultreadfields(objectinputstream.java:2227)     @ java.io.objectinputstream.readserialdata(objectinputstream.java:2151)     @ java.io.objectinputstream.readordinaryobject(objectinputstream.java:2009)     @ java.io.objectinputstream.readobject0(objectinputstream.java:1533)     @ java.io.objectinputstream.readobject(objectinputstream.java:420)     @ org.apache.ignite.marshaller.jdk.jdkmarshaller.unmarshal0(jdkmarshaller.java:121)     ... 12 more 

i decompiled cachejdbcstoreexample$1.class , got following code:

cachejdbcstoreexample$1

package org.apache.ignite.examples.datagrid.store.jdbc;  import javax.cache.configuration.factory; import org.apache.ignite.cache.store.cachestoresessionlistener; import org.apache.ignite.cache.store.jdbc.cachejdbcstoresessionlistener; import org.h2.jdbcx.jdbcconnectionpool;  class cachejdbcstoreexample$1   implements factory<cachestoresessionlistener> {   public cachestoresessionlistener create()   {     cachejdbcstoresessionlistener lsnr = new cachejdbcstoresessionlistener();      lsnr.setdatasource(jdbcconnectionpool.create("jdbc:h2:tcp://localhost/mem:exampledb", "sa", ""));      return lsnr;   } } 

so think there wrong @ row 90 in cachejdbcstoreexample source code:

// configure jdbc session listener. cachecfg.setcachestoresessionlistenerfactories(new factory<cachestoresessionlistener>() {     @override public cachestoresessionlistener create() {         cachejdbcstoresessionlistener lsnr = new cachejdbcstoresessionlistener();          lsnr.setdatasource(jdbcconnectionpool.create("jdbc:h2:tcp://localhost/mem:exampledb", "sa", ""));          return lsnr;     } }); 

if run example on 1 node not cluster, it's ok.

what should fix it?

the problem configured cache factory of cachestoresessionlistener-s, factory not visible other nodes don't have in classpath.

you should start additional remote nodes org.apache.ignite.examples.examplenodestartup class examples module or add examples module classpath of other nodes.


Comments

Popular posts from this blog

Sort a complex associative array in PHP -

vb.net - How to ignore if a cell is empty nothing -

recursion - Can every recursive algorithm be improved with dynamic programming? -