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

<!-- ===================================================================== -->
<!--                                                                       -->
<!--  Customized TreeCache Service Configuration for Tomcat 5 Clustering   -->
<!--                                                                       -->
<!-- ===================================================================== -->

<server>

    <!-- ==================================================================== -->
    <!-- Defines TreeCache configuration                                      -->
    <!-- ==================================================================== -->

    <mbean code="org.jboss.cache.TreeCache"
        name="jboss.cache:service=TomcatClusteringCache">

        <depends>jboss:service=Naming</depends>
        <depends>jboss:service=TransactionManager</depends>

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

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

        <!--
             Valid modes are LOCAL, REPL_ASYNC and 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">Tomcat-Cluster</attribute>

        <!-- JGroups protocol stack properties. Can also be a URL,
             e.g. file:/home/bela/default.xml
           <attribute name="ClusterProperties"></attribute>
        -->

        <attribute name="ClusterConfig">
  <!-- fc-fast-minimalthreads.xml with some FC tuning
         discard_incompatible_packets="true"
         tos="16"
  -->
  <config>
    <UDP mcast_addr="230.1.2.3" mcast_port="45577"
         ucast_recv_buf_size="20000000"
         ucast_send_buf_size="640000"
         mcast_recv_buf_size="25000000"
         mcast_send_buf_size="640000"
         loopback="false"
         max_bundle_size="64000"
         max_bundle_timeout="30"
         use_incoming_packet_handler="true"
         use_outgoing_packet_handler="false"
         ip_ttl="2"
         down_thread="false" up_thread="false"
         enable_bundling="true"/>
    <PING timeout="2000"
          down_thread="false" up_thread="false" num_initial_members="3"/>
    <!-- MERGE2 max_interval="100000"
            down_thread="false" up_thread="false" min_interval="20000"/ -->
    <FD_SOCK down_thread="false" up_thread="false"/>
    <!--VERIFY_SUSPECT timeout="1500" down_thread="false"/-->
    <pbcast.NAKACK max_xmit_size="60000"
                   use_mcast_xmit="false" gc_lag="2"
                   retransmit_timeout="100,200,300,600,1200,2400,4800"
                   down_thread="false" up_thread="false"
                   discard_delivered_msgs="true"/>
    <UNICAST timeout="300,600,1200,2400,3600"
             down_thread="false" up_thread="false"/>
    <pbcast.STABLE stability_delay="1000" desired_avg_gossip="50000"
                   down_thread="false" up_thread="false"
                   max_bytes="400000"/>
    <pbcast.GMS print_local_addr="true" join_timeout="3000"
                down_thread="false" up_thread="false"
                join_retry_timeout="2000" shun="true"/>
    <!-- Comment it out when we use repl_sync. We don't need fc when it is sync mode. -->
    <!--FC max_credits="2000000" down_thread="false" up_thread="false"
        min_threshold="0.20" max_block_time="5000"/-->
    <FRAG2 frag_size="60000" down_thread="false" up_thread="false"/>
    <!--Turn COMPRESS on when running PojoCache-->
    <!--COMPRESS min_size="4000" compression_level="1"/-->
    <pbcast.STATE_TRANSFER up_thread="false" down_thread="false"/>
  </config>

  <!-- tcp-fast.xml | You have to edit bind_addr correctly. -->
<!-- 
  <config>
    <TCP bind_addr="192.168.160.101"
         recv_buf_size="20000000"
         send_buf_size="640000"
         loopback="false"
         discard_incompatible_packets="true"
         max_bundle_size="64000"
         max_bundle_timeout="30"
         use_incoming_packet_handler="true" 
         use_outgoing_packet_handler="false" 
         down_thread="false" up_thread="false"
         enable_bundling="true"
         start_port="7800"
         use_send_queues="false"
         sock_conn_timeout="300" skip_suspected_members="true"/>
    <MPING timeout="2000" 
           num_initial_members="2"
           mcast_addr="${jboss.partition.udpGroup:230.1.2.7}"
           bind_addr="192.168.160.101"
           down_thread="false" up_thread="false"/>
    <FD_SOCK down_thread="false" up_thread="false"/>
    <pbcast.NAKACK max_xmit_size="60000"
                   use_mcast_xmit="false" gc_lag="10"
                   retransmit_timeout="100,200,300,600,1200,2400,4800"
                   down_thread="false" up_thread="false"
                   discard_delivered_msgs="true"/>
    <pbcast.STABLE stability_delay="1000" desired_avg_gossip="50000" 
                   down_thread="false" up_thread="false"
                   max_bytes="400000"/>
    <VIEW_SYNC avg_send_interval="60000" down_thread="false" up_thread="false" />
    <pbcast.GMS print_local_addr="true" join_timeout="3000" 
                down_thread="false" up_thread="false"
                join_retry_timeout="2000" shun="true"/>
    <FC max_credits="2000000" down_thread="false" up_thread="false"
        min_threshold="0.10" max_block_time="1000"/>
    <pbcast.STATE_TRANSFER up_thread="false" down_thread="false"/>
  </config>
-->
        </attribute>

        <!-- Max number of milliseconds to wait for a lock acquisition -->
        <attribute name="LockAcquisitionTimeout">14000</attribute>
        <attribute name="SyncReplTimeout">15000</attribute>

        <attribute name="UseRegionBasedMarshalling">false</attribute>
    </mbean>

</server>
