Frage

We are developing a web application which uses hibernate search with lucene indexing. First we used Windows Filesystem directory to store lucene index files. For clustering we are changing from FS to Infinspan to store indexes. I followed the infinispan and hibernate search manual but the below mentioned exception is displayed continuously.

JPA persistence.xml details are,

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
    <persistence-unit name="inov8">

        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <jta-data-source>java:jboss/datasources/inov8bDS</jta-data-source>       

        <properties>
            <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect"/>          
            <property name="hibernate.max_fetch_depth" value="3"/>

            <property name="hibernate.show_sql" value="false" />    
            <property name="hibernate.default_batch_fetch_size" value="10" />   
            <property name="hibernate.jdbc_fetch_size" value="10" />    
            <property name="hibernate.jdbc_batch_size" value="10" />    


            <property name="hibernate.id.new_generator_mappings" value="false" />            

            <!-- The following line is what's used in Hibernate 4 instead of a TransactionManagerLookup class -->
            <property name="hibernate.transaction.jta.platform" value="org.hibernate.service.jta.platform.internal.JBossAppServerJtaPlatform" />

            <property name="hibernate.cache.use_second_level_cache" value="true" />
            <property name="hibernate.cache.use_query_cache" value="true" />    



         <!--    <property name="hibernate.cache.region.factory_class" value="org.hibernate.cache.infinispan.JndiInfinispanRegionFactory"/>  -->

            <!-- TODO [clustering] need to change index location -->
            <property name="hibernate.search.default.exclusive_index_use" value="true"  />
            <property name="hibernate.search.default.directory_provider" value="infinispan" />  
        <!--    <property name="hibernate.cache.infinispan.cachemanager" value="java:jboss/infinispan/hibernate"/>   -->
            <property name="hibernate.search.infinispan.configuration_resourcename" value="C:\dev\Java\lib\hibernate-search\hibernate-search-4.2.0.Final\project\hibernate-search-infinispan\src\main\resources\default-hibernatesearch-infinispan.xml" />
            <property name="hibernate.cache.infinispan.cachemanager" value="java:jboss/infinispan/container/hibernate" />
            <property name="hibernate.search.default.data_cachename" value="LuceneIndexesData" />  
            <property name="hibernate.search.default.metadata_cachename" value="LuceneIndexesMetadata" /> 
            <property name="hibernate.search.default.locking_cachename" value="LuceneIndexesLocking" />
            <property name="hibernate.search.infinispan.cachemanager_jndiname" value="java:infinispan/myup-hibernatesearch"/> 
            <property name="hibernate.search.default.chunk_size" value="33554432"/>




            <property name="key2StringMapperClass" value="org.infinispan.lucene.LuceneKey2StringMapper" />   
            <property name="hibernate.search.default.indexBase" value="C:\dev\deploy\inov8b\lucene"/>  
            <property name="hibernate.search.lucene_version" value="LUCENE_36"/>

        </properties>        


    </persistence-unit>
</persistence>

Error Stack Trace:

17:23:38,474 ERROR [org.jboss.msc.service.fail] (ServerService Thread Pool -- 54) MSC00001: Failed to start service jboss.persistenceunit."inov8.war#inov8": org.jboss.msc.service.StartException in service jboss.persistenceunit."inov8.war#inov8": org.hibernate.search.SearchException: HSEARCH000103: Unable to initialize IndexManager xx.inov8.domain.innovation.InnovationComponent
    at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1.run(PersistenceUnitServiceImpl.java:103)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_17]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_17]
    at java.lang.Thread.run(Thread.java:722) [rt.jar:1.7.0_17]
    at org.jboss.threads.JBossThread.run(JBossThread.java:122) [jboss-threads-2.1.0.Final.jar:2.1.0.Final]
