2017-05-24 6 views
1

Ich versuche, die Ignite Jdbc-Verbindung zu verwenden; mit meinem Ziel, den Cache von jedem Client über Jdbc aufrufen zu können.Apache Ignite: Fehler beim Entmaren der Ermittlungsdaten

Ich habe eine Reihe von Szenarien funktioniert; also haben Daten korrekt geladen; und kann SQL-Abfragen "direkt" gegen den Cache ausführen.

Wenn ich versuche, von einem separaten Client zu nennen mit

ResultSet rs = conn.createStatement().executeQuery("select * from my_table");

traf ich einen Fehler:

class org.apache.ignite.IgniteCheckedException: Failed to find class with given class loader for unmarshalling (make sure same versions of all classes are available on all nodes or enable peer-class-loading) [clsLdr=URLClassLoader with NativeCopyLoader with RawResources(

Gibt es eine Möglichkeit, die Ignite jdbc Verbindung von dem Versuch, zu verhindern Unmarshalling machen?

Ich möchte, dass mein Client so agnostisch wie möglich zu den Ignite-Klassen ist. Beispielsweise; Ich möchte mariaDb auf Ignite umstellen - mit möglichst wenig Codewechsel auf der Client-Seite.

Wenn ich über die Dinge falsch denke; dann sind die Antworten entlang der Linien No, that will never work because ... mehr als willkommen.

Dank Brent

Antwort

1

Wenn Sie keine Kopie Libs des Klienten lib Ordner möchten, können Sie auf Peer-Klasse Laden drehen kann:

<bean class="org.apache.ignite.configuration.IgniteConfiguration"> 
    ... 
    <!-- Explicitly enable peer class loading. --> 
    <property name="peerClassLoadingEnabled" value="true"/> 
    ... 
</bean> 

Sie können aber auch mit BinaryObject arbeiten, statt Ihrer Klassen. Here ist ein Beispiel für die Verwendung von SQL mit BinaryObjects. Weitere Informationen zum Binärformat finden Sie unter here.