Commits

Anonymous committed 2fca8fc

OSCache 2.3 WIKI docs added
Submitted by: Lars Torunski

Comments (0)

Files changed (48)

docs/wiki/API Usage.html

 			    <td valign="top" class="pagebody">
 				    <p>Beside the <a href="JSP Tags.html" title="JSP Tags">JSP tag library</a> and the <a href="CacheFilter.html" title="CacheFilter">CacheFilter</a> you can use OSCache through its straightforward API. E.g.   you can use the <a href="http://www.opensymphony.com/oscache/api/com/opensymphony/oscache/general/GeneralCacheAdministrator.html" title="Visit page outside Confluence">GeneralCacheAdministrator</a> to create, flush and administrate the cache.</p>
 
-<h4><a name="APIUsage-Typicalusewithfailover">Typical use with fail over</a></h4>
+<h4><a name="APIUsage-Typicalusewithfailover"></a>Typical use with fail over</h4>
 
 <div class="code"><div class="codeContent">
 <pre class="code-java"><span class="code-object">String</span> myKey = <span class="code-quote">"myKey"</span>;
 }</pre>
 </div></div>
 
-<h4><a name="APIUsage-Typicalusewithoutfailover">Typical use without fail over</a></h4>
+<h4><a name="APIUsage-Typicalusewithoutfailover"></a>Typical use without fail over</h4>
 
 <div class="code"><div class="codeContent">
 <pre class="code-java"><span class="code-object">String</span> myKey = <span class="code-quote">"myKey"</span>;

docs/wiki/CVS and Compiling OSCache.html

 	    <table class="pagecontent" border="0" cellpadding="0" cellspacing="0" width="100%" bgcolor="#ffffff">
 		    <tr>
 			    <td valign="top" class="pagebody">
-				    <h3><a name="CVSandCompilingOSCache-CVS">CVS</a></h3>
+				    <h3><a name="CVSandCompilingOSCache-CVS"></a>CVS</h3>
 
 <p>The OSCache CVS repository is hosted by <a href="http://www.java.net/" title="Visit page outside Confluence">java.net</a>.</p>
 
 
 <p>You you want to build OSCache from CVS, you have to checkout the project <a href="https://opensymphony.dev.java.net/servlets/ProjectSource" title="Visit page outside Confluence">OpenSymphony</a> also.</p>
 
-<h3><a name="CVSandCompilingOSCache-CompilingOSCache">Compiling OSCache</a></h3>
+<h3><a name="CVSandCompilingOSCache-CompilingOSCache"></a>Compiling OSCache</h3>
 
 <p>Run <tt>build.xml</tt> with <a href="http://ant.apache.org/" title="Visit page outside Confluence">Ant</a> 1.6.5 (or higher) under Java 1.4 or later. From the OSCache directory, type</p>
 

docs/wiki/CacheFilter Tutorial.html

 	    <table class="pagecontent" border="0" cellpadding="0" cellspacing="0" width="100%" bgcolor="#ffffff">
 		    <tr>
 			    <td valign="top" class="pagebody">
-				    <h3><a name="CacheFilterTutorial-Introduction">Introduction </a></h3>
+				    <h3><a name="CacheFilterTutorial-Introduction"></a>Introduction </h3>
 
 <p><b>OSCache</b> comes with a servlet filter that enables you to transparently cache entire pages of your website, and even binary files. Caching of binary files is extremely useful when they are generated dynamically, e.g. PDF files or images. In addition by using the last modified header the transaction overhead and server load is reduced excellently which speed ups the server response time.</p>
 
 </ul>
 
 
-<h3><a name="CacheFilterTutorial-CacheableContent">Cacheable Content</a></h3>
+<h3><a name="CacheFilterTutorial-CacheableContent"></a>Cacheable Content</h3>
 
-<div class="information-block" align='center'><div class='informationMacroPadding'><table cellpadding='5' width='85%' cellspacing='0' class='noteMacro' border='0'><tr><td width='16' valign='top'><img src="/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td><b class="strong">Cacheable content</b><br />
-<p>Note that the filter will only cache content that has a status of 200 (HttpServletResponse.SC_OK).</p></td></tr></table></div></div>
+<table cellpadding='5' width='85%' cellspacing='8px' class='noteMacro' border="0" align='center'><colgroup><col width='24'><col></colgroup><tr><td valign='top'><img src="/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td><b class="strong">Cacheable content</b><br />
+<p>Note that the filter will only cache content that has a status of 200 (HttpServletResponse.SC_OK).</p></td></tr></table>
 
-<h3><a name="CacheFilterTutorial-Configuringthefilter">Configuring the filter</a></h3>
+<h3><a name="CacheFilterTutorial-Configuringthefilter"></a>Configuring the filter</h3>
 
-<h4><a name="CacheFilterTutorial-Example1">Example 1</a></h4>
+<h4><a name="CacheFilterTutorial-Example1"></a>Example 1</h4>
 
 <p>To configure the filter, add something like the following to your <tt>web.xml</tt> file (obviously you will want to set the URL pattern to match only the content you want to cache; this example will cache all JSP pages for 10 minutes in session scope):</p>
 
 
 <p>The default duration is one hour and the default scope for the cache is application scope. You can change these settings using <a href="CacheFilter.html" title="CacheFilter">initialization parameters</a>.</p>
 
-<h4><a name="CacheFilterTutorial-Example2">Example 2</a></h4>
+<h4><a name="CacheFilterTutorial-Example2"></a>Example 2</h4>
 
 <p>The initialization of the last modified header based on the current time reduces transaction overhead and server load, because the browser can ask the server if the cached content in the browser cache was changed on the server since the last request. If the content wasn't changed , the server will response with the status 304 (not modified).</p>
 

docs/wiki/CacheFilter.html

 
 <p>A <a href="CacheFilter Tutorial.html" title="CacheFilter Tutorial">tutorial</a> describes how to cache entire pages of your website and what performance improvements can be done with the CacheFilter.</p>
 
-<h4><a name="CacheFilter-CacheableContent">Cacheable Content</a></h4>
+<h4><a name="CacheFilter-CacheableContent"></a>Cacheable Content</h4>
+<table cellpadding='5' width='85%' cellspacing='8px' class='noteMacro' border="0" align='center'><colgroup><col width='24'><col></colgroup><tr><td valign='top'><img src="/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td><b class="strong">Cacheable content</b><br /><br/>
+Note that the filter will only cache content that has a status of 200 (HttpServletResponse.SC_OK).</td></tr></table>
 
-<div class="information-block" align='center'><div class='informationMacroPadding'><table cellpadding='5' width='85%' cellspacing='0' class='noteMacro' border='0'><tr><td width='16' valign='top'><img src="/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td><b class="strong">Cacheable content</b><br />
-<p>Note that the filter will only cache content that has a status of 200 (HttpServletResponse.SC_OK).</p></td></tr></table></div></div>
+<h3><a name="CacheFilter-Configuringthefilter"></a>Configuring the filter</h3>
 
-<h3><a name="CacheFilter-Configuringthefilter">Configuring the filter</a></h3>
-
-<p>To configure the filter, add something like the following to your <tt>web.xml</tt> file (obviously you will want to set the URL pattern to match only the content you want to cache; this example will cache all JSP pages for 10 minutes in session scope):</p>
+<p>To configure the filter, use the <tt>oscache.properties</tt> to <a href="Configuration.html" title="Configuration">configure</a> the core settings of OSCache and add something like the following to your <tt>web.xml</tt> file:</p>
 
 <div class="code"><div class="codeContent">
 <pre class="code-xml"><span class="code-tag">&lt;filter&gt;</span>
     <span class="code-tag">&lt;url-pattern&gt;</span>*.jsp<span class="code-tag">&lt;/url-pattern&gt;</span>
 <span class="code-tag">&lt;/filter-mapping&gt;</span></pre>
 </div></div>
-<p>The default duration is one hour and the default scope for the cache is application scope. You can change these settings using initialization parameters. </p>
+<p>Obviously you will want to set the URL pattern to match only the content you want to cache; this example will cache all JSP pages for 10 minutes in session scope.</p>
 
-<h4><a name="CacheFilter-Parameter%3Atime"><a name="CacheFilter-time"></a>Parameter: time</a></h4>
+<p>The default duration is one hour and the default scope for the cache is application scope. You can change these special CacheFilter settings using the following initialization parameters.</p>
+
+<h4><a name="CacheFilter-Parameter%3Atime"></a><a name="CacheFilter-time"></a>Parameter: time</h4>
 
 <p>The time parameter sets the cache time (in seconds) for the content. The default cache time is one hour.</p>
 
-<p>Specifying <em>-1</em> (indefinite expiry) as the cache time will ensure a content does not become stale until it is either explicitly flushed or the expires refresh policy causes the entry to expire.</p>
+<p>Specifying <em>&#45;1</em> (indefinite expiry) as the cache time will ensure a content does not become stale until it is either explicitly flushed or the expires refresh policy causes the entry to expire.</p>
 
-<h4><a name="CacheFilter-Parameter%3Ascope"><a name="CacheFilter-scope"></a>Parameter: scope</a></h4>
+<h4><a name="CacheFilter-Parameter%3Ascope"></a><a name="CacheFilter-scope"></a>Parameter: scope</h4>
 
 <p>The scope parameter lets you set the scope to cache content in. Valid values for the scope are <em>application</em> (default) and <em>session</em>.</p>
 
-<h4><a name="CacheFilter-Parameter%3Acron%28Newinupcomingrelease2.3%29"><a name="CacheFilter-cron"></a>Parameter: cron (New in upcoming release 2.3)</a></h4>
+<h4><a name="CacheFilter-Parameter%3Acron%28Newinupcomingrelease2.3%29"></a><a name="CacheFilter-cron"></a>Parameter: cron (New in upcoming release 2.3)</h4>
 
 <p>A cron expression that determines when the page content will expire. This allows content to be expired at particular dates and/or times, rather than once a cache entry reaches a certain age. See <a href="Cron Expressions.html" title="Cron Expressions">Cron Expressions</a> to read more about this attribute. Please consider that the (default) time value is still evaluated, hence the time value should be set to indefinite expiry.</p>
 
