<?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.jcs.auxiliary.remote.http.client.RemoteCacheFactory
jcs.auxiliary.RC.attributes=org.apache.commons.jcs.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>