我想使用独立的Ignite集群设置IgniteSet并在Scala应用程序中填充它。
Caused by: class org.apache.ignite.IgniteCheckedException: Failed to start SPI: TcpDiscoverySpi [addrRslvr=null, sockTimeout=5000, ackTimeout=5000, marsh=JdkMarshaller [clsFilter=org.apache.ignite.marshaller.MarshallerUtils$1@32f308c6], reconCnt=10, reconDelay=2000, maxAckTimeout=600000, soLinger=0, forceSrvMode=false, clientReconnectDisabled=false, internalLsnr=null, skipAddrsRandomization=false]
...
Caused by: class org.apache.ignite.spi.IgniteSpiException: Failed to deserialize object with given class loader: jdk.internal.loader.ClassLoaders$AppClassLoader@2c13da15
从Ignite cluster返回的错误是:
Caused by: java.io.InvalidClassException: javax.cache.configuration.MutableConfiguration; local class incompatible: stream classdesc serialVersionUID = 201405, local class serialVersionUID = 201306200821
javax.cache.configuration.mutableconfiguration
是javax.cache.cache-api
包的一部分,因此错误表示存在某种版本不匹配。但我明确检查了我的Ignite集群使用的是1.1.0版本--在我的ignite_home
中有文件apache-ignite-2.9.1-bin/libs/cache-api-1.0.0.jar
;并且我的应用程序使用相同的版本--在我显式设置的build.sbt
中(也试图完全排除此包):
libraryDependencies ++= Seq(
...,
"javax.cache" % "cache-api" % "1.0.0"
)
此外,我找不到使用此类serialVersionUID
的javax.cache.cache-api
版本:1.0.0和1.1.0都有Public static final long serialVersionUID=201306200821L;
# fails
# port == TcpDiscoverySpi port from cluster configuration
val host = "localhost:45900..46000" # also tried with single port and
val tcpDiscoverySpi: TcpDiscoverySpi = new TcpDiscoverySpi
val ipFinder: TcpDiscoveryVmIpFinder = new TcpDiscoveryVmIpFinder
ipFinder.setAddresses(util.Arrays.asList(host.split(","): _*))
tcpDiscoverySpi.setIpFinder(ipFinder)
val igniteConfiguration: IgniteConfiguration = new IgniteConfiguration
igniteConfiguration.setDiscoverySpi(tcpDiscoverySpi)
igniteConfiguration.setClientMode(false) # also tried with true
val ignite: Ignite = Ignition.start(igniteConfiguration) # error raised here
此外,上面的代码片段在Java Spring应用程序中也能正常工作,在Java Spring应用程序中,节点被引发以设置Spring数据缓存。
在Scala应用程序中起作用的是用于点燃集群(用于创建常规缓存)的连接器节点,但我无法使用它,因为无法使用IgniteClient
实例设置IgniteSet
:(
# works as expected
val host = "localhost"
val connector_port = "10800" # == ClientConnectorConfiguration port from cluster configuration
val cfg = new ClientConfiguration()
.setAddresses(host + ":" + connector_port)
val ignite: IgniteClient = Ignition.startClient(cfg)
val cache = ignite.getOrCreateCache(...)
Ignite集群的操作:它是通过2.9.1版本的脚本bin/Ignite.sh
在本地引发的,配置如下:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.springframework.org/schema/beans"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean class="org.apache.ignite.configuration.IgniteConfiguration">
<property name="discoverySpi">
<bean class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi">
<property name="localPort" value="45900"/>
<property name="localPortRange" value="100"/>
<property name="ipFinder">
<bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.sharedfs.TcpDiscoverySharedFsIpFinder">
<property name="path" value="/opt/storage/ignite"/>
</bean>
</property>
</bean>
</property>
<property name="communicationSpi">
<bean class="org.apache.ignite.spi.communication.tcp.TcpCommunicationSpi">
<property name="localPort" value="47100"/>
</bean>
</property>
<property name="clientConnectorConfiguration">
<bean class="org.apache.ignite.configuration.ClientConnectorConfiguration">
<property name="port" value="10800"/>
<property name="portRange" value="100"/>
</bean>
</property>
<property name="dataStorageConfiguration">
<bean class="org.apache.ignite.configuration.DataStorageConfiguration">
<property name="defaultDataRegionConfiguration">
<bean class="org.apache.ignite.configuration.DataRegionConfiguration">
<property name="maxSize" value="1073741824"/>
<property name="persistenceEnabled" value="true"/>
</bean>
</property>
<property name="storagePath" value="/opt/storage/ignite"/>
<property name="walSegmentSize" value="134217728"/>
</bean>
</property>
</bean>
</beans>
将很高兴得到任何帮助!
UPD:在这里发现了类似的问题-建议排除Geronimo JCache规范,该规范的mutableconfiguration
序列号为201405L
。我试图排除它,但仍然有同样的错误:
excludeDependencies ++= Seq(
ExclusionRule("org.apache.geronimo.specs"),
ExclusionRule("org.apache.geronimo")
)
Apache Ignite需要JCache1.0并附带相应版本的JAR。
如果您的客户端应用程序中有一个不同于服务器节点的JAR,您可能会看到这个(de)序列化问题。您可以使用1.1或1.0,但它必须匹配。
问题内容: 如何为Android应用程序设置IntelliJ IDEA? 问题答案: 我花了整整一天的时间尝试将所有内容组合在一起,涉及数百个站点和教程,但是它们都跳过了琐碎的步骤。 因此,这里是完整的指南: 下载并安装 Java JDK (选择Java平台) 下载并安装 Android SDK (建议安装程序) android SD完成安装后,在 Android SDK Tools* 下打开 S
如何设置电子应用程序的应用程序图标? 我正在尝试
类似于如何在AndroidMarshmallow上以编程方式打开特定应用程序的权限屏幕?但对于扑镖来说。
设置应用程序 Nest is built with features from both ES6 and ES7 (decorators, async / await). It means, that the easiest way to start adventure with it is to use Babel or TypeScript. In this tutorial I will u
目前,我正面临一个技术决策,我个人无法找到解决方案。 我目前正在开发一个多租户数据库。 结构如下: 有一个核心数据库,用于保存特定租户的数据和关系 有多个租户数据库实例(通过核心数据库中的查询,可以确定我应该连接到哪个租户id) 每个租户都位于一个单独的数据库实例(位于单独的服务器上) 每个租户都有特定的数据,其他租户都不应访问这些数据 每个数据库最好是mySQL(但如果有更好的选择,我愿意接受建