I have JBoss Cache 2 setup as my second level cache in a two node cluster. I 
see that changes from one node are replicated to the other node OK but they are 
not being persisted into the actual database, they seem to be sitting in the 
second level cache. I checked the org.jboss.cache.DataContainerImpl MBean and 
saw that the replicated object is there.

Why isn't the replicated object being persisted to the database?

Hibernate Spring Config:
<tx:annotation-driven mode="aspectj" transaction-manager="transactionManager"/>
  |    
  |     <bean id="annotationTransactionAspect" factory-method="aspectOf" 
class="org.springframework.transaction.aspectj.AnnotationTransactionAspect" 
lazy-init="true">
  |         <property name="transactionManager" ref="transactionManager"/>
  |     </bean>
  |    
  |     <bean id="hibernateDaoFactory" 
class="com.solers.vulcan.dao.impl.HibernateDAOFactory" scope="singleton" 
lazy-init="true">
  |         <property name="sessionFactory" ref="sessionFactory" />
  |     </bean>
  |    
  |     <bean id="jotm" 
class="org.springframework.transaction.jta.JotmFactoryBean"/>
  |    
  |     <bean id="transactionManager" 
class="org.springframework.transaction.jta.JtaTransactionManager" 
lazy-init="true">
  |         <property name="userTransaction" ref="jotm"/>
  |     </bean>
  |    
  |     <bean id="sessionFactory" 
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"
 scope="singleton" lazy-init="true">
  |         <property name="annotatedClasses" ref="hibernateClasses"/>
  |         <property name="hibernateProperties" ref="hibernateProperties"/>
  |         <property name="dataSource" ref="dataSource" />
  |         <property name="jtaTransactionManager" ref="jotm"/>
  |     </bean>
  |    
  |     <bean id="hibernateProperties" 
class="org.springframework.beans.factory.config.PropertiesFactoryBean">
  |         <property name="properties">
  |             <props>
  |                 <prop key="hibernate.show_sql">false</prop>
  |                 <prop key="hibernate.connection.autocommit">false</prop>
  |                 <prop key="hibernate.connection.shutdown">true</prop>
  |                 <prop 
key="hibernate.dialect">org.hibernate.dialect.DerbyDialect</prop>
  |                 <prop key="hibernate.jdbc.batch_size">25</prop>
  |                 <prop key="hibernate.default_schema">${jdbc.user}</prop>
  |                 <prop 
key="hibernate.cache.use_second_level_cache">true</prop>
  |                 <prop 
key="hibernate.cache.region.factory_class">org.hibernate.cache.jbc2.SharedJBossCacheRegionFactory</prop>
  |                 <prop key="hibernate.cache.region_prefix">MSG</prop>
  |                 <prop 
key="hibernate.cache.region.jbc2.cfg.shared">cache-config.xml</prop>
  |                 <prop 
key="hibernate.transaction.factory_class">org.springframework.orm.hibernate3.SpringTransactionFactory</prop>
  |                 <prop 
key="hibernate.transaction.manager_lookup_class">org.springframework.orm.hibernate3.LocalTransactionManagerLookup</prop>
  |                
  |             </props>
  |         </property>
  |     </bean>

cache-config.xml:
<?xml version="1.0" encoding="UTF-8"?>
  | 
  | <server>
  |    <mbean code="org.jboss.cache.TreeCache"
  |       name="jboss.cache:service=TreeCache">
  | 
  |       <attribute name="NodeLockingScheme">PESSIMISTIC</attribute>
  |       <attribute name="IsolationLevel">READ_COMMITTED</attribute>
  |       <attribute name="CacheMode">REPL_SYNC</attribute>
  | 
  |       <!-- Name of cluster. Needs to be the same for all members, in order 
to find each other -->
  |       <attribute name="ClusterName">pessimistic-shared</attribute>
  | 
  |       <attribute name="ClusterConfig">
  |          <config>           
  |             <TCP
  |                stats="true"
  |                bind_addr="${jgroups.tcp.bind_addr}"
  |                start_port="${jgroups.tcp.start_port}" />
  |                    
  |             <TCPPING
  |                stats="true"
  |                timeout="3000"
  |                
initial_hosts="${jgroups.tcpping.initial_hosts:localhost[7800]}"
  |                port_range="${jgroups.tcpping.port_range}"
  |                
num_initial_members="${jgroups.tcpping.num_initial_members}"/>
  |                    
  |             <VERIFY_SUSPECT timeout="1500"/>
  |                
  |             <pbcast.NAKACK
  |                use_mcast_xmit="false"
  |                gc_lag="0"
  |                retransmit_timeout="300,600,1200,2400,4800"
  |                discard_delivered_msgs="true"/>
  |                    
  |             <pbcast.STABLE
  |                stability_delay="1000"
  |                desired_avg_gossip="50000"
  |                max_bytes="400000"/>
  |                    
  |             <pbcast.GMS
  |                print_local_addr="true"
  |                join_timeout="3000"
  |                shun="true"
  |                view_bundling="true"/>
  |                    
  |             <pbcast.STREAMING_STATE_TRANSFER/>
  |                
  |             <FD_SOCK/>
  |                
  |             <FD
  |                timeout="10000"
  |                max_tries="5"
  |                shun="true"/>
  |          </config>
  |       </attribute>
  | 
  |       <attribute name="FetchInMemoryState">true</attribute>
  |       <attribute name="StateRetrievalTimeout">20000</attribute>
  |       <attribute name="SyncReplTimeout">20000</attribute>
  |       <attribute name="LockAcquisitionTimeout">15000</attribute>
  |        
  |       <attribute name="UseRegionBasedMarshalling">true</attribute>
  |       <!-- Must match the value of "useRegionBasedMarshalling" -->
  |       <attribute name="InactiveOnStartup">true</attribute>
  | 
  |       <attribute name="EvictionPolicyConfig">
  |          <config>
  |             <attribute name="wakeUpIntervalSeconds">5</attribute>
  |             <!-- Name of the DEFAULT eviction policy class. -->
  |             <attribute 
name="policyClass">org.jboss.cache.eviction.LRUPolicy</attribute>
  |             <!--  Cache wide default -->
  |             <region name="/_default_">
  |                <!-- Evict LRU node once we have more than this number of 
nodes -->
  |                <attribute name="maxNodes">10000</attribute>
  |                <!-- And, evict any node that hasn't been accessed in this 
many seconds -->
  |                <attribute name="timeToLiveSeconds">1000</attribute>
  |                <!-- Don't evict a node that's been accessed within this 
many seconds.
  |                    Set this to a value greater than your max expected 
transaction length. -->
  |                <attribute name="minTimeToLiveSeconds">120</attribute>
  |             </region>
  |             <!--  Don't ever evict modification timestamps -->
  |             <region name="/TS" 
policyClass="org.jboss.cache.eviction.NullEvictionPolicy"/>
  |          </config>
  |       </attribute>
  |    
  |    </mbean>
  | </server>

Thanks

View the original post : 
http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4236796#4236796

Reply to the post : 
http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4236796
_______________________________________________
jboss-user mailing list
jboss-user@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to