<?xml version="1.0"?>
<!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
 distributed with this work for additional information
 regarding copyright ownership.  The ASF licenses this file
 to you under the Apache License, Version 2.0 (the
 "License"); you may not use this file except in compliance
 with the License.  You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing,
 software distributed under the License is distributed on an
 "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
-->

<document>
  <properties>
    <title>Lateral JGroups Auxiliary Cache</title>
    <author email="ASmuts@apache.org">Aaron Smuts</author>
  </properties>

  <body>
    <section name="Lateral JGroups Auxiliary Cache">
      <p>
        The Lateral JGroups Auxiliary Cache is an optional plug in for
        JCS.  It is primarily intended to broadcast puts and removals to
        other local caches, though it can also get cached objects.  It uses JGroups
        for distribution.
      </p>
      <p>
		The Lateral Lateral JGroups Auxiliary Cache is far slower than
		that Lateral TCP Auxiliary Cache.  Since the Lateral TCP Auxiliary
		is faster and has UDP discovery built in, the TCP auxiliary is the recommended form of lateral
		distribution.  However, the JGroups Auxiliary requires fewer socket connections than
		the TCP lateral.
      </p>
      <p>
		A functional configuration example is below:
      </p>

        <source><![CDATA[
# Lateral JavaGroups Distribution
jcs.auxiliary.LJG=org.apache.commons.jcs3.auxiliary.lateral.LateralCacheFactory
jcs.auxiliary.LJG.attributes=org.apache.commons.jcs3.auxiliary.lateral.LateralCacheAttributes
jcs.auxiliary.LJG.attributes.TransmissionTypeName=JAVAGROUPS
jcs.auxiliary.LJG.attributes.PutOnlyMode=true
jcs.auxiliary.LJG.attributes.JGChannelProperties=UDP(mcast_addr=224.0.0.100;mcast_port=7501):PING:FD:STABLE:NAKACK:UNICAST:FRAG:FLUSH:GMS:QUEUE
        ]]></source>


    </section>
  </body>
</document>
