我正在尝试从Spring Boot应用程序连接到Apache Ignite服务器。
示例代码:
ClientConfiguration cfg = new ClientConfiguration().setAddresses("127.0.0.1:10800");
try (IgniteClient client = Ignition.startClient(cfg)) {
Object cachedName = client.query(
new SqlFieldsQuery("SELECT name from Person WHERE id=?").setArgs("foo").setSchema("PUBLIC")
).getAll().iterator().next().iterator().next();
}
我收到此错误:
由于:类org.apache.ignite.IgniteCheckedException:远程节点 具有与本地不同的对等类加载启用标志 [locId8 = 459833a1,locPeerClassLoading = true,rmtId8 = 83ea88ca, rmtPeerClassLoading = false, rmtAddrs = [ignite-0.ignite.default.svc.cluster.local / 0:0:0:0:0:0:0:0:1%lo, /10.4.2.49,/127.0.0.1],rmtNode=ClusterNode [id = 83ea88ca-da77-4887-9357-267ac7397767,订单= 1, addr = [0:0:0:0:0:0:0:1:1%lo,10.x.x.x,127.0.0.1],daemon = false]]
因此需要在我的Java代码中停用PeerClassLoading。我该怎么办?
答案 0 :(得分:0)
如评论中所述,错误是来自连接到群集的 thick 客户端(或其他服务器),而代码来自 thin 客户端。
>如果您只是读取/写入数据而无需执行代码,那么瘦客户机是一个很好的选择。
要使用胖客户端,您需要确保胖客户端和服务器都具有相同的对等类加载配置。可能是:
<property name=“peerClassLoadingEnabled” value=“false” />
在您的Spring配置文件中。或者:
IgniteConfiguration cfg = new IgniteConfiguration()
...
.setPeerClassLoadingEnabled(false);
(我在这里使用false
是因为它是您当前的服务器配置。话虽如此,您可能希望将其打开。)