-<h4><a name="CacheFilter-Parameter%3Afragment%28NEW%21Since2.2%29"><a name="CacheFilter-fragment"></a>Parameter: fragment (NEW! Since 2.2)</a></h4>
+<h4><a name="CacheFilter-Parameter%3Afragment%28NEW%5C%21Since2.2%29"></a><a name="CacheFilter-fragment"></a>Parameter: fragment (NEW&#33; Since 2.2)</h4>
 
 <p>Defines if the filter handles fragments of a page. Acceptable values are <em>auto</em> for auto detect, <em>no</em> for false and <em>yes</em> for true. The default value is auto detect which checks the <em>javax.servlet.include.request_uri</em> request attribute. Fragments of a page shouldn't be gzipped or evaluate the last modified header.</p>
 
-<h4><a name="CacheFilter-Parameter%3Anocache%28NEW%21Since2.2%29"><a name="CacheFilter-nocache"></a>Parameter: nocache (NEW! Since 2.2)</a></h4>
+<h4><a name="CacheFilter-Parameter%3Anocache%28NEW%5C%21Since2.2%29"></a><a name="CacheFilter-nocache"></a>Parameter: nocache (NEW&#33; Since 2.2)</h4>
 
 <p>Defines which objects shouldn't be cached. Acceptable values are <em>off</em> (default) for caching all objects and <em>sessionIdInURL</em> for don't cache page if the session id is contained in the URL.</p>
 
-<h4><a name="CacheFilter-Parameter%3AlastModified%28NEW%21Since2.2%29"><a name="CacheFilter-lastModified"></a>Parameter: lastModified (NEW! Since 2.2)</a></h4>
+<h4><a name="CacheFilter-Parameter%3AlastModified%28NEW%5C%21Since2.2%29"></a><a name="CacheFilter-lastModified"></a>Parameter: lastModified (NEW&#33; Since 2.2)</h4>
 
 <p>Defines if the last modified header will be sent in the response. Acceptable values are <em>off</em> for don't sending the header, even it is set in the filter chain, <em>on</em> for sending it if it is set in the filter chain and <em>initial</em> (default) the last modified information will be set based on current time.</p>
 
-<h4><a name="CacheFilter-Parameter%3Aexpires%28NEW%21Since2.2%29"><a name="CacheFilter-expires"></a>Parameter: expires (NEW! Since 2.2)</a></h4>
+<h4><a name="CacheFilter-Parameter%3Aexpires%28NEW%5C%21Since2.2%29"></a><a name="CacheFilter-expires"></a>Parameter: expires (NEW&#33; Since 2.2)</h4>
 
-<p>Defines if the expires header will be sent in the response. Acceptable values are <em>off</em> for don't sending the header, even it is set in the filter chain, <em>on</em> (default) for sending it if it is set in the filter chain and <em>time</em> the expires information will be intialized based on the time parameter and creation time of the content.</p>
+<p>Defines if the expires header will be sent in the response. Acceptable values are <em>off</em> for don't sending the header, even it is set in the filter chain, <em>on</em> (default) for sending it if it is set in the filter chain and <em>time</em> the expires information will be intialized based on the time parameter and creation time of the content.<table cellpadding='5' width='85%' cellspacing='8px' class='noteMacro' border="0" align='center'><colgroup><col width='24'><col></colgroup><tr><td valign='top'><img src="/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td><b class="strong">Value time</b><br /><br/>
+The last parameter time would force the CacheFilter to send the expires header, because the value is set always. The developer must consider that some browsers evaluate the value and will use the cached content in the browsers cache, until the content is expired. Consequently a flush of the cache in the web application won't update a page in the browser cache. Hence different users may see see a different status of page.</td></tr></table></p>
 
-<div class="information-block" align='center'><div class='informationMacroPadding'><table cellpadding='5' width='85%' cellspacing='0' class='noteMacro' border='0'><tr><td width='16' valign='top'><img src="/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td><b class="strong">Value time</b><br />
-<p>The last parameter time would force the CacheFilter to send the expires header, because the value is set always. The developer must consider that some browsers evaluate the value and will use the cached content in the browsers cache, until the content is expired. Consequently a flush of the cache in the web application won't update a page in the browser cache. Hence different users may see see a different status of page.</p></td></tr></table></div></div>
-
-<h4><a name="CacheFilter-Parameter%3AICacheKeyProvider%28NEW%21Since2.2%29"><a name="CacheFilter-ICacheKeyProvider"></a>Parameter: ICacheKeyProvider (NEW! Since 2.2)</a></h4>
+<h4><a name="CacheFilter-Parameter%3AICacheKeyProvider%28NEW%5C%21Since2.2%29"></a><a name="CacheFilter-ICacheKeyProvider"></a>Parameter: ICacheKeyProvider (NEW&#33; Since 2.2)</h4>
 
 <p>Specify a class which implements the interface <tt>ICacheKeyProvider</tt>. A developer can implement a class which provides cache keys based on the request, the servlect cache administrator and the cache.</p>
 
-<h4><a name="CacheFilter-Parameter%3AICacheGroupsProvider%28NEW%21Since2.2%29"><a name="CacheFilter-ICacheGroupsProvider"></a>Parameter: ICacheGroupsProvider (NEW! Since 2.2)</a></h4>
+<h4><a name="CacheFilter-Parameter%3AICacheGroupsProvider%28NEW%5C%21Since2.2%29"></a><a name="CacheFilter-ICacheGroupsProvider"></a>Parameter: ICacheGroupsProvider (NEW&#33; Since 2.2)</h4>
 
 <p>Specify a class which implements the interface <tt>ICacheGroupsProvider</tt>. A developer can implement a class which provides cache groups based on the request, the servlect cache administrator and the cache.</p>
 
+<h4><a name="CacheFilter-Parameter%3AEntryRefreshPolicy%28New%5C%21Since2.3%29"></a><a name="CacheFilter-EntryRefreshPolicy"></a>Parameter: EntryRefreshPolicy (New&#33; Since 2.3)</h4>
+
+<p>Specify a class which implements the interface <tt>EntryRefreshPolicy</tt>. A developer can implement a class which provides a different custom cache invalidation policy for a specific cache entry. If not specified, the default policy is timed entry expiry as specified with the <em>time</em> parameter described above. </p>
+
                     			    </td>
 		    </tr>
 	    </table>

docs/wiki/Change Log.html

 	    <table class="pagecontent" border="0" cellpadding="0" cellspacing="0" width="100%" bgcolor="#ffffff">
 		    <tr>
 			    <td valign="top" class="pagebody">
-				    <h3><a name="ChangeLog-ReleaseNotes">Release Notes</a></h3>
+				    <h3><a name="ChangeLog-ReleaseNotes"></a>Release Notes</h3>
 <ul>
+	<li>2006
+	<ul>
+		<li><a href="OSCache 2.3.html" title="OSCache 2.3">OSCache 2.3</a></li>
+	</ul>
+	</li>
 	<li>2005
 	<ul>
 		<li><a href="OSCache 2.2.html" title="OSCache 2.2">OSCache 2.2</a></li>

docs/wiki/Clustering.html

 
 <p>Configuring OSCache to cluster is very simple. Follow either the JMS or the JavaGroups instructions below depending on which protocol you want to use.</p>
 
-<h3><a name="Clustering-JMSConfiguration">JMS Configuration</a></h3>
+<h3><a name="Clustering-JMSConfiguration"></a>JMS Configuration</h3>
 
 <p>Configure your JMS server. OSCache requires that a JMS ConnectionFactory and a Topic are available via JNDI. See your JMS server's documentation for details.</p>
 
 </pre>
 </div></div>
 
-<p>(Note that this listener requires JMS 1.1 or higher, however legacy support for 1.0.x is also provided. If your JMS server only supports JMS 1.0.x then use JMS10BroadcastingListener instead of JMSBroadcastingListener. The rest of this documentation applies equally to both the 1.1 and 1.0 listeners.)</p>
+<p>(Note that this listener requires JMS 1.1 or higher, however legacy support for 1.0.x is also provided. If your JMS server only supports JMS 1.0.x then use <tt>JMS10BroadcastingListener</tt> instead of <tt>JMSBroadcastingListener</tt>. The rest of this documentation applies equally to both the 1.1 and 1.0 listeners.)</p>
 
 <p>The JMS listener supports the following configuration parameters:</p>
 
 
 <p>If you are running OSCache from a standalone application or are not running in an environment where new InitialContext() will find your JNDI InitialContextFactory or provider URL, you will have to specify them either in a jndi.properties file or as system properties. See the InitalContext documentation for details.</p>
 
-<h3><a name="Clustering-JavaGroupsConfiguration">JavaGroups Configuration</a></h3>
+<h3><a name="Clustering-JavaGroupsConfiguration"></a>JavaGroups Configuration</h3>
 
 <p>Just make sure you have jgroups-all.jar file in your classpath (for a webapp put it in WEB-INF/lib), and add the JavaGroups broadcasting listener to your oscache.properties file like this:</p>
 

docs/wiki/Complete Change Log.html

 	    <table class="pagecontent" border="0" cellpadding="0" cellspacing="0" width="100%" bgcolor="#ffffff">
 		    <tr>
 			    <td valign="top" class="pagebody">
-				    <h2><a name="CompleteChangeLog-OSCache2.2Final">OSCache 2.2 Final</a></h2>
-<h3><a name="OSCache2.2-ReleaseNotesFinal">Release Notes - Final</a></h3>
+				    <h2><a name="CompleteChangeLog-OSCache2.3"></a>OSCache 2.3</h2>
+<h3><a name="CompleteChangeLog-ReleaseNotes"></a>Release Notes</h3>
+
+<p>(6th March 2006 - by Lars Torunski)</p>
+
+<h4><a name="CompleteChangeLog-ThisreleaseincludesadditionalimprovementstotheCacheFilter%3A"></a>This release includes additional improvements to the CacheFilter:</h4>
+
+<ul>
+	<li>CRON expressions to expire content at specific dates and/or times</li>
+	<li>Pluggable EntryRefreshPolicy</li>
+	<li>Reduced memory consumption</li>
+</ul>
+
+
+<h4><a name="CompleteChangeLog-Diskpersistence%3A"></a>Disk persistence:</h4>
+
+<ul>
+	<li>Faster disk persistence</li>
+	<li>Avoid DiskPersistenceListener deadlocks if process has no rights to delete cache file</li>
+</ul>
+
+
+<h4><a name="CompleteChangeLog-Furtherchangesare%3A"></a>Further changes are:</h4>
+
+<ul>
+	<li>new JSP tag <em>addgroups</em></li>
+	<li>interface to get a list of the cache event listeners</li>
+	<li>commons collection dependency removed</li>
+	<li>Java 1.3 support dropped</li>
+</ul>
+
+
+<h4><a name="CompleteChangeLog-JIRAIssueList"></a>JIRA Issue List</h4>
+
+<p><a name="jiraissues">
+    <table  width="100%" cellspacing="0" class="grid">
+        <tr>
+            <th colspan="4" style="text-align: left;">
+                                    <a href="/spaces/doexportspace.action?key=CACHE&macro.refresh=true#jiraissues"><img src="/images/icons/refresh_16.png" height="16" width="16" border="0" align="right" title="refresh"/></a>
+                                <a href="http://jira.opensymphony.com/secure/IssueNavigator.jspa?&pid=10001&fixfor=21570&sorter/field=issuekey&sorter/order=DESC&tempMax=25&reset=true&">OpenSymphony JIRA</a>
+                <span class="smalltext">(14 issues)</span>
+            </th>
+        </tr>
+        <tr>
+                        <th style="text-align: left;">
+                T                                                                                                                                                                            </th>
+                        <th style="text-align: left;">
+                                Key                                                                                                                                                            </th>
+                        <th style="text-align: left;">
+                                                Summary                                                                                                                                            </th>
+                        <th style="text-align: left;">
+                                                                                                                Status                                                                            </th>
+                    </tr>
+                                            <tr class="rowNormal">
+                                                            <td nowrap="true">
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-235"><img src="http://jira.opensymphony.com/images/icons/improvement.gif" alt="Improvement" border="0" /></a>
+                                    </td>
+                                <td nowrap="true">
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-235">CACHE-235</a>
+                                    </td>
+                                <td >
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-235">Pluggable EntryRefreshPolicy for CacheFilter</a>
+                                    </td>
+                                <td nowrap="true">
+                                            <img src="http://jira.opensymphony.com/images/icons/status_closed.gif" alt="Closed" border="0" />Closed
+                                    </td>
+                            </tr>
+                                    <tr class="rowAlternate">
+                                                            <td nowrap="true">
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-230"><img src="http://jira.opensymphony.com/images/icons/task.gif" alt="Task" border="0" /></a>
+                                    </td>
+                                <td nowrap="true">
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-230">CACHE-230</a>
+                                    </td>
+                                <td >
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-230">CacheFilter Tutorial</a>
+                                    </td>
+                                <td nowrap="true">
+                                            <img src="http://jira.opensymphony.com/images/icons/status_closed.gif" alt="Closed" border="0" />Closed
+                                    </td>
+                            </tr>
+                                    <tr class="rowNormal">
+                                                            <td nowrap="true">
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-229"><img src="http://jira.opensymphony.com/images/icons/bug.gif" alt="Bug" border="0" /></a>
+                                    </td>
+                                <td nowrap="true">
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-229">CACHE-229</a>
+                                    </td>
+                                <td >
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-229">Tomcat 5.5.12 throws IllegalStateException on getId() / fixed Servlet Spec 2.4</a>
+                                    </td>
+                                <td nowrap="true">
+                                            <img src="http://jira.opensymphony.com/images/icons/status_closed.gif" alt="Closed" border="0" />Closed
+                                    </td>
+                            </tr>
+                                    <tr class="rowAlternate">
+                                                            <td nowrap="true">
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-228"><img src="http://jira.opensymphony.com/images/icons/newfeature.gif" alt="New Feature" border="0" /></a>
+                                    </td>
+                                <td nowrap="true">
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-228">CACHE-228</a>
+                                    </td>
+                                <td >
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-228">Add CRON expressions to CacheFilter to expire content at specific dates and/or times.</a>
+                                    </td>
+                                <td nowrap="true">
+                                            <img src="http://jira.opensymphony.com/images/icons/status_closed.gif" alt="Closed" border="0" />Closed
+                                    </td>
+                            </tr>
+                                    <tr class="rowNormal">
+                                                            <td nowrap="true">
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-227"><img src="http://jira.opensymphony.com/images/icons/task.gif" alt="Task" border="0" /></a>
+                                    </td>
+                                <td nowrap="true">
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-227">CACHE-227</a>
+                                    </td>
+                                <td >
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-227">Remove commons collections from distribution</a>
+                                    </td>
+                                <td nowrap="true">
+                                            <img src="http://jira.opensymphony.com/images/icons/status_closed.gif" alt="Closed" border="0" />Closed
+                                    </td>
+                            </tr>
+                                    <tr class="rowAlternate">
+                                                            <td nowrap="true">
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-226"><img src="http://jira.opensymphony.com/images/icons/task.gif" alt="Task" border="0" /></a>
+                                    </td>
+                                <td nowrap="true">
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-226">CACHE-226</a>
+                                    </td>
+                                <td >
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-226">Drop Java 1.3 support</a>
+                                    </td>
+                                <td nowrap="true">
+                                            <img src="http://jira.opensymphony.com/images/icons/status_closed.gif" alt="Closed" border="0" />Closed
+                                    </td>
+                            </tr>
+                                    <tr class="rowNormal">
+                                                            <td nowrap="true">
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-222"><img src="http://jira.opensymphony.com/images/icons/newfeature.gif" alt="New Feature" border="0" /></a>
+                                    </td>
+                                <td nowrap="true">
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-222">CACHE-222</a>
+                                    </td>
+                                <td >
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-222">Add new JSP tag addGroups</a>
+                                    </td>
+                                <td nowrap="true">
+                                            <img src="http://jira.opensymphony.com/images/icons/status_closed.gif" alt="Closed" border="0" />Closed
+                                    </td>
+                            </tr>
+                                    <tr class="rowAlternate">
+                                                            <td nowrap="true">
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-217"><img src="http://jira.opensymphony.com/images/icons/improvement.gif" alt="Improvement" border="0" /></a>
+                                    </td>
+                                <td nowrap="true">
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-217">CACHE-217</a>
+                                    </td>
+                                <td >
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-217">Avoid DiskPersistenceListener deadlocks if process has no rights to delete cache file</a>
+                                    </td>
+                                <td nowrap="true">
+                                            <img src="http://jira.opensymphony.com/images/icons/status_closed.gif" alt="Closed" border="0" />Closed
+                                    </td>
+                            </tr>
+                                    <tr class="rowNormal">
+                                                            <td nowrap="true">
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-216"><img src="http://jira.opensymphony.com/images/icons/task.gif" alt="Task" border="0" /></a>
+                                    </td>
+                                <td nowrap="true">
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-216">CACHE-216</a>
+                                    </td>
+                                <td >
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-216">Review CacheFilter against Servlet 2.4 spec.</a>
+                                    </td>
+                                <td nowrap="true">
+                                            <img src="http://jira.opensymphony.com/images/icons/status_closed.gif" alt="Closed" border="0" />Closed
+                                    </td>
+                            </tr>
+                                    <tr class="rowAlternate">
+                                                            <td nowrap="true">
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-214"><img src="http://jira.opensymphony.com/images/icons/improvement.gif" alt="Improvement" border="0" /></a>
+                                    </td>
+                                <td nowrap="true">
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-214">CACHE-214</a>
+                                    </td>
+                                <td >
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-214">Reduce memory consumption of ResponseContent</a>
+                                    </td>
+                                <td nowrap="true">
+                                            <img src="http://jira.opensymphony.com/images/icons/status_closed.gif" alt="Closed" border="0" />Closed
+                                    </td>
+                            </tr>
+                                    <tr class="rowNormal">
+                                                            <td nowrap="true">
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-200"><img src="http://jira.opensymphony.com/images/icons/newfeature.gif" alt="New Feature" border="0" /></a>
+                                    </td>
+                                <td nowrap="true">
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-200">CACHE-200</a>
+                                    </td>
+                                <td >
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-200">add 'getCacheEventListenerList()' to Cache class</a>
+                                    </td>
+                                <td nowrap="true">
+                                            <img src="http://jira.opensymphony.com/images/icons/status_closed.gif" alt="Closed" border="0" />Closed
+                                    </td>
+                            </tr>
+                                    <tr class="rowAlternate">
+                                                            <td nowrap="true">
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-197"><img src="http://jira.opensymphony.com/images/icons/improvement.gif" alt="Improvement" border="0" /></a>
+                                    </td>
+                                <td nowrap="true">
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-197">CACHE-197</a>
+                                    </td>
+                                <td >
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-197">Speed up disk persistence</a>
+                                    </td>
+                                <td nowrap="true">
+                                            <img src="http://jira.opensymphony.com/images/icons/status_closed.gif" alt="Closed" border="0" />Closed
+                                    </td>
+                            </tr>
+                                    <tr class="rowNormal">
+                                                            <td nowrap="true">
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-183"><img src="http://jira.opensymphony.com/images/icons/bug.gif" alt="Bug" border="0" /></a>
+                                    </td>
+                                <td nowrap="true">
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-183">CACHE-183</a>
+                                    </td>
+                                <td >
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-183">HashDiskPersistenceListener / MessageDigest not thread safe</a>
+                                    </td>
+                                <td nowrap="true">
+                                            <img src="http://jira.opensymphony.com/images/icons/status_closed.gif" alt="Closed" border="0" />Closed
+                                    </td>
+                            </tr>
+                                    <tr class="rowAlternate">
+                                                            <td nowrap="true">
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-136"><img src="http://jira.opensymphony.com/images/icons/task.gif" alt="Task" border="0" /></a>
+                                    </td>
+                                <td nowrap="true">
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-136">CACHE-136</a>
+                                    </td>
+                                <td >
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-136">SequencedHashMap is deprecated in commons collections 3.1</a>
+                                    </td>
+                                <td nowrap="true">
+                                            <img src="http://jira.opensymphony.com/images/icons/status_closed.gif" alt="Closed" border="0" />Closed
+                                    </td>
+                            </tr>
+            </table>
+</p>
+
+
+<h2><a name="CompleteChangeLog-OSCache2.2Final"></a>OSCache 2.2 Final</h2>
+<h3><a name="CompleteChangeLog-ReleaseNotesFinal"></a>Release Notes - Final</h3>
 
 <p>(6th November 2005 - by Lars Torunski)</p>
 
-<h4><a name="OSCache2.2-Additionallytothe2.2RCOSCache2.2RCimprovements%2Cthefinalreleasewasenhancedby%3A">Additionally to the <a href="OSCache 2.2 RC.html" title="OSCache 2.2 RC">2.2 RC</a> improvements, the final release was enhanced by:</a></h4>
+<h4><a name="CompleteChangeLog-Additionallytothe2.2RCOSCache2.2RCimprovements%2Cthefinalreleasewasenhancedby%3A"></a>Additionally to the <a href="OSCache 2.2 RC.html" title="OSCache 2.2 RC">2.2 RC</a> improvements, the final release was enhanced by:</h4>
 
 <ul>
 	<li>Allow cache group definition in CacheFilter</li>
 </ul>
 
 
-<h4><a name="OSCache2.2-JIRAIssueList">JIRA Issue List</a></h4>
+<h4><a name="CompleteChangeLog-JIRAIssueList"></a>JIRA Issue List</h4>
 
-<p>
+<p><a name="jiraissues">
     <table  width="100%" cellspacing="0" class="grid">
         <tr>
             <th colspan="4" style="text-align: left;">
-                <a href="http://jira.opensymphony.com/secure/IssueNavigator.jspa?&pid=10001&fixfor=21550&sorter/field=issuekey&sorter/order=DESC&tempMax=25&reset=true&">OpenSymphony JIRA</a>
+                                    <a href="/spaces/doexportspace.action?key=CACHE&macro.refresh=true#jiraissues"><img src="/images/icons/refresh_16.png" height="16" width="16" border="0" align="right" title="refresh"/></a>
+                                <a href="http://jira.opensymphony.com/secure/IssueNavigator.jspa?&pid=10001&fixfor=21550&sorter/field=issuekey&sorter/order=DESC&tempMax=25&reset=true&">OpenSymphony JIRA</a>
                 <span class="smalltext">(12 issues)</span>
             </th>
         </tr>
 </p>
 
 
-<h2><a name="CompleteChangeLog-OSCache2.2RC">OSCache 2.2 RC</a></h2>
-<h3><a name="OSCache2.2RC-ReleaseNotesReleaseCandidate">Release Notes - Release Candidate</a></h3>
+<h2><a name="CompleteChangeLog-OSCache2.2RC"></a>OSCache 2.2 RC</h2>
+<h3><a name="CompleteChangeLog-ReleaseNotesReleaseCandidate"></a>Release Notes - Release Candidate</h3>
 
 <p>(18th September 2005 - by Lars Torunski)</p>
 
-<h4><a name="OSCache2.2RC-Besidesbugsbeingfixed%2CmajorimprovementshavebeenmadetotheCacheFilterinmanyways%3A">Besides bugs being fixed, major improvements have been made to the CacheFilter in many ways:</a></h4>
+<h4><a name="CompleteChangeLog-Besidesbugsbeingfixed%2CmajorimprovementshavebeenmadetotheCacheFilterinmanyways%3A"></a>Besides bugs being fixed, major improvements have been made to the CacheFilter in many ways:</h4>
 
 <ul>
 	<li>Default initialization of the last modified header which reduces transaction overhead and server load</li>
 </ul>
 
 
-<h4><a name="OSCache2.2RC-JIRAIssueList">JIRA Issue List</a></h4>
+<h4><a name="CompleteChangeLog-JIRAIssueList"></a>JIRA Issue List</h4>
 
-<p>
+<p><a name="jiraissues">
     <table  width="100%" cellspacing="0" class="grid">
         <tr>
             <th colspan="4" style="text-align: left;">
-                <a href="http://jira.opensymphony.com/secure/IssueNavigator.jspa?&pid=10001&fixfor=21450&sorter/field=issuekey&sorter/order=DESC&tempMax=25&reset=true&">OpenSymphony JIRA</a>
+                                    <a href="/spaces/doexportspace.action?key=CACHE&macro.refresh=true#jiraissues"><img src="/images/icons/refresh_16.png" height="16" width="16" border="0" align="right" title="refresh"/></a>
+                                <a href="http://jira.opensymphony.com/secure/IssueNavigator.jspa?&pid=10001&fixfor=21450&sorter/field=issuekey&sorter/order=DESC&tempMax=25&reset=true&">OpenSymphony JIRA</a>
                 <span class="smalltext">(22 issues)</span>
             </th>
         </tr>
 </p>
 
 
-<h2><a name="CompleteChangeLog-OSCache2.1.1">OSCache 2.1.1</a></h2>
-<h3><a name="OSCache2.1.1-ReleaseNotes">Release Notes</a></h3>
+<h2><a name="CompleteChangeLog-OSCache2.1.1"></a>OSCache 2.1.1</h2>
+<h3><a name="CompleteChangeLog-ReleaseNotes"></a>Release Notes</h3>
 
 <p>(1st May 2005 - by Andres March)</p>
 
-<h4><a name="OSCache2.1.1-Improvements%3A">Improvements:</a></h4>
+<h4><a name="CompleteChangeLog-Improvements%3A"></a>Improvements:</h4>
 
 <ul>
 	<li>The taglib URI was changed to <tt><a href="http://www.opensymphony.com/oscache" title="Visit page outside Confluence">&#104;ttp://www.opensymphony.com/oscache</a></tt> in <a href="http://jira.opensymphony.com/browse/CACHE-61" title="Visit page outside Confluence">CACHE-61</a></li>
 
 
 
-<h4><a name="OSCache2.1.1-BugFixes%3A">Bug Fixes:</a></h4>
+<h4><a name="CompleteChangeLog-BugFixes%3A"></a>Bug Fixes:</h4>
 
 <ul>
 	<li>The CacheFilter doesn't send back a 304 (not modified) response when client cache is de-activated anymore, see <a href="http://jira.opensymphony.com/browse/CACHE-116" title="Visit page outside Confluence">CACHE-116</a></li>
 </ul>
 
 
-<h4><a name="OSCache2.1.1-Changesthatmayaffectbackwardscompatibility%3A">Changes that may affect backwards compatibility:</a></h4>
+<h4><a name="CompleteChangeLog-Changesthatmayaffectbackwardscompatibility%3A"></a>Changes that may affect backwards compatibility:</h4>
 
 <ul>
 	<li>The improvement <a href="http://jira.opensymphony.com/browse/CACHE-88" title="Visit page outside Confluence">CACHE-88</a> may change the behaviour of the application, because a session object isn't created anymore even if it wasn't necessary. A web application may react different to a not existing session object.</li>
 </ul>
 
 
-<h4><a name="OSCache2.1.1-JIRAIssueList">JIRA Issue List</a></h4>
+<h4><a name="CompleteChangeLog-JIRAIssueList"></a>JIRA Issue List</h4>
 
-<p>
+<p><a name="jiraissues">
     <table  width="100%" cellspacing="0" class="grid">
         <tr>
             <th colspan="4" style="text-align: left;">
-                <a href="http://jira.opensymphony.com/secure/IssueNavigator.jspa?&pid=10001&fixfor=21441&sorter/field=issuekey&sorter/order=DESC&tempMax=25&reset=true&">OpenSymphony JIRA</a>
+                                    <a href="/spaces/doexportspace.action?key=CACHE&macro.refresh=true#jiraissues"><img src="/images/icons/refresh_16.png" height="16" width="16" border="0" align="right" title="refresh"/></a>
+                                <a href="http://jira.opensymphony.com/secure/IssueNavigator.jspa?&pid=10001&fixfor=21441&sorter/field=issuekey&sorter/order=DESC&tempMax=25&reset=true&">OpenSymphony JIRA</a>
                 <span class="smalltext">(15 issues)</span>
             </th>
         </tr>
 </p>
 
 
-<h2><a name="CompleteChangeLog-OSCache2.1">OSCache 2.1</a></h2>
-<h3><a name="OSCache2.1-ReleaseNotes">Release Notes</a></h3>
+<h2><a name="CompleteChangeLog-OSCache2.1"></a>OSCache 2.1</h2>
+<h3><a name="CompleteChangeLog-ReleaseNotes"></a>Release Notes</h3>
 
 <p>(18th January 2005 - by Andres March)</p>
-<h4><a name="OSCache2.1-NewFeatures%3A">New Features:</a></h4>
+<h4><a name="CompleteChangeLog-NewFeatures%3A"></a>New Features:</h4>
 <ul>
 	<li>Added HashDiskPersistenceListner <a href="http://jira.opensymphony.com/browse/CACHE-132" title="Visit page outside Confluence">CACHE-132 </a> that hashes file names in order to eliminate nasty characters and overly long names</li>
 	<li>Added property that allows cache entries to only be persisted when the memory capacity has been exceeded. The property is called: cache.persistence.overflow.only. It defaults to false for backwards compatibility meaning all cache entries are persisted when a listener has been registered. See <a href="http://jira.opensymphony.com/browse/CACHE-133" title="Visit page outside Confluence">CACHE-133 </a></li>
 </ul>
 
 
-<h4><a name="OSCache2.1-Improvements%3A">Improvements:</a></h4>
+<h4><a name="CompleteChangeLog-Improvements%3A"></a>Improvements:</h4>
 
 <ul>
 	<li>Updated jgroups jar regarding changed package name <a href="http://jira.opensymphony.com/browse/CACHE-85" title="Visit page outside Confluence">CACHE-85 </a>, <a href="http://jira.opensymphony.com/browse/CACHE-126" title="Visit page outside Confluence">CACHE-126</a> and configuration based upon recommendations from Bela Ban (javagroups maintainer).</li>
 </ul>
 
 
-<h4><a name="OSCache2.1-BugFixes%3A">Bug Fixes:</a></h4>
+<h4><a name="CompleteChangeLog-BugFixes%3A"></a>Bug Fixes:</h4>
 
 <ul>
 	<li><a href="http://jira.opensymphony.com/browse/CACHE-73" title="Visit page outside Confluence">CACHE-73 </a> - NullpointerException after deserialization of AbstractConcurrentReadCache</li>
 </ul>
 
 
-<p>
+<p><a name="jiraissues">
     <table  width="100%" cellspacing="0" class="grid">
         <tr>
             <th colspan="3" style="text-align: left;">
-                <a href="http://jira.opensymphony.com/secure/IssueNavigator.jspa?&pid=10001&fixfor=21223&sorter/field=issuekey&sorter/order=DESC&tempMax=25&reset=true&">OpenSymphony JIRA</a>
+                                    <a href="/spaces/doexportspace.action?key=CACHE&macro.refresh=true#jiraissues"><img src="/images/icons/refresh_16.png" height="16" width="16" border="0" align="right" title="refresh"/></a>
+                                <a href="http://jira.opensymphony.com/secure/IssueNavigator.jspa?&pid=10001&fixfor=21223&sorter/field=issuekey&sorter/order=DESC&tempMax=25&reset=true&">OpenSymphony JIRA</a>
                 <span class="smalltext">(21 issues)</span>
             </th>
         </tr>
                                             <a href="http://jira.opensymphony.com/browse/CACHE-102">CACHE-102</a>
                                     </td>
                                 <td >
-                                            <a href="http://jira.opensymphony.com/browse/CACHE-102">upgrade to Commons Logging 1.0.4</a>
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-102">upgrade to Commons Logging 1.0.4 </a>
                                     </td>
                             </tr>
                                     <tr class="rowNormal">
                                             <a href="http://jira.opensymphony.com/browse/CACHE-58">CACHE-58</a>
                                     </td>
                                 <td >
-                                            <a href="http://jira.opensymphony.com/browse/CACHE-58">Check If-Modified-Since header in cache filter</a>
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-58"> Check If-Modified-Since header in cache filter</a>
                                     </td>
                             </tr>
             </table>
 </p>
 
 
-<h2><a name="CompleteChangeLog-OSCache2.0.2">OSCache 2.0.2</a></h2>
-<h3><a name="OSCache2.0.2-ReleaseNotes">Release Notes</a></h3>
+<h2><a name="CompleteChangeLog-OSCache2.0.2"></a>OSCache 2.0.2</h2>
+<h3><a name="CompleteChangeLog-ReleaseNotes"></a>Release Notes</h3>
 
 <p>(22nd January 2004 - by Mathias Bogaert)</p>
 
-<h4><a name="OSCache2.0.2-Improvements%3A">Improvements:</a></h4>
+<h4><a name="CompleteChangeLog-Improvements%3A"></a>Improvements:</h4>
 
 <ul>
 	<li>Website documentation updates.</li>
 </ul>
 
 
-<h4><a name="OSCache2.0.2-BugFixes%3A">Bug Fixes:</a></h4>
+<h4><a name="CompleteChangeLog-BugFixes%3A"></a>Bug Fixes:</h4>
 
 <ul>
 	<li><a href="http://jira.opensymphony.com/browse/CACHE-63" title="Visit page outside Confluence">CACHE-63 </a> NullPointerException in GeneralCacheAdministrator#destroy().</li>
 
 
 
-<h2><a name="CompleteChangeLog-OSCache2.0.1">OSCache 2.0.1</a></h2>
-<h3><a name="OSCache2.0.1-ReleaseNotes">Release Notes</a></h3>
+<h2><a name="CompleteChangeLog-OSCache2.0.1"></a>OSCache 2.0.1</h2>
+<h3><a name="CompleteChangeLog-ReleaseNotes"></a>Release Notes</h3>
 
 <p>(4th November 2003 - by Chris Miller)</p>
-<h4><a name="OSCache2.0.1-Improvements%3A">Improvements:</a></h4>
+<h4><a name="CompleteChangeLog-Improvements%3A"></a>Improvements:</h4>
 
 <ul>
 	<li><a href="http://jira.opensymphony.com/browse/CACHE-56" title="Visit page outside Confluence">CACHE-56 </a> Refresh period is no longer mandatory.</li>
 </ul>
 
 
-<h4><a name="OSCache2.0.1-BugFixes%3A">Bug Fixes:</a></h4>
+<h4><a name="CompleteChangeLog-BugFixes%3A"></a>Bug Fixes:</h4>
 
 <ul>
 	<li><a href="http://jira.opensymphony.com/browse/CACHE-59" title="Visit page outside Confluence">CACHE-59 </a> Silent mode could not be reset.</li>
 </ul>
 
 
-<h4><a name="OSCache2.0.1-Changesthatmayaffectbackwardscompatibility%3A">Changes that may affect backwards compatibility:</a></h4>
+<h4><a name="CompleteChangeLog-Changesthatmayaffectbackwardscompatibility%3A"></a>Changes that may affect backwards compatibility:</h4>
 
 <ul>
 	<li>StringUtil.split() now returns a List rather than a String[].</li>
 
 
 
-<h2><a name="CompleteChangeLog-OSCache2.0">OSCache 2.0</a></h2>
-<h3><a name="OSCache2.0-ReleaseNotes">Release Notes</a></h3>
+<h2><a name="CompleteChangeLog-OSCache2.0"></a>OSCache 2.0</h2>
+<h3><a name="CompleteChangeLog-ReleaseNotes"></a>Release Notes</h3>
 
 <p>(22nd September 2003 - by Chris Miller)</p>
-<h4><a name="OSCache2.0-Improvements%3A">Improvements:</a></h4>
+<h4><a name="CompleteChangeLog-Improvements%3A"></a>Improvements:</h4>
 
 <ul>
 	<li>Minor FastCronParser speedup.</li>
 </ul>
 
 
-<h4><a name="OSCache2.0-BugFixes%3A">Bug Fixes:</a></h4>
+<h4><a name="CompleteChangeLog-BugFixes%3A"></a>Bug Fixes:</h4>
 
 <ul>
 	<li><a href="http://jira.opensymphony.com/browse/CACHE-52" title="Visit page outside Confluence">CACHE-52 </a> Fixed a problem that caused no output on Tomcat for small JSP files.</li>
 </ul>
 
 
-<h2><a name="CompleteChangeLog-OSCache2.0beta2">OSCache 2.0 beta 2</a></h2>
-<h3><a name="OSCache2.0beta2-ReleaseNotes">Release Notes</a></h3>
+<h2><a name="CompleteChangeLog-OSCache2.0beta2"></a>OSCache 2.0 beta 2</h2>
+<h3><a name="CompleteChangeLog-ReleaseNotes"></a>Release Notes</h3>
 
 <p>(4th August 2003 - by Chris Miller)</p>
-<h4><a name="OSCache2.0beta2-NewFeatures%3A">New Features:</a></h4>
+<h4><a name="CompleteChangeLog-NewFeatures%3A"></a>New Features:</h4>
 
 <ul>
 	<li>Now supports JavaGroups version 2.1.</li>
 </ul>
 
 
-<h4><a name="OSCache2.0beta2-BugFixes%3A">Bug Fixes:</a></h4>
+<h4><a name="CompleteChangeLog-BugFixes%3A"></a>Bug Fixes:</h4>
 
 <ul>
 	<li><a href="http://jira.opensymphony.com/browse/CACHE-48" title="Visit page outside Confluence">CACHE-48 </a> FastCronParser no longer requires JDK 1.4.x.</li>
 </ul>
 
 
-<h2><a name="CompleteChangeLog-OSCache2.0beta1">OSCache 2.0 beta 1</a></h2>
-<h3><a name="OSCache2.0beta1-ReleaseNotes">Release Notes</a></h3>
+<h2><a name="CompleteChangeLog-OSCache2.0beta1"></a>OSCache 2.0 beta 1</h2>
+<h3><a name="CompleteChangeLog-ReleaseNotes"></a>Release Notes</h3>
 
 <p>(19th July 2003 - by Chris Miller)</p>
-<h4><a name="OSCache2.0beta1-NewFeatures%3A">New Features:</a></h4>
+<h4><a name="CompleteChangeLog-NewFeatures%3A"></a>New Features:</h4>
 
 <ul>
 	<li><a href="http://jira.opensymphony.com/browse/CACHE-11" title="Visit page outside Confluence">CACHE-11 </a> Cache grouping support. This allows cache entries to be placed into an arbitrary group or groups and flushed with a single flushGroup() call.</li>
 </ul>
 
 
-<h4><a name="OSCache2.0beta1-Changesthatmayaffectbackwardscompatibility%3A">Changes that may affect backwards compatibility:</a></h4>
+<h4><a name="CompleteChangeLog-Changesthatmayaffectbackwardscompatibility%3A"></a>Changes that may affect backwards compatibility:</h4>
 
 <ul>
 	<li>The cache.entryevent.classes property in the configuration file has been renamed to cache.event.listeners, since it accepts CacheEntryEventListener, ScopeEventListener and CacheMapAccessEventListener types.</li>
 </ul>
 
 
-<h4><a name="OSCache2.0beta1-BugFixes%3A">Bug Fixes:</a></h4>
+<h4><a name="CompleteChangeLog-BugFixes%3A"></a>Bug Fixes:</h4>
 
 <ul>
 	<li><a href="http://jira.opensymphony.com/browse/CACHE-4" title="Visit page outside Confluence">CACHE-4 </a> WebSphere 3.5.x compatibility.</li>
 </ul>
 
 
-<h4><a name="OSCache2.0beta1-KnownProblems%3A%28thesehaveexistedforsometimeinthe1.x.xversionsandwillbeaddressedinanupcoming2.x.xrelease%29">Known Problems: (these have existed for some time in the 1.x.x versions and will be addressed in an upcoming 2.x.x release)</a></h4>
+<h4><a name="CompleteChangeLog-KnownProblems%3A%28thesehaveexistedforsometimeinthe1.x.xversionsandwillbeaddressedinanupcoming2.x.xrelease%29"></a>Known Problems: (these have existed for some time in the 1.x.x versions and will be addressed in an upcoming 2.x.x release)</h4>
 
 <ul>
 	<li>Session caches (created using the ServletCacheAdministrator) have some known limitations:<br/>
 </ul>
 
 
-<h2><a name="CompleteChangeLog-OSCache1.7.5">OSCache 1.7.5</a></h2>
-<h3><a name="OSCache1.7.5-ReleaseNotes">Release Notes</a></h3>
+<h2><a name="CompleteChangeLog-OSCache1.7.5"></a>OSCache 1.7.5</h2>
+<h3><a name="CompleteChangeLog-ReleaseNotes"></a>Release Notes</h3>
 <p>(5th January 2002 - by Mike Cannon-Brookes, mike@atlassian.com)</p>
 
 <ul>
 
 
 
-<h2><a name="CompleteChangeLog-OSCache1.7.4">OSCache 1.7.4</a></h2>
-<h3><a name="OSCache1.7.4-ReleaseNotes">Release Notes</a></h3>
+<h2><a name="CompleteChangeLog-OSCache1.7.4"></a>OSCache 1.7.4</h2>
+<h3><a name="CompleteChangeLog-ReleaseNotes"></a>Release Notes</h3>
 
 <p>(3rd December 2001 - by Francois Beauregard, fbeauregard@pyxis-tech.com, and<br/>
 Mike Cannon-Brookes, mike@atlassian.com)</p>
 
 
 
-<h2><a name="CompleteChangeLog-OSCache1.7.3">OSCache 1.7.3</a></h2>
-<h3><a name="OSCache1.7.3-ReleaseNotes">Release Notes</a></h3>
+<h2><a name="CompleteChangeLog-OSCache1.7.3"></a>OSCache 1.7.3</h2>
+<h3><a name="CompleteChangeLog-ReleaseNotes"></a>Release Notes</h3>
 
 <p>(11th November 2001 - by Francois Beauregard, fbeauregard@pyxis-tech.com)</p>
 
 
 
 
-<h2><a name="CompleteChangeLog-OSCache1.7.2">OSCache 1.7.2</a></h2>
-<h3><a name="OSCache1.7.2-ReleaseNotes">Release Notes</a></h3>
+<h2><a name="CompleteChangeLog-OSCache1.7.2"></a>OSCache 1.7.2</h2>
+<h3><a name="CompleteChangeLog-ReleaseNotes"></a>Release Notes</h3>
 
 <p>(31st October 2001 - by Mike Cannon-Brookes, mike@atlassian.com)</p>
 
 
 
 
-<h2><a name="CompleteChangeLog-OSCache1.7.1">OSCache 1.7.1</a></h2>
-<h3><a name="OSCache1.7.1-ReleaseNotes">Release Notes</a></h3>
+<h2><a name="CompleteChangeLog-OSCache1.7.1"></a>OSCache 1.7.1</h2>
+<h3><a name="CompleteChangeLog-ReleaseNotes"></a>Release Notes</h3>
 
 <p>(26th September 2001 - by Francois Beauregard, fbeauregard@pyxis-tech.com, and<br/>
 Alain Bergevin, abergevin@pyxis-tech.com, of Pyxis Technologies Inc.)</p>
 
 
 
-<h2><a name="CompleteChangeLog-OSCache1.7.0">OSCache 1.7.0</a></h2>
-<h3><a name="OSCache1.7.0-ReleaseNotes">Release Notes</a></h3>
+<h2><a name="CompleteChangeLog-OSCache1.7.0"></a>OSCache 1.7.0</h2>
+<h3><a name="CompleteChangeLog-ReleaseNotes"></a>Release Notes</h3>
 
 <p>(26th September 2001 - by Francois Beauregard, fbeauregard@pyxis-tech.com, and<br/>
 Alain Bergevin, abergevin@pyxis-tech.com, of Pyxis Technologies Inc.)</p>
 </ul>
 
 
-<h2><a name="CompleteChangeLog-OSCache1.6.1">OSCache 1.6.1</a></h2>
-<h3><a name="OSCache1.6.1-ReleaseNotes">Release Notes</a></h3>
+<h2><a name="CompleteChangeLog-OSCache1.6.1"></a>OSCache 1.6.1</h2>
+<h3><a name="CompleteChangeLog-ReleaseNotes"></a>Release Notes</h3>
 
 <p>(16th September, 2001 - by Todd Gochenour, tgochenour@peregrine.com)</p>
 
 
 
 
-<h2><a name="CompleteChangeLog-OSCache1.6">OSCache 1.6</a></h2>
-<h3><a name="OSCache1.6-ReleaseNotes">Release Notes</a></h3>
+<h2><a name="CompleteChangeLog-OSCache1.6"></a>OSCache 1.6</h2>
+<h3><a name="CompleteChangeLog-ReleaseNotes"></a>Release Notes</h3>
 
 <p>(5th September, 2001 - by Mike Cannon-Brookes, mike@atlassian.com)</p>
 
 
 
 
-<h2><a name="CompleteChangeLog-OSCache1.5">OSCache 1.5</a></h2>
-<h3><a name="OSCache1.5-ReleaseNotes">Release Notes</a></h3>
+<h2><a name="CompleteChangeLog-OSCache1.5"></a>OSCache 1.5</h2>
+<h3><a name="CompleteChangeLog-ReleaseNotes"></a>Release Notes</h3>
 
 <p>(6th August, 2001 - by Todd Gochenour, tgochenour@peregrine.com)</p>
 
 </ul>
 
 
-<h2><a name="CompleteChangeLog-OSCache1.3">OSCache 1.3</a></h2>
-<h3><a name="OSCache1.3-ReleaseNotes">Release Notes</a></h3>
+<h2><a name="CompleteChangeLog-OSCache1.3"></a>OSCache 1.3</h2>
+<h3><a name="CompleteChangeLog-ReleaseNotes"></a>Release Notes</h3>
 
 <p>(9th June, 2001 - by Mike Cannon-Brookes, mike@atlassian.com)</p>
 
 
 
 
-<h2><a name="CompleteChangeLog-OSCache1.2.5">OSCache 1.2.5</a></h2>
-<h3><a name="OSCache1.2.5-ReleaseNotes">Release Notes</a></h3>
+<h2><a name="CompleteChangeLog-OSCache1.2.5"></a>OSCache 1.2.5</h2>
+<h3><a name="CompleteChangeLog-ReleaseNotes"></a>Release Notes</h3>
 
 <p>(18th May, 2001 - by Mike Cannon-Brookes, mike@atlassian.com)</p>
 
 </ul>
 
 
-<h2><a name="CompleteChangeLog-OSCache1.2.1">OSCache 1.2.1</a></h2>
-<h3><a name="OSCache1.2.1-ReleaseNotes">Release Notes</a></h3>
+<h2><a name="CompleteChangeLog-OSCache1.2.1"></a>OSCache 1.2.1</h2>
+<h3><a name="CompleteChangeLog-ReleaseNotes"></a>Release Notes</h3>
 
 <p>(10th May, 2001 - by Mike Cannon-Brookes, mike@atlassian.com)</p>
 
 </ul>
 
 
-<h2><a name="CompleteChangeLog-OSCache1.2">OSCache 1.2</a></h2>
-<h3><a name="OSCache1.2-ReleaseNotes">Release Notes</a></h3>
+<h2><a name="CompleteChangeLog-OSCache1.2"></a>OSCache 1.2</h2>
+<h3><a name="CompleteChangeLog-ReleaseNotes"></a>Release Notes</h3>
 
 <p>(28th March, 2001 - by Mike Cannon-Brookes, mike@atlassian.com)</p>
 
 </ul>
 
 
-<h2><a name="CompleteChangeLog-OSCache1.1">OSCache 1.1</a></h2>
-<h3><a name="OSCache1.1-ReleaseNotes">Release Notes</a></h3>
+<h2><a name="CompleteChangeLog-OSCache1.1"></a>OSCache 1.1</h2>
+<h3><a name="CompleteChangeLog-ReleaseNotes"></a>Release Notes</h3>
 
 <p>(25th March, 2001 - by Mike Cannon-Brookes, mike@atlassian.com)</p>
 
 </ul>
 
 
-<h2><a name="CompleteChangeLog-OSCache1.0beta2">OSCache 1.0 beta 2</a></h2>
-<h3><a name="OSCache1.0beta2-ReleaseNotes">Release Notes</a></h3>
+<h2><a name="CompleteChangeLog-OSCache1.0beta2"></a>OSCache 1.0 beta 2</h2>
+<h3><a name="CompleteChangeLog-ReleaseNotes"></a>Release Notes</h3>
 
 <p>(20th March, 2001 - by Mike Cannon-Brookes, mike@atlassian.com)</p>
 
 </ul>
 
 
-<h2><a name="CompleteChangeLog-OSCache1.0beta1">OSCache 1.0 beta 1</a></h2>
-<h3><a name="OSCache1.0beta1-ReleaseNotes">Release Notes</a></h3>
+<h2><a name="CompleteChangeLog-OSCache1.0beta1"></a>OSCache 1.0 beta 1</h2>
+<h3><a name="CompleteChangeLog-ReleaseNotes"></a>Release Notes</h3>
 
 <p>(20th February, 2001 - by Mike Cannon-Brookes, mike@atlassian.com)</p>
 
 </ul>
 
 
-<h2><a name="CompleteChangeLog-OSCache1.0beta0">OSCache 1.0 beta 0</a></h2>
-<h3><a name="OSCache1.0beta0-ReleaseNotes">Release Notes</a></h3>
+<h2><a name="CompleteChangeLog-OSCache1.0beta0"></a>OSCache 1.0 beta 0</h2>
+<h3><a name="CompleteChangeLog-ReleaseNotes"></a>Release Notes</h3>
 
 <p>(26th November, 2000 - by Mike Cannon-Brookes, mike@atlassian.com)</p>
 

docs/wiki/Configuration.html

 				    <p>This guide only covers the configuration of OSCache by using the oscache.properties file. To see how to install OSCache and where to place the oscache.properties file, see the <a href="Installation Guide.html" title="Installation Guide">Installation Guide</a>.<br/>
 The following properties are able to be set in the oscache.properties file:</p>
 
-<h4><a name="Configuration-cache.memory">cache.memory</a></h4>
+<h4><a name="Configuration-cache.memory"></a>cache.memory</h4>
 
 <p>Valid values are true or false, with true being the default value. If you want to disable memory caching, just comment out or remove this line.</p>
 
 <p>Note: disabling memory AND disk caching is possible but fairly stupid <img class="emoticon" src="./icons/emoticons/wink.gif" height="20" width="20" align="absmiddle" alt="" border="0"/></p>
 
-<h4><a name="Configuration-cache.capacity">cache.capacity</a></h4>
+<h4><a name="Configuration-cache.capacity"></a>cache.capacity</h4>
 
 <p>The maximum number of items that a cache will hold. By default the capacity is unlimited - the cache will never remove any items. Negative values will also be treated as meaning unlimited capacity.</p>
 
-<h4><a name="Configuration-cache.algorithm">cache.algorithm</a></h4>
+<h4><a name="Configuration-cache.algorithm"></a>cache.algorithm</h4>
 
 <p>The default cache algorithm to use. Note that in order to use an algorithm the cache size must also be specified. If the cache size is not specified, the cache algorithm will be Unlimited cache regardless of the value of this property. If you specify a size but not an algorithm, the cache algorithm used will be com.opensymphony.oscache.base.algorithm.LRUCache.</p>
 
 </ul>
 
 
-<h4><a name="Configuration-cache.blocking">cache.blocking</a></h4>
+<h4><a name="Configuration-cache.blocking"></a>cache.blocking</h4>
 
 <p>When a request is made for a stale cache entry, it is possible that another thread is already in the process of rebuilding that entry. This setting specifies how OSCache handles the subsequent 'non-building' threads. The default behaviour (cache.blocking=false) is to serve the old content to subsequent threads until the cache entry has been updated. This provides the best performance (at the cost of serving slightly stale data). When blocking is enabled, threads will instead block until the new cache entry is ready to be served. Once the new entry is put in the cache the blocked threads will be restarted and given the new entry.</p>
 
 <p>Note that even if blocking is disabled, when there is no stale data available to be served threads will block until the data is added to the cache by the thread that is responsible for building the data.</p>
 
-<h4><a name="Configuration-cache.unlimited.disk">cache.unlimited.disk</a></h4>
+<h4><a name="Configuration-cache.unlimited.disk"></a>cache.unlimited.disk</h4>
 
 <p>Indicates whether the disk cache should be treated as unlimited or not. The default value is false. In this case, the disk cache capacity will be equal to the memory cache capacity set by cache.capacity.</p>
 
-<h4><a name="Configuration-cache.persistence.class">cache.persistence.class</a></h4>
+<h4><a name="Configuration-cache.persistence.class"></a>cache.persistence.class</h4>
 
 <p>Specifies the class to use for persisting cache entries. This class must implement the PersistenceListener interface. OSCache comes with an implementation that provides filesystem based persistence. Set this property to com.opensymphony.oscache.plugins.diskpersistence.HashDiskPersistenceListener to enable this implementation. By specifying your own class here you should be able to persist cache data using say JDBC or LDAP. NOTE: This class hashes the toString() of the object being cached to produce the file name of the entry. If you prefer readable file names, the parent DiskPersistenceListener can still be used but it will have issues with illegal filesystem characters or long names.</p>
-<div class="information-block" align='center'><div class='informationMacroPadding'><table cellpadding='5' width='85%' cellspacing='0' class='noteMacro' border='0'><tr><td width='16' valign='top'><img src="/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td><b class="strong">Note</b><br />
-<p>The HashDiskPersistenceListener and DiskPersistenceListener classes require <b>cache.path</b> to be set in order to know where to persist the files to disk.</p></td></tr></table></div></div>
+<table cellpadding='5' width='85%' cellspacing='8px' class='noteMacro' border="0" align='center'><colgroup><col width='24'><col></colgroup><tr><td valign='top'><img src="/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td><b class="strong">Note</b><br />
+<p>The HashDiskPersistenceListener and DiskPersistenceListener classes require <b>cache.path</b> to be set in order to know where to persist the files to disk.</p></td></tr></table>
 
-<h4><a name="Configuration-cache.path">cache.path</a></h4>
+<h4><a name="Configuration-cache.path"></a>cache.path</h4>
 
 <p>This specifies the directory on disk where caches will be stored. The directory will be created if it doesn't already exist, but remember that OSCache must have permission to write to this location.</p>
-<div class="information-block" align='center'><div class='informationMacroPadding'><table cellpadding='5' width='85%' cellspacing='0' class='noteMacro' border='0'><tr><td width='16' valign='top'><img src="/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td><b class="strong">Note</b><br />
-<p>    For Windows machines, the backslash character '\' needs to be escaped. ie in Windows:</p></td></tr></table></div></div>
+<table cellpadding='5' width='85%' cellspacing='8px' class='noteMacro' border="0" align='center'><colgroup><col width='24'><col></colgroup><tr><td valign='top'><img src="/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td><b class="strong">Note</b><br />
+<p>    For Windows machines, the backslash character '\' needs to be escaped. ie in Windows:</p></td></tr></table>
 <div class="preformatted"><div class="preformattedContent">
 <pre>    cache.path=c:\\myapp\\cache
     or *ix:
 </pre>
 </div></div>
 
-<h4><a name="Configuration-cache.persistence.overflow.only%28NEW%21Since2.1%29">cache.persistence.overflow.only  (NEW! Since 2.1)</a></h4>
+<h4><a name="Configuration-cache.persistence.overflow.only%28NEW%21Since2.1%29"></a>cache.persistence.overflow.only  (NEW! Since 2.1)</h4>
 
 <p>Indicates whether the persistence should only happen once the memory cache capacity has been reached. The default value is false for backwards compatibility but the recommended value is true when the memory cache is enabled. This property drastically changes the behavior of the cache in that the persisted cache will now be different then what is in memory.</p>
 
-<h4><a name="Configuration-cache.event.listeners">cache.event.listeners</a></h4>
+<h4><a name="Configuration-cache.event.listeners"></a>cache.event.listeners</h4>
 
 <p>This takes a comma-delimited list of fully-qualified class names. Each class in the list must implement one (or more) of the following interfaces:</p>
 
 <p>It is also of course quite straightforward to write your own event listener. See the <a href="http://www.opensymphony.com/oscache/api" title="Visit page outside Confluence">JavaDoc API</a> for further details.</p>
 
 
-<h4><a name="Configuration-cache.key">cache.key</a></h4>
+<h4><a name="Configuration-cache.key"></a>cache.key</h4>
 
 <p>This is the key that will be used by the ServletCacheAdministrator (and hence the custom tags) to store the cache object in the application and session scope. The default value when this property is not specified is "__oscache_cache". If you want to access this default value in your code, it is available as com.opensymphony.oscache.base.Const.DEFAULT_CACHE_KEY.</p>
 
-<h4><a name="Configuration-cache.use.host.domain.in.key">cache.use.host.domain.in.key</a></h4>
+<h4><a name="Configuration-cache.use.host.domain.in.key"></a>cache.use.host.domain.in.key</h4>
 
 <p>If your server is configured with multiple hosts, you may wish to add host name information to automatically generated cache keys. If so, set this property to true. The default value is false.</p>
 
 
-<h3><a name="Configuration-AdditionalProperties">Additional Properties</a></h3>
+<h3><a name="Configuration-AdditionalProperties"></a>Additional Properties</h3>
 
 <p>In additon to the above basic options, any other properties that are specified in this file will still be loaded and can be made available to your event handlers. For example, the JavaGroupsBroadcastingListener supports the following additional properties:</p>
 
-<h4><a name="Configuration-cache.cluster.multicast.ip">cache.cluster.multicast.ip</a></h4>
+<h4><a name="Configuration-cache.cluster.multicast.ip"></a>cache.cluster.multicast.ip</h4>
 
 <p>The multicast IP to use for this cache cluster. Defaults to 231.12.21.132.</p>
 
-<h4><a name="Configuration-cache.cluster.properties">cache.cluster.properties</a></h4>
+<h4><a name="Configuration-cache.cluster.properties"></a>cache.cluster.properties</h4>
 
 <p>Specifies additional configuration options for the clustering. The default setting is</p>
 <div class="preformatted"><div class="preformattedContent">

docs/wiki/Cron Expressions.html

 
 <p><b>OSCache 2.0</b> now gives you the ability to expire content at specific dates and/or times based on a cron expression.</p>
 
-<h3><a name="CronExpressions-WhatisaCronExpression%3F">What is a Cron Expression?</a></h3>
+<h3><a name="CronExpressions-WhatisaCronExpression%3F"></a>What is a Cron Expression?</h3>
 
 <p>Many of you are probably already familiar with the unix cron program. For those that aren't, cron is a daemon process that allows users to execute commands or scripts automatically at user-configurable dates and times. The important part as far as OSCache is concerned is the cron expression syntax that allows users to dictate when commands should be executed - you can now use the same syntax to expire content in OSCache! A cron expression is a simple text string that specifies particular dates and/or times that are matched against.</p>
 
-<h3><a name="CronExpressions-HowDoesOSCacheMatchAgainstanExpression%3F">How Does OSCache Match Against an Expression?</a></h3>
+<h3><a name="CronExpressions-HowDoesOSCacheMatchAgainstanExpression%3F"></a>How Does OSCache Match Against an Expression?</h3>
 
 <p><b>OSCache</b> uses cron expressions in a manner that might seem 'backwards' to what you might initially expect. When using a cron expression to test if a cache entry is stale, OSCache finds the date and time (prior to the current time) that most recently matches the supplied expression. This date/time is used as the expiry time - entries that were placed in the cache prior to this expiry time are considered stale and result in a NeedsRefreshException being thrown.</p>
 
 <p>As an example, suppose you specify a cron expiry that matches every hour, on the hour ("0 * * * *"). If the current time is 10:42pm, then any content that was placed in the cache prior to 10:00pm would be considered stale.</p>
 
-<h3><a name="CronExpressions-WhatistheDifferenceBetweentheRefreshPeriodandaCronExpression%3F">What is the Difference Between the Refresh Period and a Cron Expression?</a></h3>
+<h3><a name="CronExpressions-WhatistheDifferenceBetweentheRefreshPeriodandaCronExpression%3F"></a>What is the Difference Between the Refresh Period and a Cron Expression?</h3>
 
 <p>The difference between the refresh period and a cron expression is that the refresh period specifies the maximum allowable age of a cache entry, whilst a cron expression specifies specific expiry times, regardless of how old an entry is. Eg imagine caching an object at 10:29am. With a refresh period of 30 minutes that entry would expire at 10:59am. With a cron expression of "0,30 * * * *" that entry would expire at 10:30am.</p>
 
-<h3><a name="CronExpressions-TheCronExpressionSyntax">The Cron Expression Syntax</a></h3>
+<h3><a name="CronExpressions-TheCronExpressionSyntax"></a>The Cron Expression Syntax</h3>
 
 <p>A cron expression consists of the following 5 fields:</p>
 
 
 <p>To have a look at further examples of both valid and invalid syntax, it is suggested you take a look at the JUnit test cases in the com.opensymphony.oscache.util.TestFastCronParser class. This class is located under the src/core/test directory. For examples of how to specify cron expiry times using the taglibs, see the <a href="JSP Tags.html" title="JSP Tags">Tag Reference</a> and the cronTest.jsp file in the example web application.</p>
 
-<h3><a name="CronExpressions-Notes">Notes</a></h3>
+<h3><a name="CronExpressions-Notes"></a>Notes</h3>
 
 <ul>
 	<li>You can specify both a cron expression and a refresh interval at the same time if you like. This is useful in cases where you always want to expire content at midnight, but you also never want it to be more than 6 hours old.</li>

docs/wiki/Documentation.html

 	    <table class="pagecontent" border="0" cellpadding="0" cellspacing="0" width="100%" bgcolor="#ffffff">
 		    <tr>
 			    <td valign="top" class="pagebody">
-				    <h3><a name="Documentation-1.Overview">1. Overview</a></h3>
+				    <h3><a name="Documentation-1.Overview"></a>1. Overview</h3>
 <ol>
 	<li><a href="What is OSCache.html" title="What is OSCache">What is OSCache</a></li>
 	<li><a href="License.html" title="License">License</a></li>
 </ol>
 
 
-<h3><a name="Documentation-2.OSCacheversions">2. OSCache versions</a></h3>
+<h3><a name="Documentation-2.OSCacheversions"></a>2. OSCache versions</h3>
 <ol>
 	<li><a href="Change Log.html" title="Change Log">Change Log</a> - See what's new in the latest version of OSCache (see also <a href="http://jira.opensymphony.com/browse/CACHE?report=com.atlassian.jira.plugin.system.project:changelog-panel" title="Visit page outside Confluence">JIRA - Change Log</a>).</li>
 	<li><a href="Roadmap.html" title="Roadmap">Roadmap</a> - See the expected future releases of OSCache (see also <a href="http://jira.opensymphony.com/browse/CACHE?report=com.atlassian.jira.plugin.system.project:roadmap-panel" title="Visit page outside Confluence">JIRA - Road Map</a>).</li>
 </ol>
 
 
-<h3><a name="Documentation-3.Tutorial">3. Tutorial</a></h3>
+<h3><a name="Documentation-3.Tutorial"></a>3. Tutorial</h3>
 <ol>
 	<li><a href="Installation Guide.html" title="Installation Guide">Installation Guide</a> - How to install OSCache and where to get it.</li>
 	<li><a href="CacheFilter Tutorial.html" title="CacheFilter Tutorial">CacheFilter Tutorial</a> - How to cache entire pages of your website.</li>
 </ol>
 
 
-<h3><a name="Documentation-4.ReferenceGuide">4. Reference Guide</a></h3>
+<h3><a name="Documentation-4.ReferenceGuide"></a>4. Reference Guide</h3>
 <ol>
 	<li><a href="Configuration.html" title="Configuration">Configuration</a> - Configuration options for OSCache.</li>
 	<li><a href="JSP Tags.html" title="JSP Tags">JSP Tags</a> - Detailed documentation on OSCache's tags and how to use them.</li>
 </ol>
 
 
-<h3><a name="Documentation-5.Thirdpartyintegration">5. Third-party integration</a></h3>
+<h3><a name="Documentation-5.Thirdpartyintegration"></a>5. Third-party integration</h3>
 <ol>
 	<li><a href="Hibernate.html" title="Hibernate">Hibernate</a> - How to integrate OSCache with Hibernate.</li>
 	<li><a href="http://opensource.atlassian.com/confluence/spring/display/INTEGRATE/OSCache" title="Visit page outside Confluence">Spring</a> - Simple configuration with no special support from Spring.</li>
+	<li><a href="http://www.jpox.org/docs/1_1/cache.html" title="Visit page outside Confluence">JPOX</a> - Integration of OSCache with JPOX transparent persistence JDO implementation.</li>
 </ol>
 
 
-<h3><a name="Documentation-6.Links">6. Links</a></h3>
+<h3><a name="Documentation-6.Links"></a>6. Links</h3>
 <ol>
 	<li><a href="http://www.opensymphony.com/oscache/" title="Visit page outside Confluence">Current Release Home</a></li>
 	<li><a href="https://oscache.dev.java.net/servlets/ProjectDocumentList" title="Visit page outside Confluence">Download Source and Binaries</a></li>

docs/wiki/FAQ.html

 
 
 
-<h4><a name="FAQ-WhatcanIuseOSCacheforexactly%3F"><a name="FAQ-uses"></a>What can I use OSCache for exactly?</a></h4>
+<h4><a name="FAQ-WhatcanIuseOSCacheforexactly%3F"></a><a name="FAQ-uses"></a>What can I use OSCache for exactly?</h4>
 
 <p>OSCache can be used on three different levels:</p>
 
 
 <p>All three approaches can be mixed and matched within the same application.</p>
 
-<h4><a name="FAQ-Whereisthedatacached%3F"><a name="FAQ-data"></a>Where is the data cached?</a></h4>
+<h4><a name="FAQ-Whereisthedatacached%3F"></a><a name="FAQ-data"></a>Where is the data cached?</h4>
 
 <p>Out of the box, OSCache is capable of caching data in memory (so it is very fast), and/or to disk (so your cache can be persistent across server restarts). Support is also provided for managing a cluster of caches across multiple servers.</p>
 
 <p>In addition to these capabilities, it is possible to plug in custom persistence code and custom event handlers, so you could easily extend OSCache to persist cached objects to say a database or an LDAP directory.</p>
 
-<h4><a name="FAQ-CanOSCachecacheJavaobjectsratherthanportionsofJSPpages%3FImeanifIcreateaProductobject%2CcanIcacheitanduseitlatersothatIdon%27thavetofetchdataagain%3F"><a name="FAQ-objects"></a>Can OSCache cache Java objects rather than portions of JSP pages? I mean if I create a Product object, can I cache it and use it later so that I don't have to fetch data again?</a></h4>
+<h4><a name="FAQ-CanOSCachecacheJavaobjectsratherthanportionsofJSPpages%3FImeanifIcreateaProductobject%2CcanIcacheitanduseitlatersothatIdon%27thavetofetchdataagain%3F"></a><a name="FAQ-objects"></a>Can OSCache cache Java objects rather than portions of JSP pages? I mean if I create a Product object, can I cache it and use it later so that I don't have to fetch data again?</h4>
 
 <p>Yes, however to do this you will need to write code that talks to the OSCache API directly. The taglibs are currently only designed to cache rendered JSP content. This should hopefully not be too big a limitation since any creation or manipulation of java objects should generally be performed in beans or MVC action classes rather than JSP scriptlets anyway.</p>
 
-<h4><a name="FAQ-WhatotherfeaturesdoesOSCachehave%3F"><a name="FAQ-features"></a>What other features does OSCache have?</a></h4>
+<h4><a name="FAQ-WhatotherfeaturesdoesOSCachehave%3F"></a><a name="FAQ-features"></a>What other features does OSCache have?</h4>
 
 <p>There is a full list of features in the <a href="Feature List.html" title="Feature List">Feature List</a> documentation.</p>
 
-<h4><a name="FAQ-CanyougivemesomeexamplesofhowtheOSCachetagsareused%3F"><a name="FAQ-tags"></a>Can you give me some examples of how the OSCache tags are used?</a></h4>
+<h4><a name="FAQ-CanyougivemesomeexamplesofhowtheOSCachetagsareused%3F"></a><a name="FAQ-tags"></a>Can you give me some examples of how the OSCache tags are used?</h4>
 <div class="code"><div class="codeHeader"><b>Example 1</b></div><div class="codeContent">
 <pre class="code-xml"><span class="code-tag">&lt;cache:cache time=<span class="code-quote">"600"</span>&gt;</span>
         <span class="code-tag">&lt;%= myBean.getTitle() %&gt;</span>
 
 <p>See the <a href="JSP Tags.html" title="JSP Tags">Tag Reference</a> and the example web application for further taglib examples.</p>
 
-<h4><a name="FAQ-CanOSCachetagsbenested%3F"><a name="FAQ-nesting"></a>Can OSCache tags be nested?</a></h4>
+<h4><a name="FAQ-CanOSCachetagsbenested%3F"></a><a name="FAQ-nesting"></a>Can OSCache tags be nested?</h4>
 
 <p>You can't currently nest &lt;cache&gt; tags within one another - not that you'd probably want to. It is because of the cache object being placed in the page scope for use by programmers within the tag.</p>
 
 <p>We're not sure if anyone actually uses this so we might remove it to allow for tag nesting (presumably across includes or something).</p>
 
-<h4><a name="FAQ-Whatcontroldoyouhaveoverthecachesize%3FIcanimaginethesizeoftheinmemorycachegettingverybig.Isitpossibletosetamaxcachesizeandthenremovetheleastrecentlyusedentriesfromthecache%3F"><a name="FAQ-size"></a>What control do you have over the cache size? I can imagine the size of the in-memory cache getting very big. Is it possible to set a max cache size and then remove the least-recently-used entries from the cache?</a></h4>
+<h4><a name="FAQ-Whatcontroldoyouhaveoverthecachesize%3FIcanimaginethesizeoftheinmemorycachegettingverybig.Isitpossibletosetamaxcachesizeandthenremovetheleastrecentlyusedentriesfromthecache%3F"></a><a name="FAQ-size"></a>What control do you have over the cache size? I can imagine the size of the in-memory cache getting very big. Is it possible to set a max cache size and then remove the least-recently-used entries from the cache?</h4>
 
 <p>You can limit the memory cache by the number of objects that are cached. When an object is added to the cache and the limit is exceeded, another object will be removed from the cache to make room.</p>
 
 <p>Currently the disk cache can either be set to unlimited, or tied to the same size as the memory cache (ie, objects will be removed from the disk cache at the same time as they are removed from the memory cache. Depending on the useage patterns of your cache, restarting your application could mean that the disk cache might continue to grow). We understand that this is not ideal and there is room for improvement here. Stay tuned!</p>
 
-<h4><a name="FAQ-HowdoesOSCachedecidewhichobjecttoremove%3FWhatcachingalgorithmdoesOSCacheuse%3F"><a name="FAQ-algorithm"></a>How does OSCache decide which object to remove? What caching algorithm does OSCache use?</a></h4>
+<h4><a name="FAQ-HowdoesOSCachedecidewhichobjecttoremove%3FWhatcachingalgorithmdoesOSCacheuse%3F"></a><a name="FAQ-algorithm"></a>How does OSCache decide which object to remove? What caching algorithm does OSCache use?</h4>
 
 <p>The caching algorithm is configurable. OSCache currently ships with 3 different algorithms - LRU (Least Recently Used), FIFO (First In First Out), and Unlimited. Should one of those not prove suitable, it is also possible to specify a custom algorithm class.</p>
 
-<h4><a name="FAQ-HowdoesOSCache%27sclusteringwork%3F"><a name="FAQ-clustering"></a>How does OSCache's clustering work?</a></h4>
+<h4><a name="FAQ-HowdoesOSCache%27sclusteringwork%3F"></a><a name="FAQ-clustering"></a>How does OSCache's clustering work?</h4>
 
 <p>The clustering is implemented as a listener that catches 'flush' events. These events are then broadcast across the network (using either the JavaGroups library or JMS) so that other nodes in the cluster can flush the relevant object(s) from their local cache. Note that for performance reasons, when objects are added to a cache they are not broadcast to other nodes. This means that each node in the cluster maintains their own relatively indedependent cache, yet still remains fresh.</p>
 
 <p>If this mechanism does not suit your requirements, you can always code up a different solution by writing a custom event handler.</p>
 
-<h4><a name="FAQ-WhathappensifIneedtoexpiredatainthecache%3F"><a name="FAQ-expire"></a>What happens if I need to expire data in the cache?</a></h4>
+<h4><a name="FAQ-WhathappensifIneedtoexpiredatainthecache%3F"></a><a name="FAQ-expire"></a>What happens if I need to expire data in the cache?</h4>
 
 <p>Cache entries can be flushed explicitly in several ways:</p>
 
 <p>In addition, cached data can be expired at retrieval time by specifying a maximum age for the data, or by indicating what dates and/or times the data should expire. See the time, duration and cron attributes of the &lt;cache&gt; tag for more information.</p>
 
 
-<h4><a name="FAQ-Canyoutellmemoreaboutgroupingcacheentries%3FHowmightthisbeused%3F"><a name="FAQ-groups"></a>Can you tell me more about grouping cache entries? How might this be used?</a></h4>
+<h4><a name="FAQ-Canyoutellmemoreaboutgroupingcacheentries%3FHowmightthisbeused%3F"></a><a name="FAQ-groups"></a>Can you tell me more about grouping cache entries? How might this be used?</h4>
 
 <p>This is a powerful feature that makes it easy to manage your cache content. Suppose you are rendering a website and the pages that you are caching depend on various factors. Perhaps they use various shared templates, some database content, and maybe some of them depend on an external data feed. By creating a cache group for each of these factors, each cached page can be placed into the group(s) that the page is dependent on. Then when say an external datafeed is updated it is trivial to flush all pages that depend on that datafeed.</p>
 
     ...</pre>
 </div></div>
 
-<h4><a name="FAQ-Idon%27twanttousethetaglibs%2CIwanttoaccessOSCachedirectlyfromwithinmyapplication.WheredoIstart%3F"><a name="FAQ-API"></a>I don't want to use the taglibs, I want to access OSCache directly from within my application. Where do I start?</a></h4>
+<h4><a name="FAQ-Idon%27twanttousethetaglibs%2CIwanttoaccessOSCachedirectlyfromwithinmyapplication.WheredoIstart%3F"></a><a name="FAQ-API"></a>I don't want to use the taglibs, I want to access OSCache directly from within my application. Where do I start?</h4>
 
 <p>We'd suggest the best place to start would be to look at the GeneralCacheAdministrator class. It provides a simple wrapper for a single cache instance and should give you all the basic functionality you need. If you want to work with multiple caches or manipulate your cache beyond what GeneralCacheAdministrator provides, consider either writing your own administrator class using GeneralCacheAdministrator as a starting point, or just create and use the Cache class directly. See the Javadocs for more information.</p>
 
-<h4><a name="FAQ-WhereelsecanIgoforhelpifIcan%27tfindananswertomyquestionhere%3F"><a name="FAQ-help"></a>Where else can I go for help if I can't find an answer to my question here?</a></h4>
+<h4><a name="FAQ-WhereelsecanIgoforhelpifIcan%27tfindananswertomyquestionhere%3F"></a><a name="FAQ-help"></a>Where else can I go for help if I can't find an answer to my question here?</h4>
 
 <p>The best place to try is on the OSCache <a href="https://oscache.dev.java.net/servlets/ProjectMailingListList" title="Visit page outside Confluence">mailing list</a>. It reaches a wide audience and is your best chance of getting a fast response. Remember to search the archives first to see if your question has already been answered.</p>
 

docs/wiki/Feature List.html

 	    <table class="pagecontent" border="0" cellpadding="0" cellspacing="0" width="100%" bgcolor="#ffffff">
 		    <tr>
 			    <td valign="top" class="pagebody">
-				    <h3><a name="FeatureList-OSCacheFeatures">OSCache Features</a></h3>
+				    <h3><a name="FeatureList-OSCacheFeatures"></a>OSCache Features</h3>
 
-<h4><a name="FeatureList-Fastinmemorycaching">Fast in-memory caching</a></h4>
+<h4><a name="FeatureList-Fastinmemorycaching"></a>Fast in-memory caching</h4>
 
 <ul>
 	<li>OSCache allows you to execute dynamic content periodically (eg every 30 minutes) rather than every request and store the result in memory. Each further request is served directly from the memory cache, resulting in dramatic speed increases.</li>
 </ul>
 
 
-<h4><a name="FeatureList-Persistentondiskcaching">Persistent on-disk caching</a></h4>
+<h4><a name="FeatureList-Persistentondiskcaching"></a>Persistent on-disk caching</h4>
 
 <ul>
 	<li>OSCache can also write the cache to disk. This provides caching across server restarts, and caching of datasets that do not fit into memory. Caching can be configured to use memory or file caching, or a combination of both.</li>
 </ul>
 
 
-<h4><a name="FeatureList-ExcellentPerformance">Excellent Performance</a></h4>
+<h4><a name="FeatureList-ExcellentPerformance"></a>Excellent Performance</h4>
 
 <ul>
 	<li>Written with performance in mind.</li>
 </ul>
 
 
-<h4><a name="FeatureList-Clusteringsupport">Clustering support</a></h4>
+<h4><a name="FeatureList-Clusteringsupport"></a>Clustering support</h4>
 
 <ul>
 	<li>OSCache can easily be configured to cluster across multiple boxes. This provides both scalability and failover support without any changes required in your caching code.</li>
 </ul>
 
 
-<h4><a name="FeatureList-FlexibleCachingSystem">Flexible Caching System</a></h4>
+<h4><a name="FeatureList-FlexibleCachingSystem"></a>Flexible Caching System</h4>
 
 <ul>
 	<li>OSCache allows you to cache portions of JSP pages, arbitrary Java objects, and even entire servlet responses.</li>
 </ul>
 
 
-<h4><a name="FeatureList-SimpleJSPTagLibrary">Simple JSP Tag Library</a></h4>
+<h4><a name="FeatureList-SimpleJSPTagLibrary"></a>Simple JSP Tag Library</h4>
 
 <ul>
 	<li>The <a href="JSP Tags.html" title="JSP Tags">tag library</a> to perform and control the caching is very simple. See the Tag Reference for more information.</li>
 </ul>
 
 
-<h4><a name="FeatureList-CachingFilter">Caching Filter</a></h4>
+<h4><a name="FeatureList-CachingFilter"></a>Caching Filter</h4>
 
 <ul>
 	<li>A Servlet 2.3 Filter allows for caching of entire pages and generated binary files (like dynamically created images or PDF files).</li>
 </ul>
 
 
-<h4><a name="FeatureList-ComprehensiveAPI">Comprehensive API</a></h4>
+<h4><a name="FeatureList-ComprehensiveAPI"></a>Comprehensive API</h4>
 
 <ul>
 	<li>For the ultimate control, OSCache can be used through its straightforward API. You can instantiate, configure and control multiple caches programmatically. It would be possible for example to create one small in-memory cache that held currency conversion rates and was updated daily at 2am, while another cache could be purely disk based and used for holding dynamically created images.</li>
 </ul>
 
 
-<h4><a name="FeatureList-ExceptionHandling">Exception Handling</a></h4>
+<h4><a name="FeatureList-ExceptionHandling"></a>Exception Handling</h4>
 
 <ul>
 	<li>OSCache provides a way for your site to gracefully tolerate errors. This is not error prevention, rather if an error occurs it should not stop your site from functioning. For example if your database goes down, normally your product descriptions will not be browsable. Using OSCache you can cache those descriptions so you can still browse them.</li>
 </ul>
 
 
-<h4><a name="FeatureList-CacheFlushing">Cache Flushing</a></h4>
+<h4><a name="FeatureList-CacheFlushing"></a>Cache Flushing</h4>
 
 <ul>
 	<li>Flushing of caches can be controlled via JSP Tags, so these functions can easily be built into your administration interface.</li>
 </ul>
 
 
-<h4><a name="FeatureList-Portablecaching">Portable caching</a></h4>
+<h4><a name="FeatureList-Portablecaching"></a>Portable caching</h4>
 
 <ul>
 	<li>Pure Java, this means it is platform independent.</li>
 </ul>
 
 
-<h4><a name="FeatureList-i18nAware">i18n Aware</a></h4>
+<h4><a name="FeatureList-i18nAware"></a>i18n Aware</h4>
 
 <ul>
 	<li>The caching is i18n aware and supports all encodings.</li>
 </ul>
 
 
-<h4><a name="FeatureList-SolidReputation">Solid Reputation</a></h4>
+<h4><a name="FeatureList-SolidReputation"></a>Solid Reputation</h4>
 
 <ul>
 	<li>Thousands of downloads, hundreds of users on the <a href="https://oscache.dev.java.net/servlets/ProjectMailingListList" title="Visit page outside Confluence">mailing list</a>.</li>

docs/wiki/Hibernate.html

 
 <p><a href="http://www.hibernate.org/6.html" title="Visit page outside Confluence">Hibernate 2.1.1</a> or higher is required.</p>
 
-<h3><a name="Hibernate-hibernate.cache.providerclass">hibernate.cache.provider_class</a></h3>
+<h3><a name="Hibernate-hibernate.cache.providerclass"></a>hibernate.cache.provider_class</h3>
 
 <p>OSCache and Hibernate 2.1 integrate though OSCacheProvider. </p>
 
-<div class="information-block" align='center'><div class='informationMacroPadding'><table cellpadding='5' width='85%' cellspacing='0' class='warningMacro' border='0'><tr><td width='16' valign='top'><img src="/images/icons/emoticons/forbidden.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td><b class="strong">Warning</b><br />
-<p>Unfortunately, at this time the OSCacheProvider distributed with Hibernate 2.1.x is not suited to clustering with OSCache.  A patch has been submitted to the Hibernate team but not yet applied.  Even if you do not require clustering, we recommend use of these patched versions of <a href="Hibernate 2.1 Cache Provider.html" title="Hibernate 2.1 Cache Provider">OSCacheProvider</a> and <a href="Hibernate 2.1 Cache Adapter.html" title="Hibernate 2.1 Cache Adapter">OSCache</a> for Hibernate 2.x and <a href="Hibernate 3 Cache Provider.html" title="Hibernate 3 Cache Provider">OSCacheProvider</a> and <a href="Hibernate 3 Cache Adaptor.html" title="Hibernate 3 Cache Adaptor">OSCache</a> for Hibernate 3.x.  Just cut-n-paste the code and use the provider class you create as the hibernate.cache.provider_class as shown below.</p></td></tr></table></div></div>
+<table cellpadding='5' width='85%' cellspacing='8px' class='warningMacro' border="0" align='center'><colgroup><col width='24'><col></colgroup><tr><td valign='top'><img src="/images/icons/emoticons/forbidden.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td><b class="strong">Warning</b><br />
+<p>Unfortunately, at this time the OSCacheProvider distributed with Hibernate 2.1.x is not suited to clustering with OSCache.  A patch has been submitted to the Hibernate team but not yet applied.  Even if you do not require clustering, we recommend use of these patched versions of <a href="Hibernate 2.1 Cache Provider.html" title="Hibernate 2.1 Cache Provider">OSCacheProvider</a> and <a href="Hibernate 2.1 Cache Adapter.html" title="Hibernate 2.1 Cache Adapter">OSCache</a> for Hibernate 2.x and <a href="Hibernate 3 Cache Provider.html" title="Hibernate 3 Cache Provider">OSCacheProvider</a> and <a href="Hibernate 3 Cache Adaptor.html" title="Hibernate 3 Cache Adaptor">OSCache</a> for Hibernate 3.x.  Just cut-n-paste the code and use the provider class you create as the hibernate.cache.provider_class as shown below.</p></td></tr></table>
 
 <p>To enable OSCache in Hibernate's configuration, add the following line to hibernate.cfg.xml:</p>
 
 
 <p>The default refresh period is <a href="http://www.opensymphony.com/oscache/api/com/opensymphony/oscache/base/CacheEntry.html#INDEFINITE_EXPIRY" title="Visit page outside Confluence">CacheEntry.INDEFINITE_EXPIRY</a>. The first time a cacheable query is done, the cache has no effect on speed. On the second and successive queries, the cache will be populated and available to be hit.</p>
 
-<div class="information-block" align='center'><div class='informationMacroPadding'><table cellpadding='5' width='85%' cellspacing='0' class='noteMacro' border='0'><tr><td width='16' valign='top'><img src="/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td><b class="strong">Object Identifiers</b><br />
-<p>Object identifiers must have well-behaved toString() methods, because OSCache uses the toString() method for the key of the cache.  Therefore it needs to create a unique identifier for the object being stored.</p></td></tr></table></div></div>
+<table cellpadding='5' width='85%' cellspacing='8px' class='noteMacro' border="0" align='center'><colgroup><col width='24'><col></colgroup><tr><td valign='top'><img src="/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td><b class="strong">Object Identifiers</b><br />
+<p>Object identifiers must have well-behaved toString() methods, because OSCache uses the toString() method for the key of the cache.  Therefore it needs to create a unique identifier for the object being stored.</p></td></tr></table>
 
-<h3><a name="Hibernate-CacheRegionConfiguration">Cache Region Configuration</a></h3>
+<h3><a name="Hibernate-CacheRegionConfiguration"></a>Cache Region Configuration</h3>
 
 <p>To modify the refresh period, CRON expression, add the region configuration to your <a href="Configuration.html" title="Configuration">oscache.properties</a> file, as demonstrated below:</p>
 
 
 <p>The com.mypackage.domain.Customer is Hibernate's internal cache region, which defaults to the classname, and which can be altered by setting Hibernate's configuration property <a href="http://www.hibernate.org/hib_docs/reference/html_single/#session-configuration-s5" title="Visit page outside Confluence">hibernate.cache.region_prefix</a> .</p>
 
-<h3><a name="Hibernate-SourceCode">Source Code</a></h3>
+<h3><a name="Hibernate-SourceCode"></a>Source Code</h3>
 
 <ul><li><a href="Hibernate 2.1 Cache Adapter.html" title="Hibernate 2.1 Cache Adapter">Hibernate 2.1 Cache Adapter</a></li><li><a href="Hibernate 2.1 Cache Provider.html" title="Hibernate 2.1 Cache Provider">Hibernate 2.1 Cache Provider</a></li><li><a href="Hibernate 3 Cache Adaptor.html" title="Hibernate 3 Cache Adaptor">Hibernate 3 Cache Adaptor</a></li><li><a href="Hibernate 3 Cache Provider.html" title="Hibernate 3 Cache Provider">Hibernate 3 Cache Provider</a></li></ul>
 

docs/wiki/Home.html

 	    <table class="pagecontent" border="0" cellpadding="0" cellspacing="0" width="100%" bgcolor="#ffffff">
 		    <tr>
 			    <td valign="top" class="pagebody">
-				    <h1><a name="Home-WelcometotheOSCachewiki.">Welcome to the OSCache wiki. </a></h1>
+				    <h1><a name="Home-WelcometotheOSCachewiki."></a>Welcome to the OSCache wiki. </h1>
 
 <p>OSCache is a caching solution that includes a JSP tag library and set of classes to perform fine grained dynamic caching of JSP content, servlet responses or arbitrary objects. It provides both in memory and persistent on disk caches, and can allow your site to have graceful error tolerance (eg if an error occurs like your db goes down, you can serve the cached content so people can still surf the site almost without knowing). Take a look at the great <a href="Feature List.html" title="Feature List">features</a> of OSCache.</p>
 
 
 <p>OSCache's official homepage is <a href="http://www.opensymphony.com/oscache/" title="Visit page outside Confluence">&#104;ttp://www.opensymphony.com/oscache/</a>. There you can find documentation for the latest released version of OSCache.</p>
 
-<h2><a name="Home-MostRecentNews">Most Recent News</a></h2>
+<h2><a name="Home-MostRecentNews"></a>Most Recent News</h2>
 
     
                     <div class="greybox" style="background: #f0f0f0; font-weight: bold; text-decoration:none; color: black;">
     <div class="blogHeading" style="margin-top: 0px; padding-top: 0px"><a style="text-decoration: none; color: black" href="/display/CACHE/2005/11/06/OSCache+2.2+Released">OSCache 2.2 Released</a></div>
 
     <div class="pagesubheading">
-                    Last changed: Nov 06, 2005 07:38 by     <a href="/display/~lars%2Bt">Lars Torunski</a>            </div>
+                    Last changed: Nov 06, 2005 07:38 by     <a href="/display/~lars%2Bt">Lars Torunski</a>                    </div>
         <div class="wiki-content">
          <p><a href="/display/CACHE/OSCache+2.2" title="OSCache 2.2">Version 2.2</a> of the popular open-source J2EE cache was released on 6th November 2005. Besides bugs being fixed, major improvements have been made to the <a href="/display/CACHE/CacheFilter" title="CacheFilter">CacheFilter</a> in many ways:</p>
 
     <div class="blogHeading" style="margin-top: 0px; padding-top: 0px"><a style="text-decoration: none; color: black" href="/display/CACHE/2005/09/18/OSCache+2.2+Release+Candidate">OSCache 2.2 Release Candidate</a></div>
 
     <div class="pagesubheading">
-                    Last changed: Nov 06, 2005 06:36 by     <a href="/display/~lars%2Bt">Lars Torunski</a>            </div>
+                    Last changed: Nov 06, 2005 06:36 by     <a href="/display/~lars%2Bt">Lars Torunski</a>                    </div>
         <div class="wiki-content">
          <p>A release candidate of <a href="/display/CACHE/OSCache+2.2+RC" title="OSCache 2.2 RC">version 2.2</a> is available and can be <span class="nobr"><a href="https://oscache.dev.java.net/servlets/ProjectDocumentList?folderID=4103" title="Visit page outside Confluence" rel="nofollow">downloaded<sup><img class="rendericon" src="/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> now. Besides bugs being fixed, major improvements have been made to the <a href="/display/CACHE/CacheFilter" title="CacheFilter">CacheFilter</a> in many ways:</p>
 
     <div class="blogHeading" style="margin-top: 0px; padding-top: 0px"><a style="text-decoration: none; color: black" href="/display/CACHE/2005/05/01/OSCache+2.1.1+Released">OSCache 2.1.1 Released</a></div>
 
     <div class="pagesubheading">
-            </div>
+                    </div>
         <div class="wiki-content">
          <p><a href="/display/CACHE/OSCache+2.1.1" title="OSCache 2.1.1">Version 2.1.1</a> of the popular open-source J2EE cache was released on 1st May 2005. This is a minor update to OSCache.  It fixes some small bugs and some minor concurrency issues.</p>
         </div>
     <div class="blogHeading" style="margin-top: 0px; padding-top: 0px"><a style="text-decoration: none; color: black" href="/display/CACHE/2005/01/23/OSCache+2.1+Released">OSCache 2.1 Released</a></div>
 
     <div class="pagesubheading">
-            </div>
+                    </div>
         <div class="wiki-content">
          <p><a href="/display/CACHE/OSCache+2.1" title="OSCache 2.1">Version 2.1</a> of the popular open-source J2EE cache was released on 18th January 2005. Besides many bugs being fixed, major improvements have been made to OSCache in the way data can be persisted. Also, this wiki has been created to expand on the existing documentation.</p>
         </div>

docs/wiki/Installation Guide.html

 	    <table class="pagecontent" border="0" cellpadding="0" cellspacing="0" width="100%" bgcolor="#ffffff">
 		    <tr>
 			    <td valign="top" class="pagebody">
-				    <p>This installation guide shows you how to configure OSCache for use inside your JSP pages. It assumes you have <a href="https://oscache.dev.java.net/servlets/ProjectDocumentList" title="Visit page outside Confluence">downloaded the latest version</a>, which requires at least <b>Java 1.4</b> and a <b>Servlet 2.3</b> container (part of J2EE 1.3). Read the <a href="requirements.html" title="Requirements">requirements</a> for more details.</p>
+				    <p>This installation guide shows you how to configure OSCache 2.3 for use inside your JSP pages. It assumes you have <a href="https://oscache.dev.java.net/servlets/ProjectDocumentList" title="Visit page outside Confluence">downloaded the latest version</a>, which requires at least <b>Java 1.4</b> and a <b>Servlet 2.3</b> container (part of J2EE 1.3). Read the <a href="requirements.html" title="Requirements">requirements</a> for more details.</p>
 
-<p>For <em>Java 1.3</em> and/or <em>Servlet 2.2</em> container (included in J2EE 1.2) developers we created a <a href="Legacy Installation Guide.html" title="Legacy Installation Guide">Legacy Installation Guide</a>.</p>
+<p>For <em>Java 1.3</em> developers we created a <a href="Legacy Installation Guide.html" title="Legacy Installation Guide">Legacy Installation Guide</a>.</p>
 
-<p>If you intend to use OSCache via the <a href="API Usage.html" title="API Usage">API</a> rather than via the <a href="JSP Tags.html" title="JSP Tags">taglibs</a>, these instructions do not apply. Just make sure <tt>oscache.jar</tt> and <tt>commons-collections.jar</tt> is somewhere on your application's classpath.</p>
+<p>If you intend to use OSCache via the <a href="API Usage.html" title="API Usage">API</a> rather than via the <a href="JSP Tags.html" title="JSP Tags">taglibs</a>, these instructions do not apply. Just make sure <tt>oscache.jar</tt> and <tt>commons-logging.jar</tt> are somewhere on your application's classpath.</p>
 
-<h4><a name="InstallationGuide-ExtractionSteps">Extraction Steps</a></h4>
+<h4><a name="InstallationGuide-ExtractionSteps"></a>Extraction Steps</h4>
 
 <ol>
 	<li>Extract the downloaded file to a directory of your choosing.</li>
 </ol>
 
 
-<div class="information-block" align='center'><div class='informationMacroPadding'><table cellpadding='5' width='85%' cellspacing='0' class='infoMacro' border='0'><tr><td width='16' valign='top'><img src="/images/icons/emoticons/information.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td><b class="strong">Windows</b><br />
-<p>Remember to escape any \ characters in Windows paths - e.g. if you want cache files to go in c:\cachedir, the <tt>cache.path</tt> property should be set to c:\ \cachedir.</p></td></tr></table></div></div>
+<table cellpadding='5' width='85%' cellspacing='8px' class='infoMacro' border="0" align='center'><colgroup><col width='24'><col></colgroup><tr><td valign='top'><img src="/images/icons/emoticons/information.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td><b class="strong">Windows</b><br />
+<p>Remember to escape any \ characters in Windows paths - e.g. if you want cache files to go in c:\cachedir, the <tt>cache.path</tt> property should be set to c:\ \cachedir.</p></td></tr></table>
 
-<h4><a name="InstallationGuide-InstallationSteps">Installation Steps</a></h4>
+<h4><a name="InstallationGuide-InstallationSteps"></a>Installation Steps</h4>
 
 <ol>
 	<li>Now add the appropriate <a href="JSP Tags.html" title="JSP Tags">JSP Tags</a> to your JSP files and you're done.</li>
 </ol>
 
 
-<h4><a name="InstallationGuide-FurtherInformation">Further Information</a></h4>
+<h4><a name="InstallationGuide-FurtherInformation"></a>Further Information</h4>
 
-<table width="100%" cellpadding="5" cellspacing="0"  class="sectionMacro"><tr>
+<table class="sectionMacro" border="0" cellpadding="5" cellspacing="0" width="100%"><tbody><tr>
 
-<td class="confluenceTd" valign="top" width="50%">
+<td class="confluenceTd"  valign="top" width="50%">
 
-<div class="information-block" align='center'><div class='informationMacroPadding'><table cellpadding='5' width='85%' cellspacing='0' class='infoMacro' border='0'><tr><td width='16' valign='top'><img src="/images/icons/emoticons/information.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td><b class="strong">Logging</b><br />
-<p>OSCache uses <a href="http://jakarta.apache.org/commons/logging/" title="Visit page outside Confluence">Jakarta Commons Logging</a> for logging any messages. Please see the <a href="http://jakarta.apache.org/commons/logging/guide.html#Configuration" title="Visit page outside Confluence">Commons Logging documentation</a> for details on logging configuration.</p></td></tr></table></div></div>
+<table cellpadding='5' width='85%' cellspacing='8px' class='infoMacro' border="0" align='center'><colgroup><col width='24'><col></colgroup><tr><td valign='top'><img src="/images/icons/emoticons/information.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td><b class="strong">Logging</b><br />
+<p>OSCache uses <a href="http://jakarta.apache.org/commons/logging/" title="Visit page outside Confluence">Jakarta Commons Logging</a> for logging any messages. Please see the <a href="http://jakarta.apache.org/commons/logging/guide.html#Configuration" title="Visit page outside Confluence">Commons Logging documentation</a> for details on logging configuration.</p></td></tr></table>
 </td>
 
-<td class="confluenceTd" valign="top" width="50%">
+<td class="confluenceTd"  valign="top" width="50%">
 
-<div class="information-block" align='center'><div class='informationMacroPadding'><table cellpadding='5' width='85%' cellspacing='0' class='tipMacro' border='0'><tr><td width='16' valign='top'><img src="/images/icons/emoticons/check.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td><b class="strong">Debugging</b><br />
-<p>Note that OSCache has been compiled with debugging information enabled so you should be able to use your favourite debugger to step through the source if need be.</p></td></tr></table></div></div>
+<table cellpadding='5' width='85%' cellspacing='8px' class='tipMacro' border="0" align='center'><colgroup><col width='24'><col></colgroup><tr><td valign='top'><img src="/images/icons/emoticons/check.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td><b class="strong">Debugging</b><br />
+<p>Note that OSCache has been compiled with debugging information enabled so you should be able to use your favourite debugger to step through the source if need be.</p></td></tr></table>
 </td>
-</tr></table>
+</tr></tbody></table>
 
                     			    </td>
 		    </tr>

docs/wiki/JSP Tags.html

 
 <p>For instructions on installing OSCache in a web application, see the <a href="Installation Guide.html" title="Installation Guide">Installation Guide</a>. You just have to add the following line declaring the OSCache custom tag library for use on the jsp page:</p>
 
-<div class="information-block" align='center'><div class='informationMacroPadding'><table cellpadding='5' width='85%' cellspacing='0' class='tipMacro' border='0'><tr><td width='16' valign='top'><img src="/images/icons/emoticons/check.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td><b class="strong">Taglib URI</b><br />
+<table cellpadding='5' width='85%' cellspacing='8px' class='tipMacro' border="0" align='center'><colgroup><col width='24'><col></colgroup><tr><td valign='top'><img src="/images/icons/emoticons/check.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td><b class="strong">Taglib URI</b><br />
 <p><tt>&lt;%@ taglib uri="http://www.opensymphony.com/oscache" prefix="oscache" %&gt;</tt></p>
 
-<p>In OSCache releases before 2.1.1 you have to change the URI to <tt>/oscache</tt>, see <a href="http://jira.opensymphony.com/browse/CACHE-61" title="Visit page outside Confluence">CACHE-61</a>.</p></td></tr></table></div></div>
+<p>In OSCache releases before 2.1.1 you have to change the URI to <tt>/oscache</tt>, see <a href="http://jira.opensymphony.com/browse/CACHE-61" title="Visit page outside Confluence">CACHE-61</a>.</p></td></tr></table>
 
-<h3><a name="JSPTags-Summary">Summary</a></h3>
+<h3><a name="JSPTags-Summary"></a>Summary</h3>
 
 <p>The tags are:</p>
 
 </ul>
 
 
-<div class="information-block" align='center'><div class='informationMacroPadding'><table cellpadding='5' width='85%' cellspacing='0' class='infoMacro' border='0'><tr><td width='16' valign='top'><img src="/images/icons/emoticons/information.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td><b class="strong">Tag Legend</b><br />
+<table cellpadding='5' width='85%' cellspacing='8px' class='infoMacro' border="0" align='center'><colgroup><col width='24'><col></colgroup><tr><td valign='top'><img src="/images/icons/emoticons/information.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td><b class="strong">Tag Legend</b><br />
 <ul>
 	<li>For all listed attributes,  <font color="red">req</font> means it that attribute is required and any value in <b>[ ]</b> is a default value. All attributes can accept runtime expressions.</li>
 </ul>
 	</ul>
 	</li>
 </ul>
-</td></tr></table></div></div>
+</td></tr></table>
 
 
-<h3><a name="JSPTags-%3Ccache%3E%3C%2Fcache%3E"><a name="JSPTags-cache"></a>&lt;cache&gt;&lt;/cache&gt;</a></h3>
+<h3><a name="JSPTags-%3Ccache%3E%3C%2Fcache%3E"></a><a name="JSPTags-cache"></a>&lt;cache&gt;&lt;/cache&gt;</h3>
 
-<h4><a name="JSPTags-Description%3A">Description:</a></h4>
+<h4><a name="JSPTags-Description%3A"></a>Description:</h4>
 
 <p>    This is the main tag of OSCache. The body of the tag will be cached according to the attributes specified. The first time a cache is used the body content is executed and cached.</p>
 
 
 <p>    If the cached body content is stale, the tag will execute the body again and recache the new body content. Otherwise it will serve the cached content and the body will be skipped (resulting in a large speed increase).</p>
 
-<h4><a name="JSPTags-Attributes%3A">Attributes:</a></h4>
+<h4><a name="JSPTags-Attributes%3A"></a>Attributes:</h4>
 
 <ul>
 	<li><b>key</b> - [The request URI + query string] - The cache key, any string. This should be unique for the given scope since duplicate keys will map to the same cache entry. The default value uses an escaped version of the URI and query string of the current page.<br/>
 </ul>
 
 
-<h3><a name="JSPTags-%3Cusecached%2F%3E"><a name="JSPTags-usecached"></a>&lt;usecached /&gt;</a></h3>
-<h4><a name="JSPTags-Description%3A">Description:</a></h4>
+<h3><a name="JSPTags-%3Cusecached%2F%3E"></a><a name="JSPTags-usecached"></a>&lt;usecached /&gt;</h3>
+<h4><a name="JSPTags-Description%3A"></a>Description:</h4>
 <p>This tag is nested within a &lt;cache&gt; tag and tells its parent whether or not to use the cached version.</p>
 
-<h4><a name="JSPTags-Attributes%3A">Attributes:</a></h4>
+<h4><a name="JSPTags-Attributes%3A"></a>Attributes:</h4>
 <ul>
 	<li><b>use</b> - [true] - A boolean that tells the tag whether or not to use the cached version. (true = use cached version). This is useful for<br/>
 programmatic control of the cache.
 </ul>
 
 
-<h3><a name="JSPTags-%3Cflush%2F%3E"><a name="JSPTags-flush"></a>&lt;flush /&gt;</a></h3>
+<h3><a name="JSPTags-%3Cflush%2F%3E"></a><a name="JSPTags-flush"></a>&lt;flush /&gt;</h3>
 
-<h4><a name="JSPTags-Description%3A">Description:</a></h4>
+<h4><a name="JSPTags-Description%3A"></a>Description:</h4>
 <p>    This tag is used to flush caches at runtime. It is especially useful because it can be coded into the administration section of your site so that admins can decide when to flush the caches.</p>
 
-<h4><a name="JSPTags-Attributes%3A">Attributes:</a></h4>
+<h4><a name="JSPTags-Attributes%3A"></a>Attributes:</h4>
 
 <ul>
 	<li><b>scope</b> - [all] - This decides what scope will be flushed. Valid values are "application", "session" and null. A null scope will flush all caches, regardless of their scope.</li>
     <span class="code-tag">&lt;cache:flush scope=<span class="code-quote">"application"</span> group=<span class="code-quote">"currencyData"</span> /&gt;</span></pre>
 </div></div>
 
-<h3><a name="JSPTags-%3Caddgroup%2F%3E"><a name="JSPTags-addgroup"></a>&lt;addgroup /&gt;</a></h3>
+<h3><a name="JSPTags-%3Caddgroup%2F%3E"></a><a name="JSPTags-addgroup"></a>&lt;addgroup /&gt;</h3>
 
-<h4><a name="JSPTags-Description%3A">Description:</a></h4>
+<h4><a name="JSPTags-Description%3A"></a>Description:</h4>
 
 <p>    This tag must be nested inside a &lt;cache:cache/&gt; tag. It allows a single group name to be dynamically added to a cached block. It is useful when the group a cached block should belong to are unknown until the block is actually rendered. As each group is 'discovered', this tag can be used to add the group to the block's group list.</p>
 
-<h4><a name="JSPTags-Attributes%3A">Attributes:</a></h4>
+<h4><a name="JSPTags-Attributes%3A"></a>Attributes:</h4>
 
 <ul>
 	<li><b>group</b> - <font color="red">req</font> - The name of the group to add the enclosing cache block to.</li>
     <span class="code-tag">&lt;/cache:cache&gt;</span></pre>
 </div></div>
 
-<h3><a name="JSPTags-%3Caddgroups%2F%3E%28Newinupcomingrelease2.3%29"><a name="JSPTags-addgroups"></a>&lt;addgroups /&gt; (New in upcoming release 2.3)</a></h3>
+<h3><a name="JSPTags-%3Caddgroups%2F%3E%28New%5C%21Since2.3%29"></a><a name="JSPTags-addgroups"></a>&lt;addgroups /&gt; (New&#33; Since 2.3)</h3>
 
-<h4><a name="JSPTags-Description%3A">Description:</a></h4>
+<h4><a name="JSPTags-Description%3A"></a>Description:</h4>
 
 <p>    This tag must be nested inside a &lt;cache:cache/&gt; tag. It allows a comma-delimited list of groups names to be dynamically added to a cached block with a single tag statement. As a group list is 'discovered', this tag can be used to add the groups to the block's group list.</p>
 
-<h4><a name="JSPTags-Attributes%3A">Attributes:</a></h4>
+<h4><a name="JSPTags-Attributes%3A"></a>Attributes:</h4>
 
 <ul>
 	<li><b>groups</b> - <font color="red">req</font> - The comma-delimited list of groups names to add the enclosing cache block to.</li>

docs/wiki/Legacy Installation Guide.html

 			    <td valign="top" class="pagebody">
 				    <p>This legacy installation guide shows you how to configure OSCache with Java 1.3 or in a Servlet 2.2 container (included in J2EE 1.2). The latest release may require at least Java 1.4 and/or a Servlet 2.3 container, hence you have to check the <a href="Change Log.html" title="Change Log">release notes</a> and download a release which fits to your enviroment.</p>
 
-<h4><a name="LegacyInstallationGuide-ExtractionSteps">Extraction Steps</a></h4>
+<h4><a name="LegacyInstallationGuide-ExtractionSteps"></a>Extraction Steps</h4>
 
 <ol>
 	<li>Extract the downloaded file to a directory of your choosing.</li>
 </ol>
 
 
-<h4><a name="LegacyInstallationGuide-InstallationSteps">Installation Steps</a></h4>
+<h4><a name="LegacyInstallationGuide-InstallationSteps"></a>Installation Steps</h4>
 
 <ol>
 	<li>Add the following to your web.xml file
 </ol>
 
 
-<div class="information-block" align='center'><div class='informationMacroPadding'><table cellpadding='5' width='85%' cellspacing='0' class='infoMacro' border='0'><tr><td width='16' valign='top'><img src="/images/icons/emoticons/information.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td><b class="strong">Logging</b><br />
-<p>OSCache uses <a href="http://jakarta.apache.org/commons/logging/" title="Visit page outside Confluence">Jakarta Commons Logging</a> for logging any messages. Please see the Commons Logging documentation for details on logging configuration.</p></td></tr></table></div></div>
+<table cellpadding='5' width='85%' cellspacing='8px' class='infoMacro' border="0" align='center'><colgroup><col width='24'><col></colgroup><tr><td valign='top'><img src="/images/icons/emoticons/information.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td><b class="strong">Logging</b><br />
+<p>OSCache uses <a href="http://jakarta.apache.org/commons/logging/" title="Visit page outside Confluence">Jakarta Commons Logging</a> for logging any messages. Please see the Commons Logging documentation for details on logging configuration.</p></td></tr></table>
 
-<div class="information-block" align='center'><div class='informationMacroPadding'><table cellpadding='5' width='85%' cellspacing='0' class='tipMacro' border='0'><tr><td width='16' valign='top'><img src="/images/icons/emoticons/check.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td><b class="strong">Debugging</b><br />
-<p>Note that OSCache has been compiled with debugging information enabled so you should be able to use your favourite debugger to step through the source if need be.</p></td></tr></table></div></div>
+<table cellpadding='5' width='85%' cellspacing='8px' class='tipMacro' border="0" align='center'><colgroup><col width='24'><col></colgroup><tr><td valign='top'><img src="/images/icons/emoticons/check.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td><b class="strong">Debugging</b><br />
+<p>Note that OSCache has been compiled with debugging information enabled so you should be able to use your favourite debugger to step through the source if need be.</p></td></tr></table>
 
-<div class="information-block" align='center'><div class='informationMacroPadding'><table cellpadding='5' width='85%' cellspacing='0' class='tipMacro' border='0'><tr><td width='16' valign='top'><img src="/images/icons/emoticons/check.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td><b class="strong">Servlet 2.3</b><br />
+<table cellpadding='5' width='85%' cellspacing='8px' class='tipMacro' border="0" align='center'><colgroup><col width='24'><col></colgroup><tr><td valign='top'><img src="/images/icons/emoticons/check.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td><b class="strong">Servlet 2.3</b><br />
 <p>You can omit putting the <tt>/etc/oscache.tld</tt> file in your <tt>/WEB-INF/classes</tt> directory and omit declaring OSCache in the <tt>WEB-INF/web.xml</tt>. You just have to add the following line declaring the OSCache custom tag library for use on the jsp page:</p>
 
 <p><tt>&lt;%@ taglib uri="http://www.opensymphony.com/oscache" prefix="oscache" %&gt;</tt></p>
 
 
-<p><em>Note: In OSCache releases before 2.1.1 you have to change the URI to <tt>/oscache</tt>, see <a href="http://jira.opensymphony.com/browse/CACHE-61" title="Visit page outside Confluence">CACHE-61</a>.</em></p></td></tr></table></div></div>
+<p><em>Note: In OSCache releases before 2.1.1 you have to change the URI to <tt>/oscache</tt>, see <a href="http://jira.opensymphony.com/browse/CACHE-61" title="Visit page outside Confluence">CACHE-61</a>.</em></p></td></tr></table>
 
                     			    </td>
 		    </tr>

docs/wiki/OSCache 1.0 beta 0.html

 	    <table class="pagecontent" border="0" cellpadding="0" cellspacing="0" width="100%" bgcolor="#ffffff">
 		    <tr>
 			    <td valign="top" class="pagebody">
-				    <h3><a name="OSCache1.0beta0-ReleaseNotes">Release Notes</a></h3>
+				    <h3><a name="OSCache1.0beta0-ReleaseNotes"></a>Release Notes</h3>
 
 <p>(26th November, 2000 - by Mike Cannon-Brookes, mike@atlassian.com)</p>
 

docs/wiki/OSCache 1.0 beta 1.html

 	    <table class="pagecontent" border="0" cellpadding="0" cellspacing="0" width="100%" bgcolor="#ffffff">
 		    <tr>
 			    <td valign="top" class="pagebody">
-				    <h3><a name="OSCache1.0beta1-ReleaseNotes">Release Notes</a></h3>
+				    <h3><a name="OSCache1.0beta1-ReleaseNotes"></a>Release Notes</h3>
 
 <p>(20th February, 2001 - by Mike Cannon-Brookes, mike@atlassian.com)</p>
 

docs/wiki/OSCache 1.0 beta 2.html

 	    <table class="pagecontent" border="0" cellpadding="0" cellspacing="0" width="100%" bgcolor="#ffffff">
 		    <tr>
 			    <td valign="top" class="pagebody">
-				    <h3><a name="OSCache1.0beta2-ReleaseNotes">Release Notes</a></h3>
+				    <h3><a name="OSCache1.0beta2-ReleaseNotes"></a>Release Notes</h3>
 
 <p>(20th March, 2001 - by Mike Cannon-Brookes, mike@atlassian.com)</p>
 

docs/wiki/OSCache 1.1.html

 	    <table class="pagecontent" border="0" cellpadding="0" cellspacing="0" width="100%" bgcolor="#ffffff">
 		    <tr>
 			    <td valign="top" class="pagebody">
-				    <h3><a name="OSCache1.1-ReleaseNotes">Release Notes</a></h3>
+				    <h3><a name="OSCache1.1-ReleaseNotes"></a>Release Notes</h3>
 
 <p>(25th March, 2001 - by Mike Cannon-Brookes, mike@atlassian.com)</p>
 

docs/wiki/OSCache 1.2.1.html

 	    <table class="pagecontent" border="0" cellpadding="0" cellspacing="0" width="100%" bgcolor="#ffffff">
 		    <tr>
 			    <td valign="top" class="pagebody">
-				    <h3><a name="OSCache1.2.1-ReleaseNotes">Release Notes</a></h3>
+				    <h3><a name="OSCache1.2.1-ReleaseNotes"></a>Release Notes</h3>
 
 <p>(10th May, 2001 - by Mike Cannon-Brookes, mike@atlassian.com)</p>
 

docs/wiki/OSCache 1.2.5.html

 	    <table class="pagecontent" border="0" cellpadding="0" cellspacing="0" width="100%" bgcolor="#ffffff">
 		    <tr>
 			    <td valign="top" class="pagebody">
-				    <h3><a name="OSCache1.2.5-ReleaseNotes">Release Notes</a></h3>
+				    <h3><a name="OSCache1.2.5-ReleaseNotes"></a>Release Notes</h3>
 
 <p>(18th May, 2001 - by Mike Cannon-Brookes, mike@atlassian.com)</p>