<?xml version="1.0" encoding="UTF-8"?>
<server>

  <!--  ====================================================================  -->
  <!--  Defines TreeCache configuration                                       -->
  <!--  ====================================================================  -->
  <mbean code="org.jboss.cache.TreeCache" name="jboss.cache:service=EJB3EntityTreeCache">
    <depends>jboss:service=Naming</depends>
    <depends>jboss:service=TransactionManager</depends>
    
    <!-- uncomment next three statements if using JGroups multiplexer,
          requires JGroups 2.3 or later, JBossCache 1.4 or later -->
    <!--
    <depends>jgroups.mux:name=Multiplexer</depends>
    <attribute name="MultiplexerService">jgroups.mux:name=Multiplexer</attribute>
    <attribute name="MultiplexerStack">fc-fast-minimalthreads</attribute>
    -->

    <!-- Configure the TransactionManager -->
    <attribute name="TransactionManagerLookupClass">org.jboss.cache.JBossTransactionManagerLookup</attribute>

    <!--
            Node locking level : SERIALIZABLE
                                 REPEATABLE_READ (default)
                                 READ_COMMITTED
                                 READ_UNCOMMITTED
                                 NONE
    -->
    <attribute name="IsolationLevel">REPEATABLE_READ</attribute>

    <!--     Valid modes are LOCAL
                             REPL_ASYNC
                             REPL_SYNC
    -->
    <attribute name="CacheMode">REPL_SYNC</attribute>

    <!-- Name of cluster. Needs to be the same for all clusters, in order
             to find each other -->
    <attribute name="ClusterName">EJB3-entity-cache</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="${jboss.partition.udpGroup:228.1.2.3}" mcast_port="43333" ip_ttl="2" 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" 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">5000</attribute>
         <attribute name="timeToLiveSeconds">1000</attribute>
       </region>
      </config>
    </attribute>

  </mbean>

</server>

