blob: 06f614335bca2196e7053f76d39e60d847bb3749 [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<!--
/*
* Copyright 2001-2004 The Apache Software Foundation.
*
* Licensed 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.
*/
-->
<faqs title="Frequently Asked Questions">
<part id="configuration">
<title>Configuration</title>
<faq id="required-jars">
<question>What jars are required by JCS?</question>
<answer>
<p>
As of version 2.0, the core of JCS (the LRU
memory cache, the indexed disk cache, the TCP
lateral, and the RMI remote server) only
requires commons-logging.
</p>
<p>
All of the other dependencies listed on the project
info page are for optional plugins.
</p>
</answer>
</faq>
<faq id="configuration-file">
<question>How do I configure JCS?</question>
<answer>
<p>
By default JCS looks for a cache.ccf file in the
classpath. The documentation describes
how to configure the cache.
</p>
</answer>
</faq>
<faq id="manual-configuration">
<question>
How can I configure JCS with my own properties?
</question>
<answer>
<p>
You don't have to put the cache.ccf file in the
classpath; instead you can do the following:
</p>
<code>
Properties props = new Properties();
props.load(/* load properties from some location
defined by your app */);
JCS.setConfigProperties(props);
</code>
</answer>
</faq>
<faq id="configuration-system-properties">
<question>
Can JCS use system properties during configuration?
</question>
<answer>
<p>
Yes. JCS will look for a system property for any
name inside the delimiters ${}. Also, JCS will check
to see if any property key in the cache.ccf is
defined in the system properties. If so, the system
value will be used.
</p>
</answer>
</faq>
</part>
<part id="general-questions">
<title>General Questions</title>
<faq id="jcs-vs-ehcache">
<question>Is JCS faster than EHCache?</question>
<answer>
<p>
Yes. JCS is almost twice as fast as EHCache. JCS
1.2.7.0, using the default LRU Memory Cache, has
proven to be nearly twice as fast as EHCache
1.2-beta4 at gets and puts. The EHCache benchmark
data is unsubstantiated and very old. As such the
EHCache site benchmark data is completely
inaccurate.
<a href="JCSvsEHCache.html">Read More</a>
</p>
</answer>
</faq>
<faq id="admin-jsp">
<question>Where can I get the admin jsp?</question>
<answer>
<p>
You can download the admin jsp
<a
href="http://svn.apache.org/viewvc/commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/admin/JCSAdmin.jsp?view=log">
here
</a>
.
</p>
</answer>
</faq>
<faq id="source-code">
<question>Where can I get the source?</question>
<answer>
<p>
You can view the source
<a
href="http://svn.apache.org/viewcvs.cgi/commons/proper/jcs/trunk/">
here
</a>
or get the source code from subversion with <code>svn co
http://svn.apache.org/repos/asf/commons/proper/jcs/trunk</code>.
The tagged releases are available with <code>svn co.</code> ex.
https://svn.apache.org/repos/asf/commons/proper/jcs/tags/commons-jcs-2.0
</p>
</answer>
</faq>
<faq id="compiling-source">
<question>How do I compile the source?</question>
<answer>
<p>
You first need to install
<a href="http://maven.apache.org/">Maven 2</a>
The download is available at
http://maven.apache.org/download.html.
After installing run
"mvn test" which compiles and tests the entire package.
To build a jar run "mvn install".
</p>
</answer>
</faq>
</part>
<part id="elements">
<title>Elements</title>
<faq id="element-attributes">
<question>How do I set the element attributes?</question>
<answer>
<p>
Every element put into the cache has its own set of
attributes. By default elements are given a copy of
the default element attributes associated with a
region. You can also specify the attributes to use
for an element when you put it in the cache. See
<a href="ElementAttributes.html">
Element Attributes
</a>
for more information on the attributes that are
available.
</p>
</answer>
</faq>
<faq id="element-events">
<question>How do I register an element event?</question>
<answer>
<p>
Element event handlers must be added to the element
attributes. See
<a href="ElementEventHandling.html">
Element Event Handling
</a>
for more information on how to handle element
events.
</p>
</answer>
</faq>
<faq id="hierarchical-removal">
<question>
Can I remove all items beginning with part of a key?
</question>
<answer>
<p>
Yes, but it is somewhat expensive, since some of the
auxiliaries will have to iterate over their keysets.
Although all the auxiliaries honor this, it is not
part of the auxiliary API. There is no method along
the lines of "removeStartingWith", but all the remove
methods can do it.
</p>
<p>
By default, the hierarchical key delimiter used in
JCS is a colon. You cannot add a String key that
ends with a colon. If you call remove with a String
key that ends in a colon, everything that has a key
that starts with the argument will be removed.
</p>
<p>If your keys are in this format</p>
<p>TYPE:SOURCE:OBJECT</p>
<p>
And you put n objects int he cache with keys like
this
</p>
<p>"ABC:123:0" to "ABC:123:n"</p>
<p>then you could remove all the obejcts by calling</p>
<p>jcs.remove( "ABC:123:" );</p>
</answer>
</faq>
</part>
<part id="indexed-disk-cache">
<title>Indexed Disk Cache</title>
<faq id="thread-pool">
<question>
How do I limit the number of threads used by the disk
cache?
</question>
<answer>
<p>
The indexed disk cache uses an event queue for each
region. By default these queues are worked by their
own dedicated threads. Hence, you will have one
thread per disk cache region. Although the queues
kill off idle threads, you may want to limit the
overall number of threads used by the queues. You
can do this by telling the disk cache to use a
thread pool. The configuration is described
<a href="IndexedDiskAuxCache.html">
on the disk cache configuration page
</a>
.
</p>
</answer>
</faq>
</part>
<part id="remote-cache-server">
<title>Remote Cache Server</title>
<faq id="classes">
<question>
Do I need to put my jars in the classpath of the remote
server?
</question>
<answer>
<p>
No. The remote server never deserializes your
classes.
</p>
</answer>
</faq>
</part>
</faqs>