Caused by: org.hibernate.search.SearchException: HSEARCH000103: Unable to initialize IndexManager xx.inov8.domain.innovation.InnovationComponent
    at org.hibernate.search.indexes.impl.IndexManagerHolder.createIndexManager(IndexManagerHolder.java:230)
    at org.hibernate.search.indexes.impl.IndexManagerHolder.buildEntityIndexBinding(IndexManagerHolder.java:102)
    at org.hibernate.search.spi.SearchFactoryBuilder.initDocumentBuilders(SearchFactoryBuilder.java:414)
    at org.hibernate.search.spi.SearchFactoryBuilder.buildNewSearchFactory(SearchFactoryBuilder.java:222)
    at org.hibernate.search.spi.SearchFactoryBuilder.buildSearchFactory(SearchFactoryBuilder.java:146)
    at org.hibernate.search.event.impl.FullTextIndexEventListener.initialize(FullTextIndexEventListener.java:130)
    at org.hibernate.search.hcore.impl.HibernateSearchIntegrator.integrate(HibernateSearchIntegrator.java:83)
    at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:303)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1742)
    at org.hibernate.ejb.EntityManagerFactoryImpl.<init>(EntityManagerFactoryImpl.java:94)
    at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:905)
    at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:890)
    at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:74)
    at org.jboss.as.jpa.service.PersistenceUnitServiceImpl.createContainerEntityManagerFactory(PersistenceUnitServiceImpl.java:200)
    at org.jboss.as.jpa.service.PersistenceUnitServiceImpl.access$600(PersistenceUnitServiceImpl.java:57)
    at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1.run(PersistenceUnitServiceImpl.java:99)
    ... 4 more
Caused by: org.hibernate.search.SearchException: Unable to find directory provider implementation class: org.hibernate.search.infinispan.impl.InfinispanDirectoryProvider
    at org.hibernate.search.util.impl.ClassLoaderHelper.classForName(ClassLoaderHelper.java:257)
    at org.hibernate.search.util.impl.ClassLoaderHelper.instanceFromName(ClassLoaderHelper.java:107)
    at org.hibernate.search.store.impl.DirectoryProviderFactory.createDirectoryProvider(DirectoryProviderFactory.java:74)
    at org.hibernate.search.indexes.impl.DirectoryBasedIndexManager.createDirectoryProvider(DirectoryBasedIndexManager.java:232)
    at org.hibernate.search.indexes.impl.DirectoryBasedIndexManager.initialize(DirectoryBasedIndexManager.java:100)
    at org.hibernate.search.indexes.impl.IndexManagerHolder.createIndexManager(IndexManagerHolder.java:227)
    ... 19 more
Caused by: java.lang.ClassNotFoundException: org.hibernate.search.infinispan.impl.InfinispanDirectoryProvider from [Module "deployment.inov8.war:main" from Service Module Loader]
    at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:190) [jboss-modules.jar:1.2.0.CR1]
    at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:468) [jboss-modules.jar:1.2.0.CR1]
    at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:456) [jboss-modules.jar:1.2.0.CR1]
    at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:398) [jboss-modules.jar:1.2.0.CR1]
    at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:120) [jboss-modules.jar:1.2.0.CR1]
    at java.lang.Class.forName0(Native Method) [rt.jar:1.7.0_17]
    at java.lang.Class.forName(Class.java:266) [rt.jar:1.7.0_17]
    at org.hibernate.search.util.impl.ClassLoaderHelper.classForName(ClassLoaderHelper.java:287)
    at org.hibernate.search.util.impl.ClassLoaderHelper.classForName(ClassLoaderHelper.java:254)
    ... 24 more

17:23:38,693 ERROR [org.jboss.as.server] (DeploymentScanner-threads - 1) JBAS015870: Deploy of deployment "inov8.war" was rolled back with the following failure message: 
{"JBAS014671: Failed services" => {"jboss.persistenceunit.\"inov8.war#inov8\"" => "org.jboss.msc.service.StartException in service jboss.persistenceunit.\"inov8.war#inov8\": org.hibernate.search.SearchException: HSEARCH000103: Unable to initialize IndexManager xx.inov8.domain.innovation.InnovationComponent
    Caused by: org.hibernate.search.SearchException: HSEARCH000103: Unable to initialize IndexManager xx.inov8.domain.innovation.InnovationComponent
    Caused by: org.hibernate.search.SearchException: Unable to find directory provider implementation class: org.hibernate.search.infinispan.impl.InfinispanDirectoryProvider
    Caused by: java.lang.ClassNotFoundException: org.hibernate.search.infinispan.impl.InfinispanDirectoryProvider from [Module \"deployment.inov8.war:main\" from Service Module Loader]"}}
17:23:38,693 INFO  [org.jboss.weld.deployer] (MSC service thread 1-15) JBAS016009: Stopping weld service for deployment inov8.war
17:23:38,709 INFO  [org.jboss.as.clustering.infinispan] (MSC service thread 1-15) JBAS010282: Stopped inov8.war#inov8.org.hibernate.cache.spi.UpdateTimestampsCache cache from hibernate container
17:23:38,709 INFO  [org.jboss.as.clustering.infinispan] (MSC service thread 1-15) JBAS010282: Stopped inov8.war#inov8.org.hibernate.cache.internal.StandardQueryCache cache from hibernate container
17:23:38,709 INFO  [org.infinispan.remoting.transport.jgroups.JGroupsTransport] (MSC service thread 1-15) ISPN000080: Disconnecting and closing JGroups Channel
17:23:38,724 INFO  [org.infinispan.remoting.transport.jgroups.JGroupsTransport] (MSC service thread 1-15) ISPN000082: Stopping the RpcDispatcher
17:23:38,802 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-3) JBAS015877: Stopped deployment inov8.war (runtime-name: inov8.war) in 119ms

