5 Replies Latest reply on Nov 7, 2006 2:18 AM by crr

    Error in using TreeCache from Hibernate

    borje.jonsson

      I successfully configured JbossCache in Jboss 4.0.2, but when I configure Hibernate to use TreeCache I get A ClassNotFoundException:

      13:57:59,832 ERROR [Hibernate] Starting failed jboss.har:service=Hibernate org.hibernate.HibernateException: could not instantiate CacheProvider: org.jboss.cache.TreeCache

      Jboss 4.0.2, Hibernate version 3.0.5, JbossCache version 1.2.4
      jboss-cache.jar and jgroups.jar is in ./lib.

      I successfully use TreeCache http sessionreplication in the same Jboss instance.

      tree-service.xml

      <server>
       <classpath codebase="./lib" archives="jboss-cache.jar, jgroups.jar"/>
      
       <mbean code="org.jboss.cache.TreeCache"
       name="jboss.cache:service=TreeCache">
       <depends>jboss:service=Naming</depends>
       <depends>jboss:service=TransactionManager</depends>
      
       <attribute name="TransactionManagerLookupClass">org.jboss.cache.JBossTransactionManagerLookup</attribute>
       <attribute name="IsolationLevel">REPEATABLE_READ</attribute>
       <attribute name="CacheMode">REPL_ASYNC</attribute>
       <attribute name="ClusterName">TreeCache-Cluster</attribute>
      
       <attribute name="ClusterConfig">
       <config>
       <UDP mcast_addr="228.1.2.5" mcast_port="45577"
       ip_ttl="64" ip_mcast="true"
       mcast_send_buf_size="150000" mcast_recv_buf_size="80000"
       ucast_send_buf_size="150000" ucast_recv_buf_size="80000"
       loopback="false"/>
       <PING timeout="2000" num_initial_members="3"
       up_thread="false" down_thread="false"/>
       <MERGE2 min_interval="10000" max_interval="20000"/>
       <FD shun="true" up_thread="true" down_thread="true"/>
       <VERIFY_SUSPECT timeout="1500"
       up_thread="false" down_thread="false"/>
       <pbcast.NAKACK gc_lag="50" retransmit_timeout="600,1200,2400,4800"
       up_thread="false" down_thread="false"/>
       <pbcast.STABLE desired_avg_gossip="20000"
       up_thread="false" down_thread="false"/>
       <UNICAST timeout="600,1200,2400" window_size="100" min_threshold="10"
       down_thread="false"/>
       <FRAG frag_size="8192"
       down_thread="false" up_thread="false"/>
       <pbcast.GMS join_timeout="5000" join_retry_timeout="2000"
       shun="true" print_local_addr="true"/>
       <pbcast.STATE_TRANSFER up_thread="false" down_thread="false"/>
       </config>
       </attribute>
      
       <attribute name="InitialStateRetrievalTimeout">20000</attribute>
       <attribute name="SyncReplTimeout">15000</attribute>
       <attribute name="LockAcquisitionTimeout">10000</attribute>
       <attribute name="EvictionPolicyClass"></attribute>
       </mbean>
      </server>
      


      In hibernate-service.xml:
      ...
       <attribute name="CacheProviderClass">
       org.jboss.cache.TreeCache</attribute>
       <attribute name="QueryCacheEnabled">true</attribute>
      ...
      



      regards,
      Börje Jonsson

        • 1. Re: Error in using TreeCache from Hibernate
          manik

          This is a configuration error. In hibernate-service.xml, you should use:

          ...
           <attribute name="CacheProviderClass">
           org.hibernate.cache.TreeCacheProvider</attribute>
           <attribute name="QueryCacheEnabled">true</attribute>
          ...
          


          This is because Hibernate comes with a 'Provider' class for each major cache it supports; a wrapper that abstracts Hibernate code from cache product specifics.

          See http://www.hibernate.org/hib_docs/v3/reference/en/html/performance.html#performance-cache for more info on Provider classes.

          • 2. Re: Error in using TreeCache from Hibernate
            borje.jonsson

            Thanks for the tip, but now i get another error:

            10:24:38,851 ERROR [Hibernate] Starting failed jboss.har:service=Hibernate org.hibernate.cache.CacheException: org.jboss.cache.ConfigureException: could not find resource treecache.xml

            But if i rename treecache-service.xml to treecache.xml and put it in my classpath it works. No errors and it seems the members in the cluster finds each other. Not shure this is the correct approach.

            Now i have to find out if replication really works between hibbernate instances.

            /Börje

            • 3. Re: Error in using TreeCache from Hibernate
              manik

              Yes, Hibernate does require that you call your config file treecache.xml. You should also be able to specify JNDI properties so that it picks up the shared TreeCache instance bound to JNDI by the app server though...

              • 4. Re: Error in using TreeCache from Hibernate
                akardell

                Perhaps I'm missing a setting? None of my timeouts are set to 0, as seen below:

                <?xml version="1.0" encoding="UTF-8" ?>
                <server>
                
                 <!-- ==================================================================== -->
                 <!-- Defines TreeCache configuration -->
                 <!-- ==================================================================== -->
                 <mbean code="org.jboss.cache.TreeCache" name="jboss.cache:service=TreeCache">
                 <depends>jboss:service=Naming</depends>
                 <depends>jboss:service=TransactionManager</depends>
                
                
                 <!-- Configure the TransactionManager -->
                 <attribute name="TransactionManagerLookupClass">org.jboss.cache.DummyTransactionManagerLookup</attribute>
                
                 <!--
                 Node locking level : SERIALIZABLE
                 REPEATABLE_READ (default)
                 READ_COMMITTED
                 READ_UNCOMMITTED
                 NONE
                 -->
                 <attribute name="IsolationLevel">READ_COMMITTED</attribute>
                
                 <!-- Valid modes are LOCAL
                 REPL_ASYNC
                 REPL_SYNC
                 -->
                 <attribute name="CacheMode">INVALIDATION_ASYNC</attribute>
                
                 <!-- Name of cluster. Needs to be the same for all clusters, in order
                 to find each other -->
                 <attribute name="ClusterName">TreeCache-Cluster</attribute>
                
                 <attribute name="ClusterConfig">
                 <config>
                 <!-- UDP: if you have a multihomed machine,
                 set the bind_addr attribute to the appropriate NIC IP address
                 -->
                 <!-- UDP: On Windows machines, because of the media sense feature
                 being broken with multicast (even after disabling media sense)
                 set the loopback attribute to true
                 -->
                 <UDP mcast_addr="228.8.8.8" mcast_port="45567" ip_ttl="64" ip_mcast="true"
                 mcast_send_buf_size="150000" mcast_recv_buf_size="80000" ucast_send_buf_size="150000"
                 ucast_recv_buf_size="80000" loopback="true" bind_addr="0.0.0.0" />
                 <PING timeout="2000" num_initial_members="3" up_thread="false" down_thread="false" />
                 <MERGE2 min_interval="10000" max_interval="20000" />
                 <FD shun="true" up_thread="true" down_thread="true" />
                 <VERIFY_SUSPECT timeout="1500" up_thread="false" down_thread="false" />
                 <pbcast.NAKACK gc_lag="50" max_xmit_size="8192" retransmit_timeout="600,1200,2400,4800" up_thread="false"
                 down_thread="false" />
                 <UNICAST timeout="600,1200,2400" window_size="100" min_threshold="10" down_thread="false" />
                 <pbcast.STABLE desired_avg_gossip="20000" up_thread="false" down_thread="false" />
                 <FRAG frag_size="8192" down_thread="false" up_thread="false" />
                 <pbcast.GMS join_timeout="5000" join_retry_timeout="2000" shun="true" print_local_addr="true" />
                 <pbcast.STATE_TRANSFER up_thread="false" down_thread="false" />
                 </config>
                 </attribute>
                
                 <!-- The max amount of time (in milliseconds) we wait until the
                 initial state (ie. the contents of the cache) are retrieved from
                 existing members in a clustered environment
                 -->
                 <attribute name="InitialStateRetrievalTimeout">5000</attribute>
                
                 <!-- Number of milliseconds to wait until all responses for a
                 synchronous call have been received.
                 -->
                 <attribute name="SyncReplTimeout">10000</attribute>
                
                 <!-- Max number of milliseconds to wait for a lock acquisition -->
                 <attribute name="LockAcquisitionTimeout">15000</attribute>
                
                 <!-- Name of the eviction policy class. -->
                 <attribute name="EvictionPolicyClass">org.jboss.cache.eviction.LRUPolicy</attribute>
                
                 <!-- Specific eviction policy configurations. This is LRU -->
                 <attribute name="EvictionPolicyConfig">
                 <config>
                 <attribute name="wakeUpIntervalSeconds">5</attribute>
                 <!-- Cache wide default -->
                 <region name="/_default_">
                 <attribute name="maxNodes">1000</attribute>
                 <attribute name="timeToLiveSeconds">3600</attribute>
                 </region>
                 </config>
                 </attribute>
                
                 </mbean>
                </server>
                



                • 5. Re: Error in using TreeCache from Hibernate

                  Please tell me how to configure jboss cache in jboss server





                  thanks

                  crr