<?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>Remote Http Cache Configuration</title>
		<author email="ASmuts@apache.org">Aaron Smuts</author>
	</properties>
	<body>
		<section name="Remote Auxiliary Http Cache Configuration">
			<p> The following properties apply to the Remote Http Cache plugin.</p>
			<subsection name="Remote Http Client Configuration Properties">
				<table>
					<tr>
						<th>Property</th>
						<th>Description</th>
						<th>Required</th>
						<th>Default Value</th>
					</tr>
					<tr>
						<td>url</td>
						<td> This is the full url for the http service.</td>
						<td>Y</td>
						<td>n/a</td>
					</tr>
					<tr>
						<td>maxConnectionsPerHost</td>
						<td> Maximum simultaneous connections per host.</td>
						<td>N</td>
						<td>100</td>
					</tr>
					<tr>
						<td>socketTimeoutMillis</td>
						<td> Read timeout.</td>
						<td>N</td>
						<td>3000</td>
					</tr>
					<tr>
						<td>connectionTimeoutMillis</td>
						<td> Connection timeout.</td>
						<td>N</td>
						<td>5000</td>
					</tr>
					<tr>
						<td>httpVersion</td>
						<td> The http version to use.</td>
						<td>N</td>
						<td>1.1</td>
					</tr>
					<tr>
						<td>includeCacheNameAsParameter</td>
						<td> Should the cache name be appended to the url.</td>
						<td>N</td>
						<td>true</td>
					</tr>
					<tr>
						<td>includeKeysAndPatternsAsParameter
						</td>
						<td> Should the key be appended to the url.</td>
						<td>N</td>
						<td>true</td>
					</tr>
					<tr>
						<td>includeRequestTypeasAsParameter
						</td>
						<td> Should the request type be appended to the url.</td>
						<td>N</td>
						<td>true</td>
					</tr>
					<tr>
						<td>remoteHttpClientClassName
						</td>
						<td> This allows you to specify your own client implementation.</td>
						<td>N</td>
						<td>RemoteHttpCacheClient.class.getName()</td>
					</tr>
					<tr>
						<td>ZombieQueueMaxSize</td>
						<td> The number of elements the zombie queue will hold. This queue
							is used to store events if we lose our connection with the
							server.</td>
						<td>N</td>
						<td>1000</td>
					</tr>
				</table>
			</subsection>
			<subsection name="Example Configuration">
				<source>
					<![CDATA[
# This remote client does not receive
jcs.auxiliary.RC=org.apache.commons.jcs3.auxiliary.remote.http.client.RemoteCacheFactory
jcs.auxiliary.RC.attributes=org.apache.commons.jcs3.auxiliary.remote.RemoteCacheAttributes
jcs.auxiliary.RC.attributes.FailoverServers=localhost:1101,localhost:1102
jcs.auxiliary.RC.attributes.LocalPort=1201
jcs.auxiliary.RC.attributes.RemoveUponRemotePut=false
jcs.auxiliary.RC.attributes.RmiSocketFactoryTimeoutMillis=5000
jcs.auxiliary.RC.attributes.GetOnly=false
jcs.auxiliary.RC.attributes.Receive=false
        ]]>
				</source>
			</subsection>
		</section>
	</body>
</document>