default-hibernatesearch-infinispan.xml

<?xml version="1.0" encoding="UTF-8"?>
<!--
 * Hibernate, Relational Persistence for Idiomatic Java
 * 
 * Copyright (c) 2012, Red Hat, Inc. and/or its affiliates or third-party contributors as
 * indicated by the @author tags or express copyright attribution
 * statements applied by the authors.  All third-party contributions are
 * distributed under license by Red Hat, Inc.
 * 
 * This copyrighted material is made available to anyone wishing to use, modify,
 * copy, or redistribute it subject to the terms and conditions of the GNU
 * Lesser General Public License, as published by the Free Software Foundation.
 * 
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
 * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License
 * for more details.
 * 
 * You should have received a copy of the GNU Lesser General Public License
 * along with this distribution; if not, write to:
 * Free Software Foundation, Inc.
 * 51 Franklin Street, Fifth Floor
 * Boston, MA  02110-1301  USA
  -->
<infinispan
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="urn:infinispan:config:5.1 http://www.infinispan.org/schemas/infinispan-config-5.1.xsd"
    xmlns="urn:infinispan:config:5.1">

    <!-- *************************** -->
    <!-- System-wide global settings -->
    <!-- *************************** -->

    <global>

        <!-- Duplicate domains are allowed so that multiple deployments with default configuration 
            of Hibernate Search applications work - if possible it would be better to use JNDI to share 
            the CacheManager across applications -->
        <globalJmxStatistics
            enabled="true"
            cacheManagerName="HibernateSearch"
            allowDuplicateDomains="true" />

        <!-- If the transport is omitted, there is no way to create distributed or clustered
            caches. There is no added cost to defining a transport but not creating a cache that uses one,
            since the transport is created and initialized lazily. -->
        <transport
            clusterName="HibernateSearch-Infinispan-cluster"
            >

            <!-- Note that the JGroups transport uses sensible defaults if no configuration 
                property is defined. See the JGroupsTransport javadocs for more flags -->
        </transport>

        <!-- Note that the JGroups transport uses sensible defaults if no configuration property 
            is defined. See the Infinispan wiki for more JGroups settings:
            http://community.jboss.org/wiki/ClusteredConfigurationQuickStart -->

        <!-- Used to register JVM shutdown hooks. hookBehavior: DEFAULT, REGISTER, DONT_REGISTER. 
            Hibernate Search takes care to stop the CacheManager so registering is not needed -->
        <shutdown
            hookBehavior="DONT_REGISTER" />

    </global>

    <!-- *************************** -->
    <!-- Default "template" settings -->
    <!-- *************************** -->

    <default>

        <locking
            lockAcquisitionTimeout="20000"
            writeSkewCheck="false"
            concurrencyLevel="500"
            useLockStriping="false" />

        <!-- Invocation batching is required for use with the Lucene Directory -->
        <invocationBatching
            enabled="true" />

        <!-- This element specifies that the cache is clustered. modes supported: distribution 
            (d), replication (r) or invalidation (i). Don't use invalidation to store Lucene indexes (as 
            with Hibernate Search DirectoryProvider). Replication is recommended for best performance of 
            Lucene indexes, but make sure you have enough memory to store the index in your heap.
            Also distribution scales much better than replication on high number of nodes in the cluster. -->
        <clustering
            mode="replication">

            <!-- Prefer loading all data at startup than later -->
            <stateTransfer
                timeout="480000"
                fetchInMemoryState="true" />

            <!-- Network calls are synchronous by default -->
            <sync
                replTimeout="20000" />
        </clustering>

        <jmxStatistics
            enabled="true" />

        <eviction
            maxEntries="-1"
            strategy="NONE" />

        <expiration
            maxIdle="-1" />

    </default>

    <!-- ******************************************************************************* -->
    <!-- Individually configured "named" caches.                                         -->
    <!--                                                                                 -->
    <!-- While default configuration happens to be fine with similar settings across the -->
    <!-- three caches, they should generally be different in a production environment.   -->
    <!--                                                                                 -->
    <!-- Current settings could easily lead to OutOfMemory exception as a CacheStore     -->
    <!-- should be enabled, and maybe distribution is desired.                           -->
    <!-- ******************************************************************************* -->

    <!-- *************************************** -->
    <!--  Cache to store Lucene's file metadata  -->
    <!-- *************************************** -->
    <namedCache
        name="LuceneIndexesMetadata">
        <clustering
            mode="replication">
            <stateTransfer
                fetchInMemoryState="true" />
            <sync
                replTimeout="25000" />
        </clustering>
       <loaders>

   <loader class="org.infinispan.loaders.jdbc.stringbased.JdbcStringBasedCacheStore" fetchPersistentState="false" ignoreModifications="false"
