当前位置: 首页 > 知识库问答 >
问题:

使用Infinispan中的共享文件存储时获取“java.io.IOException:不支持的协议版本22”

何峰
2023-03-14

使用在多个节点之间共享的基于文件存储的缓存存储时,我得到了以下异常。

Caused by: org.infinispan.commons.CacheException: Unable to start cache loaders
    at org.infinispan.persistence.manager.PersistenceManagerImpl.start(PersistenceManagerImpl.java:174)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.infinispan.commons.util.ReflectionUtil.invokeAccessibly(ReflectionUtil.java:168)
    ... 73 more
Caused by: org.infinispan.persistence.spi.PersistenceException: java.io.IOException: Unsupported protocol version 22
    at org.infinispan.persistence.file.SingleFileStore.start(SingleFileStore.java:135)
    at org.infinispan.persistence.manager.PersistenceManagerImpl.start(PersistenceManagerImpl.java:141)
    ... 78 more
Caused by: java.io.IOException: Unsupported protocol version 22
    at org.jboss.marshalling.river.RiverUnmarshaller.start(RiverUnmarshaller.java:1249)
    at org.infinispan.commons.marshall.jboss.AbstractJBossMarshaller.startObjectInput(AbstractJBossMarshaller.java:128)
    at org.infinispan.marshall.core.VersionAwareMarshaller.startObjectInput(VersionAwareMarshaller.java:142)
    at org.infinispan.marshall.core.VersionAwareMarshaller.objectFromByteBuffer(VersionAwareMarshaller.java:98)
    at org.infinispan.commons.marshall.AbstractDelegatingMarshaller.objectFromByteBuffer(AbstractDelegatingMarshaller.java:80)
    at org.infinispan.persistence.file.SingleFileStore.rebuildIndex(SingleFileStore.java:212)
    at org.infinispan.persistence.file.SingleFileStore.start(SingleFileStore.java:126)
    ... 79 more

我的缓存配置如下所示:

<distributed-cache name="singletons">
        <versioning scheme="SIMPLE"/>
            <persistence passivation="false" >
                <file-store
                    path="${infinispan.dir}/broker-ds/singletons"
                    fetch-state="true" shared="true" preload="true" />
            </persistence>
        </distributed-cache>

有什么问题的线索吗?我正在使用Infinispan 8.1版本。

更新:

我没有使用基于共享文件的存储,而是使用了基于JDBC的共享存储,一切正常。

共有1个答案

茹正祥
2023-03-14

遗憾的是,您还不能使用多个节点之间共享的文件存储。要么使用每个节点的专用目录,要么使用能够共享的存储(jdbc、jpa、cassandra)。

 类似资料:
  • 我在带有Infinispan 9.4.16的Wildfly 18.1上有一个独立模式群集。当两个节点上的项目版本相同时,缓存项的复制工作正常。但是,如果一个节点上有版本A,另一个节点上有版本B,那么java的复制就会失败。伊奥。InvalidClassException和组织。jboss。模块。ModuleNotFoundException:部署。我的应用程序版本B。耳朵myjar版本B。jar。

  • 我正在尝试使用RESTTemplate使用GET请求命中URL。它给出了一个异常,说明http协议不受支持。 我可以使用简单的旧HttpURLConnection方法访问endpoint来获得预期的响应。但是我无法使用rest模板这样做。我没有使用任何类型的VPN或代理,而尝试这一点。 下面是我正在使用的代码。我将用ip:port替换实际使用的ip和端口。 谢谢你。 编辑:使用HttpUrlCon

  • 问题内容: 我刚刚将CMake从2.8版本升级到了3.2版本。 在CMake 2.8中,它的工作方式像一个魅力,但是,升级后,它失败了。 我正在尝试使用CMake函数构建第三方库。 我的观察: 使用选项,允许和协议下载外部项目。 使用选项,仅允许,但不允许协议下载外部项目。 问题: 有什么办法可以使用协议下载和构建外部项目? 错误: 问题答案: 在我的文档中,我使用了insted 选项。 并下载并

  • 我有两个应用程序使用相同的数据库实体。这两个应用程序都部署在jboss eap 6.2独立的集群上。DB表仅从一个应用程序中更新,但从两个应用程序中读取。这两个应用程序都使用本机hibernate API从数据库读取/写入数据。 在嵌入式模式下将infinispan启用为2LC后,如何确保在一个应用程序中更新的缓存实体从第二个应用程序缓存中失效?是否有任何JMX/JMS接口用于信号缓存失效? 若我

  • 在生成APK时,我得到了一个错误:项目使用的是一个不受支持的Gradle版本。我正在使用Android Studio3.5版本。 我试图更改build gradle类路径以匹配gradle-wrapper.properties中的distributionUrl,但是错误仍然存在。 首先,在项目级设置中,选择Use default gadle wrapper。 build.gradle文件: