CacheConfigurationException: Cannot find a parser for element 'string-keyed-jdbc-store' in namespace 'urn:infinispan:config:store:jdbc:13.0'

Viewed 24

Embarked on my Infinispan journey today (we are moving from Apache JCS to Infinispan) and ran into the following (base) exception:

Caused by: org.infinispan.commons.CacheConfigurationException: ISPN000327: Cannot find a parser for element 'string-keyed-jdbc-store' in namespace 'urn:infinispan:config:store:jdbc:13.0'. Check that your configuration is up-to date for Infinispan '13.0.11.Final' and if you have the proper dependency in the classpath
    at org.infinispan.configuration.parsing.ParserRegistry.findNamespaceParser(ParserRegistry.java:233)
    at org.infinispan.configuration.parsing.ParserRegistry.parseElement(ParserRegistry.java:206)
    at org.infinispan.configuration.parsing.ConfigurationBuilderHolder.handleAnyElement(ConfigurationBuilderHolder.java:139)
    at org.infinispan.commons.configuration.io.AbstractConfigurationReader.handleAny(AbstractConfigurationReader.java:57)
    at org.infinispan.configuration.parsing.CacheParser.parsePersistence(CacheParser.java:1397)
    at org.infinispan.configuration.parsing.CacheParser.parseCacheElement(CacheParser.java:488)
    at org.infinispan.configuration.parsing.CacheParser.parseSharedStateCacheElement(CacheParser.java:220)
    at org.infinispan.configuration.parsing.CacheParser.parseReplicatedCache(CacheParser.java:1154)
    at org.infinispan.configuration.parsing.Parser.parseCaches(Parser.java:849)
    at org.infinispan.configuration.parsing.Parser.parseContainer(Parser.java:735)
    at org.infinispan.configuration.parsing.Parser.readElement(Parser.java:85)
    at org.infinispan.configuration.parsing.ParserRegistry.parseElement(ParserRegistry.java:209)
    at org.infinispan.configuration.parsing.ParserRegistry.parse(ParserRegistry.java:187)
    at org.infinispan.configuration.parsing.ParserRegistry.parse(ParserRegistry.java:175)
    at org.infinispan.configuration.parsing.ParserRegistry.parse(ParserRegistry.java:157)
    at org.infinispan.configuration.parsing.ParserRegistry.parse(ParserRegistry.java:141)
    at org.infinispan.globalstate.impl.GlobalConfigurationManagerImpl.buildConfiguration(GlobalConfigurationManagerImpl.java:302)
    at org.infinispan.globalstate.impl.GlobalConfigurationManagerImpl.createCacheLocally(GlobalConfigurationManagerImpl.java:277)
    at org.infinispan.globalstate.impl.GlobalConfigurationStateListener.handleCreate(GlobalConfigurationStateListener.java:46)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at org.infinispan.notifications.impl.AbstractListenerImpl$ListenerInvocationImpl.lambda$invoke$1(AbstractListenerImpl.java:424)
    ... 62 more

The code is as follows and exception is generated from getOrCreateCache.

 GlobalConfigurationBuilder gcb = GlobalConfigurationBuilder.defaultClusteredBuilder();
EmbeddedCacheManager ecm = new DefaultCacheManager(gcb.build());

            //now per cache configuration.
           ConfigurationBuilder cb = new ConfigurationBuilder();
           cb.clustering().cacheMode(CacheMode.REPL_SYNC);
           cb.persistence().addStore(JdbcStringBasedStoreConfigurationBuilder.class)
                   .shared(true)
                   .dialect(DatabaseType.POSTGRES)
                   .table()
                   .dropOnExit(false)
                   .createOnStart(true)
                   .tableNamePrefix("INFINISPAN_TEST")
                   .idColumnName("ID_COLUMN").idColumnType("VARCHAR(255)")
                   .dataColumnName("DATA_COLUMN").dataColumnType("bytea")
                   .timestampColumnName("TIMESTAMP_COLUMN").timestampColumnType("BIGINT")
                   .segmentColumnName("SEGMENT_COLUMN").segmentColumnType("INT")
                   .connectionPool()
                   .connectionUrl("jdbc:postgresql://localhost:5432/testinfini")
                   .username("user")
                   .password("password")
                   .driverClass("org.postgresql.Driver");

           Cache<String, String> cache = ecm.administration().withFlags(CacheContainerAdmin.AdminFlag.VOLATILE).getOrCreateCache("myCache", cb.build());

The dependencies have been collected post modifying the Embedded WeatherApp Sample pom.xml.

Here is a snippet of that too.

 <properties>
    <version.infinispan>13.0.11.Final</version.infinispan>
    <version.javax.annotation.javax.annotation-api>1.3.1</version.javax.annotation.javax.annotation-api>
    <version.protostream>4.4.4.Final</version.protostream>
  </properties>

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>org.infinispan</groupId>
        <artifactId>infinispan-bom</artifactId>
        <version>${version.infinispan}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
    </dependencies>
  </dependencyManagement>

  <dependencies>
    <dependency>
      <groupId>org.infinispan</groupId>
      <artifactId>infinispan-core</artifactId>
    </dependency>
    <dependency>
    <groupId>org.infinispan</groupId>
    <artifactId>infinispan-cachestore-jdbc</artifactId>
    <version>${version.infinispan}</version>
</dependency>
    <dependency>
    <groupId>org.infinispan</groupId>
    <artifactId>infinispan-cachestore-jdbc-common</artifactId>
    <version>${version.infinispan}</version>
</dependency>
    <dependency>
      <groupId>org.infinispan.protostream</groupId>
      <artifactId>protostream-processor</artifactId>
      <version>${version.protostream}</version>
    </dependency>
    <dependency>
      <groupId>javax.annotation</groupId>
      <artifactId>javax.annotation-api</artifactId>
      <version>${version.javax.annotation.javax.annotation-api}</version>
    </dependency>
  </dependencies>



Would be much grateful for any pointers as to what I am doing wrong here?

1 Answers

Alright, it was a dependency issue, this set below works.

agroal-api-1.12.jar
agroal-pool-1.12.jar
caffeine-2.8.4.jar
infinispan-cachestore-jdbc-13.0.11.Final.jar
infinispan-cachestore-jdbc-common-13.0.11.Final.jar
infinispan-commons-13.0.11.Final.jar
infinispan-core-13.0.11.Final.jar
jakarta.transaction-api-1.3.3.jar
jboss-logging-3.4.1.Final.jar
jboss-threads-2.3.3.Final.jar
jgroups-4.2.18.Final.jar
postgresql-42.4.1.jar
protostream-4.4.3.Final.jar
protostream-types-4.4.3.Final.jar
reactive-streams-1.0.3.jar
rxjava-3.0.4.jar
wildfly-common-1.3.0.Final.jar

Thanks for looking :) ...

Related