purgeOnStartup="false">
      <properties>
         <property name="stringsTableNamePrefix" value="ISPN_STRING_TABLE"/>
         <property name="idColumnName" value="ID_COLUMN"/>
         <property name="dataColumnName" value="DATA_COLUMN"/>
         <property name="timestampColumnName" value="TIMESTAMP_COLUMN"/>
         <property name="timestampColumnType" value="BIGINT"/>
         <property name="connectionFactoryClass" value="org.infinispan.loaders.jdbc.connectionfactory.PooledConnectionFactory"/>
         <property name="connectionUrl" value="jdbc:h2:mem:string_based_db;DB_CLOSE_DELAY=-1"/>
         <property name="userName" value="sa"/>
         <property name="driverClass" value="org.h2.Driver"/>
         <property name="idColumnType" value="VARCHAR(255)"/>
         <property name="dataColumnType" value="BINARY"/>
         <property name="dropTableOnExit" value="true"/>
         <property name="createTableOnStart" value="true"/>
      </properties>
   </loader>
</loaders>
    </namedCache>

    <!-- **************************** -->
    <!--  Cache to store Lucene data  -->
    <!-- **************************** -->
    <namedCache
        name="LuceneIndexesData">
        <clustering
            mode="replication">
            <stateTransfer
                fetchInMemoryState="true" />
            <sync
                replTimeout="25000" />
        </clustering>
      <loaders>

   <loader class="org.infinispan.loaders.jdbc.stringbased.JdbcStringBasedCacheStore" fetchPersistentState="false" ignoreModifications="false"
purgeOnStartup="false">
      <properties>
         <property name="stringsTableNamePrefix" value="ISPN_STRING_TABLE"/>
         <property name="idColumnName" value="ID_COLUMN"/>
         <property name="dataColumnName" value="DATA_COLUMN"/>
         <property name="timestampColumnName" value="TIMESTAMP_COLUMN"/>
         <property name="timestampColumnType" value="BIGINT"/>
         <property name="connectionFactoryClass" value="org.infinispan.loaders.jdbc.connectionfactory.PooledConnectionFactory"/>
         <property name="connectionUrl" value="jdbc:h2:mem:string_based_db;DB_CLOSE_DELAY=-1"/>
         <property name="userName" value="sa"/>
         <property name="driverClass" value="org.h2.Driver"/>
         <property name="idColumnType" value="VARCHAR(255)"/>
         <property name="dataColumnType" value="BINARY"/>
         <property name="dropTableOnExit" value="true"/>
         <property name="createTableOnStart" value="true"/>
      </properties>
   </loader>
</loaders>
    </namedCache>

    <!-- ***************************** -->
    <!--  Cache to store Lucene locks  -->
    <!-- ***************************** -->
    <namedCache
        name="LuceneIndexesLocking">
        <clustering
            mode="replication">
            <stateTransfer
                fetchInMemoryState="true" />
            <sync
                replTimeout="25000" />
        </clustering>
    </namedCache>

</infinispan>

Any pointers or guidance will be really helpful.

Regards, rams


I moved a bit. The jar files [hibernate-search-infinispan.jar, infinispan-lucene-directory.jar and infinispan-core.jar] were not in classpath. That was the reason for previous error. I cleared it but facing new Error while trying to store infinispan created indexes in DB using JDBC cache store..

I checked the jar file dependency this time.. when i copy infinispan-cachestore-jdbc-5.2.1.Final.jar file to classpath it is piling countless error messages.. The error stack trace is,

17:46:08,301 ERROR [org.jboss.msc.service.fail] (ServerService Thread Pool -- 55) MSC00001: Failed to start service jboss.persistenceunit."inov8.war#inov8": org.jboss.msc.service.StartException in service jboss.persistenceunit."inov8.war#inov8": org.hibernate.search.SearchException: HSEARCH000103: Unable to initialize IndexManager xx.inov8.domain.innovation.InnovationComponent at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1.run(PersistenceUnitServiceImpl.java:103) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_17] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_17] at java.lang.Thread.run(Thread.java:722) [rt.jar:1.7.0_17] at org.jboss.threads.JBossThread.run(JBossThread.java:122) Caused by: org.hibernate.search.SearchException: HSEARCH000103: Unable to initialize IndexManager xx.inov8.domain.innovation.InnovationComponent at org.hibernate.search.indexes.impl.IndexManagerHolder.createIndexManager(IndexManagerHolder.java:230) at org.hibernate.search.indexes.impl.IndexManagerHolder.buildEntityIndexBinding(IndexManagerHolder.java:102) at org.hibernate.search.spi.SearchFactoryBuilder.initDocumentBuilders(SearchFactoryBuilder.java:414) at org.hibernate.search.spi.SearchFactoryBuilder.buildNewSearchFactory(SearchFactoryBuilder.java:222) at org.hibernate.search.spi.SearchFactoryBuilder.buildSearchFactory(SearchFactoryBuilder.java:146) at org.hibernate.search.event.impl.FullTextIndexEventListener.initialize(FullTextIndexEventListener.java:130) at org.hibernate.search.hcore.impl.HibernateSearchIntegrator.integrate(HibernateSearchIntegrator.java:83) at org.hibernate.internal.SessionFactoryImpl.(SessionFactoryImpl.java:303) at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1742) at org.hibernate.ejb.EntityManagerFactoryImpl.(EntityManagerFactoryImpl.java:94) at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:905) at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:890) at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:74) at org.jboss.as.jpa.service.PersistenceUnitServiceImpl.createContainerEntityManagerFactory(PersistenceUnitServiceImpl.java:200) at org.jboss.as.jpa.service.PersistenceUnitServiceImpl.access$600(PersistenceUnitServiceImpl.java:57) at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1.run(PersistenceUnitServiceImpl.java:99) ... 4 more Caused by: org.hibernate.search.SearchException: Unable to initialize directory provider: xx.inov8.domain.innovation.InnovationComponent at org.hibernate.search.store.impl.DirectoryProviderFactory.createDirectoryProvider(DirectoryProviderFactory.java:87) at org.hibernate.search.indexes.impl.DirectoryBasedIndexManager.createDirectoryProvider(DirectoryBasedIndexManager.java:232) at org.hibernate.search.indexes.impl.DirectoryBasedIndexManager.initialize(DirectoryBasedIndexManager.java:100) at org.hibernate.search.indexes.impl.IndexManagerHolder.createIndexManager(IndexManagerHolder.java:227) ... 19 more Caused by: org.infinispan.config.ConfigurationException: org.infinispan.CacheConfigurationException: Unable to instantiate class org.infinispan.loaders.jdbc.stringbased.JdbcStringBasedCacheStore at org.infinispan.configuration.parsing.Parser.parse(Parser.java:168) at org.infinispan.configuration.parsing.Parser.parse(Parser.java:130) at org.infinispan.manager.DefaultCacheManager.(DefaultCacheManager.java:368) at org.infinispan.manager.DefaultCacheManager.(DefaultCacheManager.java:340) at org.infinispan.manager.DefaultCacheManager.(DefaultCacheManager.java:327) at org.hibernate.search.infinispan.CacheManagerServiceProvider.start(CacheManagerServiceProvider.java:93) at org.hibernate.search.engine.impl.StandardServiceManager$ServiceProviderWrapper.startVirtual(StandardServiceManager.java:178) at org.hibernate.search.engine.impl.StandardServiceManager.requestService(StandardServiceManager.java:124) at org.hibernate.search.infinispan.impl.InfinispanDirectoryProvider.initialize(InfinispanDirectoryProvider.java:86) at org.hibernate.search.store.impl.DirectoryProviderFactory.createDirectoryProvider(DirectoryProviderFactory.java:84) ... 22 more Caused by: org.infinispan.CacheConfigurationException: Unable to instantiate class org.infinispan.loaders.jdbc.stringbased.JdbcStringBasedCacheStore at org.infinispan.util.Util.loadClass(Util.java:90) at org.infinispan.util.Util.getInstance(Util.java:208) at org.infinispan.configuration.parsing.Parser.parseLoader(Parser.java:546) at org.infinispan.configuration.parsing.Parser.parseLoaders(Parser.java:524) at org.infinispan.configuration.parsing.Parser.parseCache(Parser.java:295) at org.infinispan.configuration.parsing.Parser.parseNamedCache(Parser.java:254) at org.infinispan.configuration.parsing.Parser.doParse(Parser.java:211) at org.infinispan.configuration.parsing.Parser.parse(Parser.java:154) ... 31 more Caused by: java.lang.ClassNotFoundException: org.infinispan.loaders.jdbc.stringbased.JdbcStringBasedCacheStore at java.net.URLClassLoader$1.run(URLClassLoader.java:366) [rt.jar:1.7.0_17] at java.net.URLClassLoader$1.run(URLClassLoader.java:355) [rt.jar:1.7.0_17] at java.security.AccessController.doPrivileged(Native Method) [rt.jar:1.7.0_17] at java.net.URLClassLoader.findClass(URLClassLoader.java:354) [rt.jar:1.7.0_17] at java.lang.ClassLoader.loadClass(ClassLoader.java:423) [rt.jar:1.7.0_17] at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) [rt.jar:1.7.0_17] at java.lang.ClassLoader.loadClass(ClassLoader.java:356) [rt.jar:1.7.0_17] at java.lang.Class.forName0(Native Method) [rt.jar:1.7.0_17] at java.lang.Class.forName(Class.java:266) [rt.jar:1.7.0_17] at org.infinispan.util.Util.loadClassStrict(Util.java:127) at org.infinispan.util.Util.loadClass(Util.java:88) ... 38 more

Any examples for configuring jdbc cache store or pointers would be really helpful.

Thanks and Regards, rams

War es hilfreich?

Lösung

Following the guide in the hibernate search docs, I have done this by adding the hibernate search modules (v4.3 was the closest I could find to the v4.2 that ships with AS7.2) from the file hibernate-search-modules-4.3.0.Final-jbossas-72-dist.zip into JBoss AS7's modules directory, then added in the war file's jboss-deployment-structure.xml

   <jboss-deployment-structure>
      <deployment>
          <dependencies>
              <module name="org.hibernate.search.orm"/>
          </dependencies>
      </deployment>
  </jboss-deployment-structure>

I used the workaround here https://issues.jboss.org/browse/WFLY-1632, adding

<module name="org.infinispan.cachestore.jdbc"/>

into the file modules/system/layers/base/org/infinispan/main/module.xml

In JBoss's standalone-ha.xml, I added a new cache-container element with three replicated-cache elements below it:

<cache-container name="hibernateSearch" default-cache="repl">
    <transport lock-timeout="60000"/>
<replicated-cache name="LuceneIndexesMetadata" mode="SYNC"  >
 <binary-keyed-jdbc-store datasource="java:/db/[datasource in JNDI]"
          passivation="false" shared="true" purge="false">
    <property name="createTableOnStart" >true</property>
    <binary-keyed-table>
        <id-column name="ID_COLUMN" type="VARCHAR(255)" />
        <data-column name="DATUM" type="BLOB"/>
    </binary-keyed-table>
 </binary-keyed-jdbc-store>
</replicated-cache>

<!-- Above replicated-cache section additionally repeated for
name="LuceneIndexesData",name="LuceneIndexesLocking"   -->

</cache-container>

and added the following to persistence.xml

<property name="hibernate.search.infinispan.cachemanager_jndiname" value="java:jboss/infinispan/container/hibernateSearch" />
<property name="hibernate.search.default.directory_provider" value="infinispan" />

I did not include any core hibernate or hibernate search jars in my deployed war because they are provided by JBoss, so I updated the war POM to exclude them:

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-search</artifactId>
    <version>4.2.0.Final</version>
    <scope>provided</scope>
</dependency>
... and so on for all other hibernate jars
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top