Commits

Anonymous committed 6bc9132

update WIKI

  • Participants
  • Parent commits bac52b6

Comments (0)

Files changed (19)

docs/wiki/CVS and Compiling OSCache.html

 
 <p>The OSCache CVS repository is hosted by <a href="http://www.java.net/" title="Visit page outside Confluence">java.net</a>.</p>
 
-<p>How to log in anonymously and to checkout the current CVS HEAD is described in <a href="https://oscache.dev.java.net/servlets/ProjectSource" title="Visit page outside Confluence">CVS client setup</a>.</p>
+<p>How to log in anonymously and to checkout the current CVS HEAD is described in <a href="https://oscache.dev.java.net/servlets/ProjectSource" title="Visit page outside Confluence">CVS client setup</a>. The repository is also browsable <a href="https://oscache.dev.java.net/source/browse/oscache/" title="Visit page outside Confluence">online</a>.</p>
 
-<p>The repository is also browsable <a href="https://oscache.dev.java.net/source/browse/oscache/" title="Visit page outside Confluence">online</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>
 
-<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 JDK 1.4 or later. From the OSCache directory, type</p>
+<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>
 
 <ul>
-	<li>ant - build the oscache.jar</li>
-	<li>ant dist - build the distribution (only for full CVS checkout)</li>
-	<li>ant clean - clean up</li>
+	<li>ant - to build the oscache.jar</li>
+	<li>ant dist - to build the distribution (only for full CVS checkout)</li>
+	<li>ant clean - to clean up</li>
 </ul>
 
 

docs/wiki/CacheFilter.html

 	    <table class="pagecontent" border="0" cellpadding="0" cellspacing="0" width="100%" bgcolor="#ffffff">
 		    <tr>
 			    <td valign="top" class="pagebody">
-				    <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, eg 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>
+				    <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>
 
 <p>Besides bugs being fixed in the upcoming 2.2 release, major improvements have been made to the CacheFilter in many ways:</p>
 
 
 <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%3Afragment%28NEW%21Since2.2RC%29">Parameter: fragment (NEW! Since 2.2 RC)</a></h4>
+<h4><a name="CacheFilter-Parameter%3Afragment%28NEW%21Since2.2%29">Parameter: fragment (NEW! Since 2.2)</a></h4>
 
-<p>Defines if the filter handles fragments of a page. Acceptable values are <em>auto</em> (<em>-1</em> in 2.2 RC) for auto detect, <em>no</em> (<em>0</em> in 2.2 RC) for false and <em>yes</em> (<em>1</em>  in 2.2 RC) 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>
+<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.2RC%29">Parameter: nocache (NEW! Since 2.2 RC)</a></h4>
+<h4><a name="CacheFilter-Parameter%3Anocache%28NEW%21Since2.2%29">Parameter: nocache (NEW! Since 2.2)</a></h4>
 
-<p>Defines which objects shouldn't be cached. Acceptable values are <em>off</em> (default) for caching all objects and <em>sessionIdInURL</em> if the session id is contained in the URL.</p>
+<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.2final%29">Parameter: lastModified (NEW! Since 2.2 final)</a></h4>
+<h4><a name="CacheFilter-Parameter%3AlastModified%28NEW%21Since2.2%29">Parameter: lastModified (NEW! Since 2.2)</a></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> the last modified information will be set based on current time.</p>
 
-<h4><a name="CacheFilter-Parameter%3Aexpires%28NEW%21Since2.2final%29">Parameter: expires (NEW! Since 2.2 final)</a></h4>
+<h4><a name="CacheFilter-Parameter%3Aexpires%28NEW%21Since2.2%29">Parameter: expires (NEW! Since 2.2)</a></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>
 
 <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.2RC%29">Parameter: ICacheKeyProvider (NEW! Since 2.2 RC)</a></h4>
+<h4><a name="CacheFilter-Parameter%3AICacheKeyProvider%28NEW%21Since2.2%29">Parameter: ICacheKeyProvider (NEW! Since 2.2)</a></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.2final%29">Parameter: ICacheGroupsProvider (NEW! Since 2.2 final)</a></h4>
+<h4><a name="CacheFilter-Parameter%3AICacheGroupsProvider%28NEW%21Since2.2%29">Parameter: ICacheGroupsProvider (NEW! Since 2.2)</a></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>
 

docs/wiki/Clustering.html

 
 <h3><a name="Clustering-JavaGroupsConfiguration">JavaGroups Configuration</a></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 JavaGrops broadcasting listener to your oscache.properties file like this:</p>
+<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>
 
 <div class="preformatted"><div class="preformattedContent">
 <pre>cache.event.listeners=com.opensymphony.oscache.plugins.clustersupport.JavaGroupsBroadcastingListener
 </pre>
 </div></div>
 
-<p>In most cases, that's it! OSCache will now broadcast any cache flush events across the LAN. The jgroups-all.jar library is not included with the binary distribution due to its size, however you can obtain it either by downloading the full oscache distribution, or by visiting the JavaGroups website.</p>
+<p>In most cases, that's it! OSCache will now broadcast any cache flush events across the LAN. The jgroups-all.jar library is not included with the binary distribution due to its size, however you can obtain it either by downloading the full OSCache distribution, or by visiting the <a href="http://www.jgroups.org" title="Visit page outside Confluence">JavaGroups website</a>.</p>
 
 <p>If you want to run more than one OSCache cluster on the same LAN, you will need to use different multicast IP addresses. This allows the caches to exist in separate multicast groups and therefore not interfere with each other. The IP to use can be specified in your oscache.properties file by the cache.cluster.multicast.ip property. The default value is 231.12.21.132, however you can use any class D IP address. Class D address fall in the range 224.0.0.0 through 239.255.255.255.</p>
 

docs/wiki/Complete Change Log.html

         <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>
-                <span class="smalltext">(11 issues)</span>
+                <span class="smalltext">(12 issues)</span>
             </th>
         </tr>
         <tr>
                     </tr>
                                             <tr class="rowNormal">
                                                             <td nowrap="true">
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-223"><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-223">CACHE-223</a>
+                                    </td>
+                                <td >
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-223">completeUpdate never being called after startUpdate() has been called, OSCache hangs for that key</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-211"><img src="http://jira.opensymphony.com/images/icons/task.gif" alt="Task" border="0" /></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">
+                                    <tr class="rowNormal">
                                                             <td nowrap="true">
                                             <a href="http://jira.opensymphony.com/browse/CACHE-210"><img src="http://jira.opensymphony.com/images/icons/task.gif" alt="Task" border="0" /></a>
                                     </td>
                                             <img src="http://jira.opensymphony.com/images/icons/status_closed.gif" alt="Closed" border="0" />Closed
                                     </td>
                             </tr>
-                                    <tr class="rowNormal">
+                                    <tr class="rowAlternate">
                                                             <td nowrap="true">
                                             <a href="http://jira.opensymphony.com/browse/CACHE-204"><img src="http://jira.opensymphony.com/images/icons/improvement.gif" alt="Improvement" border="0" /></a>
                                     </td>
                                             <img src="http://jira.opensymphony.com/images/icons/status_closed.gif" alt="Closed" border="0" />Closed
                                     </td>
                             </tr>
-                                    <tr class="rowAlternate">
+                                    <tr class="rowNormal">
                                                             <td nowrap="true">
                                             <a href="http://jira.opensymphony.com/browse/CACHE-203"><img src="http://jira.opensymphony.com/images/icons/task.gif" alt="Task" border="0" /></a>
                                     </td>
                                             <img src="http://jira.opensymphony.com/images/icons/status_closed.gif" alt="Closed" border="0" />Closed
                                     </td>
                             </tr>
-                                    <tr class="rowNormal">
+                                    <tr class="rowAlternate">
                                                             <td nowrap="true">
                                             <a href="http://jira.opensymphony.com/browse/CACHE-202"><img src="http://jira.opensymphony.com/images/icons/bug.gif" alt="Bug" border="0" /></a>
                                     </td>
                                             <img src="http://jira.opensymphony.com/images/icons/status_closed.gif" alt="Closed" border="0" />Closed
                                     </td>
                             </tr>
-                                    <tr class="rowAlternate">
+                                    <tr class="rowNormal">
                                                             <td nowrap="true">
                                             <a href="http://jira.opensymphony.com/browse/CACHE-201"><img src="http://jira.opensymphony.com/images/icons/bug.gif" alt="Bug" border="0" /></a>
                                     </td>
                                             <img src="http://jira.opensymphony.com/images/icons/status_closed.gif" alt="Closed" border="0" />Closed
                                     </td>
                             </tr>
-                                    <tr class="rowNormal">
+                                    <tr class="rowAlternate">
                                                             <td nowrap="true">
                                             <a href="http://jira.opensymphony.com/browse/CACHE-199"><img src="http://jira.opensymphony.com/images/icons/task.gif" alt="Task" border="0" /></a>
                                     </td>
                                             <img src="http://jira.opensymphony.com/images/icons/status_closed.gif" alt="Closed" border="0" />Closed
                                     </td>
                             </tr>
-                                    <tr class="rowAlternate">
+                                    <tr class="rowNormal">
                                                             <td nowrap="true">
                                             <a href="http://jira.opensymphony.com/browse/CACHE-198"><img src="http://jira.opensymphony.com/images/icons/task.gif" alt="Task" border="0" /></a>
                                     </td>
                                             <img src="http://jira.opensymphony.com/images/icons/status_closed.gif" alt="Closed" border="0" />Closed
                                     </td>
                             </tr>
-                                    <tr class="rowNormal">
+                                    <tr class="rowAlternate">
                                                             <td nowrap="true">
                                             <a href="http://jira.opensymphony.com/browse/CACHE-196"><img src="http://jira.opensymphony.com/images/icons/improvement.gif" alt="Improvement" border="0" /></a>
                                     </td>
                                             <img src="http://jira.opensymphony.com/images/icons/status_closed.gif" alt="Closed" border="0" />Closed
                                     </td>
                             </tr>
-                                    <tr class="rowAlternate">
+                                    <tr class="rowNormal">
                                                             <td nowrap="true">
                                             <a href="http://jira.opensymphony.com/browse/CACHE-195"><img src="http://jira.opensymphony.com/images/icons/improvement.gif" alt="Improvement" border="0" /></a>
                                     </td>
                                             <img src="http://jira.opensymphony.com/images/icons/status_closed.gif" alt="Closed" border="0" />Closed
                                     </td>
                             </tr>
-                                    <tr class="rowNormal">
+                                    <tr class="rowAlternate">
                                                             <td nowrap="true">
                                             <a href="http://jira.opensymphony.com/browse/CACHE-194"><img src="http://jira.opensymphony.com/images/icons/task.gif" alt="Task" border="0" /></a>
                                     </td>
                                             <a href="http://jira.opensymphony.com/browse/CACHE-194">Update Documentation</a>
                                     </td>
                                 <td nowrap="true">
-                                            <img src="http://jira.opensymphony.com/images/icons/status_inprogress.gif" alt="In Progress" border="0" />In Progress
+                                            <img src="http://jira.opensymphony.com/images/icons/status_closed.gif" alt="Closed" border="0" />Closed
                                     </td>
                             </tr>
             </table>
                                             <a href="http://jira.opensymphony.com/browse/CACHE-185">Filtered requests will be re-requested twice</a>
                                     </td>
                                 <td nowrap="true">
-                                            <img src="http://jira.opensymphony.com/images/icons/status_resolved.gif" alt="Resolved" border="0" />Resolved
+                                            <img src="http://jira.opensymphony.com/images/icons/status_closed.gif" alt="Closed" border="0" />Closed
                                     </td>
                             </tr>
                                     <tr class="rowNormal">
                                             <a href="http://jira.opensymphony.com/browse/CACHE-174">Regression in fix of CACHE-170: UpdateStateEntry may leak when entry are removed</a>
                                     </td>
                                 <td nowrap="true">
-                                            <img src="http://jira.opensymphony.com/images/icons/status_resolved.gif" alt="Resolved" border="0" />Resolved
+                                            <img src="http://jira.opensymphony.com/images/icons/status_closed.gif" alt="Closed" border="0" />Closed
                                     </td>
                             </tr>
                                     <tr class="rowAlternate">
                                             <a href="http://jira.opensymphony.com/browse/CACHE-155">Support of GZip filters in the filter chain</a>
                                     </td>
                                 <td nowrap="true">
-                                            <img src="http://jira.opensymphony.com/images/icons/status_resolved.gif" alt="Resolved" border="0" />Resolved
+                                            <img src="http://jira.opensymphony.com/images/icons/status_closed.gif" alt="Closed" border="0" />Closed
                                     </td>
                             </tr>
                                     <tr class="rowAlternate">
                                             <a href="http://jira.opensymphony.com/browse/CACHE-154">NullPointerException in JavaGroupsBroadcastingListener</a>
                                     </td>
                                 <td nowrap="true">
-                                            <img src="http://jira.opensymphony.com/images/icons/status_resolved.gif" alt="Resolved" border="0" />Resolved
+                                            <img src="http://jira.opensymphony.com/images/icons/status_closed.gif" alt="Closed" border="0" />Closed
                                     </td>
                             </tr>
                                     <tr class="rowNormal">
                                             <a href="http://jira.opensymphony.com/browse/CACHE-148">getInstance call not thread-safe</a>
                                     </td>
                                 <td nowrap="true">
-                                            <img src="http://jira.opensymphony.com/images/icons/status_resolved.gif" alt="Resolved" border="0" />Resolved
+                                            <img src="http://jira.opensymphony.com/images/icons/status_closed.gif" alt="Closed" border="0" />Closed
                                     </td>
                             </tr>
                                     <tr class="rowAlternate">
                                             <a href="http://jira.opensymphony.com/browse/CACHE-144">CacheTag doesn't  clear variables in doStartTag / doFinally</a>
                                     </td>
                                 <td nowrap="true">
-                                            <img src="http://jira.opensymphony.com/images/icons/status_resolved.gif" alt="Resolved" border="0" />Resolved
+                                            <img src="http://jira.opensymphony.com/images/icons/status_closed.gif" alt="Closed" border="0" />Closed
                                     </td>
                             </tr>
                                     <tr class="rowNormal">
                                             <a href="http://jira.opensymphony.com/browse/CACHE-143">Report expected expiry to clients/browsers/proxy</a>
                                     </td>
                                 <td nowrap="true">
-                                            <img src="http://jira.opensymphony.com/images/icons/status_resolved.gif" alt="Resolved" border="0" />Resolved
+                                            <img src="http://jira.opensymphony.com/images/icons/status_closed.gif" alt="Closed" border="0" />Closed
                                     </td>
                             </tr>
                                     <tr class="rowAlternate">
                                             <a href="http://jira.opensymphony.com/browse/CACHE-135">CacheFilter for fragements of a page</a>
                                     </td>
                                 <td nowrap="true">
-                                            <img src="http://jira.opensymphony.com/images/icons/status_resolved.gif" alt="Resolved" border="0" />Resolved
+                                            <img src="http://jira.opensymphony.com/images/icons/status_closed.gif" alt="Closed" border="0" />Closed
                                     </td>
                             </tr>
                                     <tr class="rowAlternate">
                                             <a href="http://jira.opensymphony.com/browse/CACHE-128">Multiple matching filters will dead-lock the response</a>
                                     </td>
                                 <td nowrap="true">
-                                            <img src="http://jira.opensymphony.com/images/icons/status_resolved.gif" alt="Resolved" border="0" />Resolved
+                                            <img src="http://jira.opensymphony.com/images/icons/status_closed.gif" alt="Closed" border="0" />Closed
                                     </td>
                             </tr>
                                     <tr class="rowAlternate">
                                             <a href="http://jira.opensymphony.com/browse/CACHE-120">New nocache option when body contains a jsessionid</a>
                                     </td>
                                 <td nowrap="true">
-                                            <img src="http://jira.opensymphony.com/images/icons/status_resolved.gif" alt="Resolved" border="0" />Resolved
+                                            <img src="http://jira.opensymphony.com/images/icons/status_closed.gif" alt="Closed" border="0" />Closed
                                     </td>
                             </tr>
                                     <tr class="rowNormal">
                                             <a href="http://jira.opensymphony.com/browse/CACHE-83">CacheHttpServletResponseWrapper &amp; ResponseContent dont preserver Http headers</a>
                                     </td>
                                 <td nowrap="true">
-                                            <img src="http://jira.opensymphony.com/images/icons/status_resolved.gif" alt="Resolved" border="0" />Resolved
+                                            <img src="http://jira.opensymphony.com/images/icons/status_closed.gif" alt="Closed" border="0" />Closed
                                     </td>
                             </tr>
                                     <tr class="rowAlternate">

docs/wiki/Configuration.html

 
 <h4><a name="Configuration-cache.persistence.class">cache.persistence.class</a></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>
+<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>
 

docs/wiki/Hibernate 2.1 Cache Adapter.html

+<html>
+    <head>
+        <title>OSCache - 
+        Hibernate 2.1 Cache Adapter
+         </title>
+	    <link rel="stylesheet" href="styles/site.css" type="text/css" />
+        <META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+    </head>
+
+    <body>
+	    <table class="pagecontent" border="0" cellpadding="0" cellspacing="0" width="100%" bgcolor="#ffffff">
+		    <tr>
+			    <td valign="top" class="pagebody">
+				    <p>Patched version of OSCache.java originally created by Mathias Bogaert.</p>
+
+<div class="code" style="border-style: solid; "><div class="codeHeader" style="border-bottom-style: solid; "><b>OSCache.java</b></div><div class="codeContent">
+<pre class="code-java"><span class="code-keyword">import</span> java.util.Properties;
+
+<span class="code-keyword">import</span> net.sf.hibernate.cache.Cache;
+<span class="code-keyword">import</span> net.sf.hibernate.cache.CacheException;
+<span class="code-keyword">import</span> net.sf.hibernate.cache.Timestamper;
+<span class="code-keyword">import</span> net.sf.hibernate.util.PropertiesHelper;
+<span class="code-keyword">import</span> net.sf.hibernate.util.StringHelper;
+
+<span class="code-keyword">import</span> com.opensymphony.oscache.base.Config;
+<span class="code-keyword">import</span> com.opensymphony.oscache.base.CacheEntry;
+<span class="code-keyword">import</span> com.opensymphony.oscache.base.NeedsRefreshException;
+<span class="code-keyword">import</span> com.opensymphony.oscache.general.GeneralCacheAdministrator;
+
+/**
+ * Adapter <span class="code-keyword">for</span> the OSCache implementation
+ */
+<span class="code-keyword">public</span> class OSCache <span class="code-keyword">implements</span> Cache {
+    
+    /** 
+     * The &lt;tt&gt;OSCache&lt;/tt&gt; cache capacity property suffix. 
+     */
+    <span class="code-keyword">public</span> <span class="code-keyword">static</span> <span class="code-keyword">final</span> <span class="code-object">String</span> OSCACHE_CAPACITY = <span class="code-quote">"cache.capacity"</span>;
+
+    <span class="code-keyword">private</span> <span class="code-keyword">static</span> <span class="code-keyword">final</span> Properties OSCACHE_PROPERTIES = <span class="code-keyword">new</span> Config().getProperties();
+	/** 
+	 * The OSCache 2.0 cache administrator. 
+	 */
+	<span class="code-keyword">private</span> <span class="code-keyword">static</span> GeneralCacheAdministrator cache = <span class="code-keyword">new</span> GeneralCacheAdministrator();
+
+    <span class="code-keyword">private</span> <span class="code-keyword">static</span> <span class="code-object">Integer</span> capacity = PropertiesHelper.getInteger(OSCACHE_CAPACITY, OSCACHE_PROPERTIES);
+
+    <span class="code-keyword">static</span> {
+        <span class="code-keyword">if</span> (capacity != <span class="code-keyword">null</span>) cache.setCacheCapacity(capacity.intValue());
+    }
+    
+	<span class="code-keyword">private</span> <span class="code-keyword">final</span> <span class="code-object">int</span> refreshPeriod;
+	<span class="code-keyword">private</span> <span class="code-keyword">final</span> <span class="code-object">String</span> cron;
+	<span class="code-keyword">private</span> <span class="code-keyword">final</span> <span class="code-object">String</span> regionName;
+    <span class="code-keyword">private</span> <span class="code-keyword">final</span> <span class="code-object">String</span>[] regionGroups;
+	
+	<span class="code-keyword">private</span> <span class="code-object">String</span> toString(<span class="code-object">Object</span> key) {
+		<span class="code-keyword">return</span> <span class="code-object">String</span>.valueOf(key) + StringHelper.DOT + regionName;
+	}
+
+	<span class="code-keyword">public</span> OSCache(<span class="code-object">int</span> refreshPeriod, <span class="code-object">String</span> cron, <span class="code-object">String</span> region) {
+		<span class="code-keyword">this</span>.refreshPeriod = refreshPeriod;
+		<span class="code-keyword">this</span>.cron = cron;
+		<span class="code-keyword">this</span>.regionName = region;
+        <span class="code-keyword">this</span>.regionGroups = <span class="code-keyword">new</span> <span class="code-object">String</span>[] {region};
+	}
+
+	<span class="code-keyword">public</span> <span class="code-object">Object</span> get(<span class="code-object">Object</span> key) <span class="code-keyword">throws</span> CacheException {
+		<span class="code-keyword">try</span> {
+			<span class="code-keyword">return</span> cache.getFromCache( toString(key), refreshPeriod, cron );
+		}
+		<span class="code-keyword">catch</span> (NeedsRefreshException e) {
+			cache.cancelUpdate( toString(key) );
+			<span class="code-keyword">return</span> <span class="code-keyword">null</span>;
+		}
+	}
+
+	<span class="code-keyword">public</span> void put(<span class="code-object">Object</span> key, <span class="code-object">Object</span> value) <span class="code-keyword">throws</span> CacheException {
+		cache.putInCache( toString(key), value, regionGroups );
+	}
+
+	<span class="code-keyword">public</span> void remove(<span class="code-object">Object</span> key) <span class="code-keyword">throws</span> CacheException {
+		cache.flushEntry( toString(key) );
+	}
+
+	<span class="code-keyword">public</span> void clear() <span class="code-keyword">throws</span> CacheException {
+		cache.flushGroup(regionName);
+	}
+
+	<span class="code-keyword">public</span> void destroy() <span class="code-keyword">throws</span> CacheException {
+		<span class="code-keyword">synchronized</span> (cache) {
+		    cache.destroy();
+        }
+	}
+
+	<span class="code-keyword">public</span> void lock(<span class="code-object">Object</span> key) <span class="code-keyword">throws</span> CacheException {
+		<span class="code-comment">// local cache, so we use synchronization
+</span>	}
+
+	<span class="code-keyword">public</span> void unlock(<span class="code-object">Object</span> key) <span class="code-keyword">throws</span> CacheException {
+		<span class="code-comment">// local cache, so we use synchronization
+</span>	}
+
+	<span class="code-keyword">public</span> <span class="code-object">long</span> nextTimestamp() {
+		<span class="code-keyword">return</span> Timestamper.next();
+	}
+
+	<span class="code-keyword">public</span> <span class="code-object">int</span> getTimeout() {
+		<span class="code-keyword">return</span> CacheEntry.INDEFINITE_EXPIRY;
+	}
+
+}</pre>
+</div></div> 
+
+                    			    </td>
+		    </tr>
+	    </table>
+    </body>
+</html>

docs/wiki/Hibernate 2.1 Cache Provider.html

+<html>
+    <head>
+        <title>OSCache - 
+        Hibernate 2.1 Cache Provider
+         </title>
+	    <link rel="stylesheet" href="styles/site.css" type="text/css" />
+        <META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+    </head>
+
+    <body>
+	    <table class="pagecontent" border="0" cellpadding="0" cellspacing="0" width="100%" bgcolor="#ffffff">
+		    <tr>
+			    <td valign="top" class="pagebody">
+				    <p>Patched version of OSCacheProvider.java originally created by Mathias Bogaert.</p>
+
+<div class="code" style="border-style: solid; "><div class="codeHeader" style="border-bottom-style: solid; "><b>OSCacheProvider.java</b></div><div class="codeContent">
+<pre class="code-java"><span class="code-keyword">import</span> java.util.Properties;
+
+<span class="code-keyword">import</span> net.sf.hibernate.cache.Cache;
+<span class="code-keyword">import</span> net.sf.hibernate.cache.CacheException;
+<span class="code-keyword">import</span> net.sf.hibernate.cache.CacheProvider;
+<span class="code-keyword">import</span> net.sf.hibernate.cache.Timestamper;
+<span class="code-keyword">import</span> net.sf.hibernate.util.PropertiesHelper;
+<span class="code-keyword">import</span> net.sf.hibernate.util.StringHelper;
+
+<span class="code-keyword">import</span> com.opensymphony.oscache.base.CacheEntry;
+<span class="code-keyword">import</span> com.opensymphony.oscache.base.Config;
+
+/**
+ * Support <span class="code-keyword">for</span> OpenSymphony OSCache. This implementation assumes
+ * that identifiers have well-behaved &lt;tt&gt;toString()&lt;/tt&gt; methods.
+ */
+<span class="code-keyword">public</span> class OSCacheProvider <span class="code-keyword">implements</span> CacheProvider {
+
+	/** 
+	 * The &lt;tt&gt;OSCache&lt;/tt&gt; refresh period property suffix. 
+	 */
+	<span class="code-keyword">public</span> <span class="code-keyword">static</span> <span class="code-keyword">final</span> <span class="code-object">String</span> OSCACHE_REFRESH_PERIOD = <span class="code-quote">"refresh.period"</span>;
+	/** 
+	 * The &lt;tt&gt;OSCache&lt;/tt&gt; CRON expression property suffix. 
+	 */
+	<span class="code-keyword">public</span> <span class="code-keyword">static</span> <span class="code-keyword">final</span> <span class="code-object">String</span> OSCACHE_CRON = <span class="code-quote">"cron"</span>;
+	
+	<span class="code-keyword">private</span> <span class="code-keyword">static</span> <span class="code-keyword">final</span> Properties OSCACHE_PROPERTIES = <span class="code-keyword">new</span> Config().getProperties();
+
+	/**
+	 * Builds a <span class="code-keyword">new</span> {@link Cache} instance, and gets it's properties from the OSCache {@link Config}
+	 * which reads the properties file (&lt;code&gt;oscache.properties&lt;/code&gt;) from the classpath.
+	 * If the file cannot be found or loaded, an the defaults are used.
+	 *
+	 * @param region
+	 * @param properties
+	 * @<span class="code-keyword">return</span>
+	 * @<span class="code-keyword">throws</span> CacheException
+	 */
+	<span class="code-keyword">public</span> Cache buildCache(<span class="code-object">String</span> region, Properties properties) <span class="code-keyword">throws</span> CacheException {
+
+		<span class="code-object">int</span> refreshPeriod = PropertiesHelper.getInt(
+			StringHelper.qualify(region, OSCACHE_REFRESH_PERIOD), 
+			OSCACHE_PROPERTIES, 
+			CacheEntry.INDEFINITE_EXPIRY
+		);
+		<span class="code-object">String</span> cron = OSCACHE_PROPERTIES.getProperty( StringHelper.qualify(region, OSCACHE_CRON) );
+
+		<span class="code-comment">// construct the cache        
+</span>        <span class="code-keyword">return</span> <span class="code-keyword">new</span> OSCache(refreshPeriod, cron, region);
+	}
+
+	<span class="code-keyword">public</span> <span class="code-object">long</span> nextTimestamp() {
+		<span class="code-keyword">return</span> Timestamper.next();
+	}
+
+}</pre>
+</div></div>
+
+                    			    </td>
+		    </tr>
+	    </table>
+    </body>
+</html>

docs/wiki/Hibernate Cache Adapter.html

-<html>
-    <head>
-        <title>OSCache - 
-        Hibernate Cache Adapter
-         </title>
-	    <link rel="stylesheet" href="styles/site.css" type="text/css" />
-        <META http-equiv="Content-Type" content="text/html; charset=UTF-8">
-    </head>
-
-    <body>
-	    <table class="pagecontent" border="0" cellpadding="0" cellspacing="0" width="100%" bgcolor="#ffffff">
-		    <tr>
-			    <td valign="top" class="pagebody">
-				    <p>Patched version of OSCache.java originally created by Mathias Bogaert.</p>
-
-<div class="code" style="border-style: solid; "><div class="codeHeader" style="border-bottom-style: solid; "><b>OSCache.java</b></div><div class="codeContent">
-<pre class="code-java"><span class="code-keyword">import</span> java.util.Properties;
-
-<span class="code-keyword">import</span> net.sf.hibernate.cache.Cache;
-<span class="code-keyword">import</span> net.sf.hibernate.cache.CacheException;
-<span class="code-keyword">import</span> net.sf.hibernate.cache.Timestamper;
-<span class="code-keyword">import</span> net.sf.hibernate.util.PropertiesHelper;
-<span class="code-keyword">import</span> net.sf.hibernate.util.StringHelper;
-
-<span class="code-keyword">import</span> com.opensymphony.oscache.base.Config;
-<span class="code-keyword">import</span> com.opensymphony.oscache.base.CacheEntry;
-<span class="code-keyword">import</span> com.opensymphony.oscache.base.NeedsRefreshException;
-<span class="code-keyword">import</span> com.opensymphony.oscache.general.GeneralCacheAdministrator;
-
-/**
- * Adapter <span class="code-keyword">for</span> the OSCache implementation
- */
-<span class="code-keyword">public</span> class OSCache <span class="code-keyword">implements</span> Cache {
-    
-    /** 
-     * The &lt;tt&gt;OSCache&lt;/tt&gt; cache capacity property suffix. 
-     */
-    <span class="code-keyword">public</span> <span class="code-keyword">static</span> <span class="code-keyword">final</span> <span class="code-object">String</span> OSCACHE_CAPACITY = <span class="code-quote">"cache.capacity"</span>;
-
-    <span class="code-keyword">private</span> <span class="code-keyword">static</span> <span class="code-keyword">final</span> Properties OSCACHE_PROPERTIES = <span class="code-keyword">new</span> Config().getProperties();
-	/** 
-	 * The OSCache 2.0 cache administrator. 
-	 */
-	<span class="code-keyword">private</span> <span class="code-keyword">static</span> GeneralCacheAdministrator cache = <span class="code-keyword">new</span> GeneralCacheAdministrator();
-
-    <span class="code-keyword">private</span> <span class="code-keyword">static</span> <span class="code-object">Integer</span> capacity = PropertiesHelper.getInteger(OSCACHE_CAPACITY, OSCACHE_PROPERTIES);
-
-    <span class="code-keyword">static</span> {
-        <span class="code-keyword">if</span> (capacity != <span class="code-keyword">null</span>) cache.setCacheCapacity(capacity.intValue());
-    }
-    
-	<span class="code-keyword">private</span> <span class="code-keyword">final</span> <span class="code-object">int</span> refreshPeriod;
-	<span class="code-keyword">private</span> <span class="code-keyword">final</span> <span class="code-object">String</span> cron;
-	<span class="code-keyword">private</span> <span class="code-keyword">final</span> <span class="code-object">String</span> regionName;
-    <span class="code-keyword">private</span> <span class="code-keyword">final</span> <span class="code-object">String</span>[] regionGroups;
-	
-	<span class="code-keyword">private</span> <span class="code-object">String</span> toString(<span class="code-object">Object</span> key) {
-		<span class="code-keyword">return</span> <span class="code-object">String</span>.valueOf(key) + StringHelper.DOT + regionName;
-	}
-
-	<span class="code-keyword">public</span> OSCache(<span class="code-object">int</span> refreshPeriod, <span class="code-object">String</span> cron, <span class="code-object">String</span> region) {
-		<span class="code-keyword">this</span>.refreshPeriod = refreshPeriod;
-		<span class="code-keyword">this</span>.cron = cron;
-		<span class="code-keyword">this</span>.regionName = region;
-        <span class="code-keyword">this</span>.regionGroups = <span class="code-keyword">new</span> <span class="code-object">String</span>[] {region};
-	}
-
-	<span class="code-keyword">public</span> <span class="code-object">Object</span> get(<span class="code-object">Object</span> key) <span class="code-keyword">throws</span> CacheException {
-		<span class="code-keyword">try</span> {
-			<span class="code-keyword">return</span> cache.getFromCache( toString(key), refreshPeriod, cron );
-		}
-		<span class="code-keyword">catch</span> (NeedsRefreshException e) {
-			cache.cancelUpdate( toString(key) );
-			<span class="code-keyword">return</span> <span class="code-keyword">null</span>;
-		}
-	}
-
-	<span class="code-keyword">public</span> void put(<span class="code-object">Object</span> key, <span class="code-object">Object</span> value) <span class="code-keyword">throws</span> CacheException {
-		cache.putInCache( toString(key), value, regionGroups );
-	}
-
-	<span class="code-keyword">public</span> void remove(<span class="code-object">Object</span> key) <span class="code-keyword">throws</span> CacheException {
-		cache.flushEntry( toString(key) );
-	}
-
-	<span class="code-keyword">public</span> void clear() <span class="code-keyword">throws</span> CacheException {
-		cache.flushGroup(regionName);
-	}
-
-	<span class="code-keyword">public</span> void destroy() <span class="code-keyword">throws</span> CacheException {
-		<span class="code-keyword">synchronized</span> (cache) {
-		    cache.destroy();
-        }
-	}
-
-	<span class="code-keyword">public</span> void lock(<span class="code-object">Object</span> key) <span class="code-keyword">throws</span> CacheException {
-		<span class="code-comment">// local cache, so we use synchronization
-</span>	}
-
-	<span class="code-keyword">public</span> void unlock(<span class="code-object">Object</span> key) <span class="code-keyword">throws</span> CacheException {
-		<span class="code-comment">// local cache, so we use synchronization
-</span>	}
-
-	<span class="code-keyword">public</span> <span class="code-object">long</span> nextTimestamp() {
-		<span class="code-keyword">return</span> Timestamper.next();
-	}
-
-	<span class="code-keyword">public</span> <span class="code-object">int</span> getTimeout() {
-		<span class="code-keyword">return</span> CacheEntry.INDEFINITE_EXPIRY;
-	}
-
-}</pre>
-</div></div> 
-
-                    			    </td>
-		    </tr>
-	    </table>
-    </body>
-</html>

docs/wiki/Hibernate Cache Provider.html

-<html>
-    <head>
-        <title>OSCache - 
-        Hibernate Cache Provider
-         </title>
-	    <link rel="stylesheet" href="styles/site.css" type="text/css" />
-        <META http-equiv="Content-Type" content="text/html; charset=UTF-8">
-    </head>
-
-    <body>
-	    <table class="pagecontent" border="0" cellpadding="0" cellspacing="0" width="100%" bgcolor="#ffffff">
-		    <tr>
-			    <td valign="top" class="pagebody">
-				    <p>Patched version of OSCacheProvider.java originally created by Mathias Bogaert.</p>
-
-<div class="code" style="border-style: solid; "><div class="codeHeader" style="border-bottom-style: solid; "><b>OSCacheProvider.java</b></div><div class="codeContent">
-<pre class="code-java"><span class="code-keyword">import</span> java.util.Properties;
-
-<span class="code-keyword">import</span> net.sf.hibernate.cache.Cache;
-<span class="code-keyword">import</span> net.sf.hibernate.cache.CacheException;
-<span class="code-keyword">import</span> net.sf.hibernate.cache.CacheProvider;
-<span class="code-keyword">import</span> net.sf.hibernate.cache.Timestamper;
-<span class="code-keyword">import</span> net.sf.hibernate.util.PropertiesHelper;
-<span class="code-keyword">import</span> net.sf.hibernate.util.StringHelper;
-
-<span class="code-keyword">import</span> com.opensymphony.oscache.base.CacheEntry;
-<span class="code-keyword">import</span> com.opensymphony.oscache.base.Config;
-
-/**
- * Support <span class="code-keyword">for</span> OpenSymphony OSCache. This implementation assumes
- * that identifiers have well-behaved &lt;tt&gt;toString()&lt;/tt&gt; methods.
- */
-<span class="code-keyword">public</span> class OSCacheProvider <span class="code-keyword">implements</span> CacheProvider {
-
-	/** 
-	 * The &lt;tt&gt;OSCache&lt;/tt&gt; refresh period property suffix. 
-	 */
-	<span class="code-keyword">public</span> <span class="code-keyword">static</span> <span class="code-keyword">final</span> <span class="code-object">String</span> OSCACHE_REFRESH_PERIOD = <span class="code-quote">"refresh.period"</span>;
-	/** 
-	 * The &lt;tt&gt;OSCache&lt;/tt&gt; CRON expression property suffix. 
-	 */
-	<span class="code-keyword">public</span> <span class="code-keyword">static</span> <span class="code-keyword">final</span> <span class="code-object">String</span> OSCACHE_CRON = <span class="code-quote">"cron"</span>;
-	
-	<span class="code-keyword">private</span> <span class="code-keyword">static</span> <span class="code-keyword">final</span> Properties OSCACHE_PROPERTIES = <span class="code-keyword">new</span> Config().getProperties();
-
-	/**
-	 * Builds a <span class="code-keyword">new</span> {@link Cache} instance, and gets it's properties from the OSCache {@link Config}
-	 * which reads the properties file (&lt;code&gt;oscache.properties&lt;/code&gt;) from the classpath.
-	 * If the file cannot be found or loaded, an the defaults are used.
-	 *
-	 * @param region
-	 * @param properties
-	 * @<span class="code-keyword">return</span>
-	 * @<span class="code-keyword">throws</span> CacheException
-	 */
-	<span class="code-keyword">public</span> Cache buildCache(<span class="code-object">String</span> region, Properties properties) <span class="code-keyword">throws</span> CacheException {
-
-		<span class="code-object">int</span> refreshPeriod = PropertiesHelper.getInt(
-			StringHelper.qualify(region, OSCACHE_REFRESH_PERIOD), 
-			OSCACHE_PROPERTIES, 
-			CacheEntry.INDEFINITE_EXPIRY
-		);
-		<span class="code-object">String</span> cron = OSCACHE_PROPERTIES.getProperty( StringHelper.qualify(region, OSCACHE_CRON) );
-
-		<span class="code-comment">// construct the cache        
-</span>        <span class="code-keyword">return</span> <span class="code-keyword">new</span> OSCache(refreshPeriod, cron, region);
-	}
-
-	<span class="code-keyword">public</span> <span class="code-object">long</span> nextTimestamp() {
-		<span class="code-keyword">return</span> Timestamper.next();
-	}
-
-}</pre>
-</div></div>
-
-                    			    </td>
-		    </tr>
-	    </table>
-    </body>
-</html>

docs/wiki/Hibernate.html

 <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 Cache Provider.html" title="Hibernate Cache Provider">OSCacheProvider</a> and <a href="Hibernate Cache Adapter.html" title="Hibernate 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>
+<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>
 
 <p>To enable OSCache in Hibernate's configuration, add the following line to hibernate.cfg.xml:</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>
+
+<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>
+
                     			    </td>
 		    </tr>
 	    </table>

docs/wiki/Home.html

     <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">
-            </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>
 
 </ul>
 
 
-<p>This release can be <span class="nobr"><a href="https://oscache.dev.java.net/servlets/ProjectDocumentList?folderID=0" 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.</p>
+<p>This release can be <span class="nobr"><a href="https://oscache.dev.java.net/servlets/ProjectDocumentList?folderID=4354" 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.</p>
         </div>
             <div class="endsection" align="right" style="color: #666666; margin-top: 10px">
         <b>Posted at 06 Nov @ 7:01 AM</b> by

docs/wiki/Installation Guide.html

 <ol>
 	<li>Extract the downloaded file to a directory of your choosing.</li>
 	<li>Put the oscache.jar file in the <tt>/WEB-INF/lib</tt> directory</li>
-	<li>Make sure <tt>commons-logging.jar</tt> is on your classpath (normally this also means putting it in <tt>/WEB-INF/lib</tt>). With Java 1.4 and higher, you can omit adding <tt>commons-collections.jar</tt>.</li>
+	<li>Make sure <tt>commons-logging.jar</tt> is on your classpath (normally this also means putting it in <tt>/WEB-INF/lib</tt>).</li>
 	<li>Put the <tt>/etc/oscache.properties</tt> file in the <tt>/WEB-INF/classes</tt> directory and edit the properties contained within it (for example if you want disk caching, configure the persistence listener and edit the <tt>cache.path</tt> property to point to where you want the cache files stored on disk). See the <a href="configuration.html" title="Configuration">Configuration Guide</a> for further details on what options are available.</li>
 	<li>Your directory structure should now look something like this:
 <div class="panel"><div class="panelContent">
 <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 Commons Logging documentation for details on logging configuration.</p></td></tr></table></div></div>
+<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>
 </td>
 
 <td class="confluenceTd" valign="top" width="50%">

docs/wiki/License.html

 	    <table class="pagecontent" border="0" cellpadding="0" cellspacing="0" width="100%" bgcolor="#ffffff">
 		    <tr>
 			    <td valign="top" class="pagebody">
-				    <p>All OpenSymphony projects use the OpenSymphony License, which is a modified Apache License. You can find the license at <a href="http://www.opensymphony.com/license.html" title="Visit page outside Confluence">&#104;ttp://www.opensymphony.com/license.html</a></p>
+				    <p>All OpenSymphony projects use the OpenSymphony License, which is a modified Apache License. You can find the license at <a href="http://www.opensymphony.com/oscache/license.action" title="Visit page outside Confluence">&#104;ttp://www.opensymphony.com/oscache/license.action</a></p>
 
                     			    </td>
 		    </tr>

docs/wiki/OSCache 2.2 RC.html

                                             <a href="http://jira.opensymphony.com/browse/CACHE-185">Filtered requests will be re-requested twice</a>
                                     </td>
                                 <td nowrap="true">
-                                            <img src="http://jira.opensymphony.com/images/icons/status_resolved.gif" alt="Resolved" border="0" />Resolved
+                                            <img src="http://jira.opensymphony.com/images/icons/status_closed.gif" alt="Closed" border="0" />Closed
                                     </td>
                             </tr>
                                     <tr class="rowNormal">
                                             <a href="http://jira.opensymphony.com/browse/CACHE-174">Regression in fix of CACHE-170: UpdateStateEntry may leak when entry are removed</a>
                                     </td>
                                 <td nowrap="true">
-                                            <img src="http://jira.opensymphony.com/images/icons/status_resolved.gif" alt="Resolved" border="0" />Resolved
+                                            <img src="http://jira.opensymphony.com/images/icons/status_closed.gif" alt="Closed" border="0" />Closed
                                     </td>
                             </tr>
                                     <tr class="rowAlternate">
                                             <a href="http://jira.opensymphony.com/browse/CACHE-155">Support of GZip filters in the filter chain</a>
                                     </td>
                                 <td nowrap="true">
-                                            <img src="http://jira.opensymphony.com/images/icons/status_resolved.gif" alt="Resolved" border="0" />Resolved
+                                            <img src="http://jira.opensymphony.com/images/icons/status_closed.gif" alt="Closed" border="0" />Closed
                                     </td>
                             </tr>
                                     <tr class="rowAlternate">
                                             <a href="http://jira.opensymphony.com/browse/CACHE-154">NullPointerException in JavaGroupsBroadcastingListener</a>
                                     </td>
                                 <td nowrap="true">
-                                            <img src="http://jira.opensymphony.com/images/icons/status_resolved.gif" alt="Resolved" border="0" />Resolved
+                                            <img src="http://jira.opensymphony.com/images/icons/status_closed.gif" alt="Closed" border="0" />Closed
                                     </td>
                             </tr>
                                     <tr class="rowNormal">
                                             <a href="http://jira.opensymphony.com/browse/CACHE-148">getInstance call not thread-safe</a>
                                     </td>
                                 <td nowrap="true">
-                                            <img src="http://jira.opensymphony.com/images/icons/status_resolved.gif" alt="Resolved" border="0" />Resolved
+                                            <img src="http://jira.opensymphony.com/images/icons/status_closed.gif" alt="Closed" border="0" />Closed
                                     </td>
                             </tr>
                                     <tr class="rowAlternate">
                                             <a href="http://jira.opensymphony.com/browse/CACHE-144">CacheTag doesn't  clear variables in doStartTag / doFinally</a>
                                     </td>
                                 <td nowrap="true">
-                                            <img src="http://jira.opensymphony.com/images/icons/status_resolved.gif" alt="Resolved" border="0" />Resolved
+                                            <img src="http://jira.opensymphony.com/images/icons/status_closed.gif" alt="Closed" border="0" />Closed
                                     </td>
                             </tr>
                                     <tr class="rowNormal">
                                             <a href="http://jira.opensymphony.com/browse/CACHE-143">Report expected expiry to clients/browsers/proxy</a>
                                     </td>
                                 <td nowrap="true">
-                                            <img src="http://jira.opensymphony.com/images/icons/status_resolved.gif" alt="Resolved" border="0" />Resolved
+                                            <img src="http://jira.opensymphony.com/images/icons/status_closed.gif" alt="Closed" border="0" />Closed
                                     </td>
                             </tr>
                                     <tr class="rowAlternate">
                                             <a href="http://jira.opensymphony.com/browse/CACHE-135">CacheFilter for fragements of a page</a>
                                     </td>
                                 <td nowrap="true">
-                                            <img src="http://jira.opensymphony.com/images/icons/status_resolved.gif" alt="Resolved" border="0" />Resolved
+                                            <img src="http://jira.opensymphony.com/images/icons/status_closed.gif" alt="Closed" border="0" />Closed
                                     </td>
                             </tr>
                                     <tr class="rowAlternate">
                                             <a href="http://jira.opensymphony.com/browse/CACHE-128">Multiple matching filters will dead-lock the response</a>
                                     </td>
                                 <td nowrap="true">
-                                            <img src="http://jira.opensymphony.com/images/icons/status_resolved.gif" alt="Resolved" border="0" />Resolved
+                                            <img src="http://jira.opensymphony.com/images/icons/status_closed.gif" alt="Closed" border="0" />Closed
                                     </td>
                             </tr>
                                     <tr class="rowAlternate">
                                             <a href="http://jira.opensymphony.com/browse/CACHE-120">New nocache option when body contains a jsessionid</a>
                                     </td>
                                 <td nowrap="true">
-                                            <img src="http://jira.opensymphony.com/images/icons/status_resolved.gif" alt="Resolved" border="0" />Resolved
+                                            <img src="http://jira.opensymphony.com/images/icons/status_closed.gif" alt="Closed" border="0" />Closed
                                     </td>
                             </tr>
                                     <tr class="rowNormal">
                                             <a href="http://jira.opensymphony.com/browse/CACHE-83">CacheHttpServletResponseWrapper &amp; ResponseContent dont preserver Http headers</a>
                                     </td>
                                 <td nowrap="true">
-                                            <img src="http://jira.opensymphony.com/images/icons/status_resolved.gif" alt="Resolved" border="0" />Resolved
+                                            <img src="http://jira.opensymphony.com/images/icons/status_closed.gif" alt="Closed" border="0" />Closed
                                     </td>
                             </tr>
                                     <tr class="rowAlternate">

docs/wiki/OSCache 2.2.html

         <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>
-                <span class="smalltext">(11 issues)</span>
+                <span class="smalltext">(12 issues)</span>
             </th>
         </tr>
         <tr>
                     </tr>
                                             <tr class="rowNormal">
                                                             <td nowrap="true">
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-223"><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-223">CACHE-223</a>
+                                    </td>
+                                <td >
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-223">completeUpdate never being called after startUpdate() has been called, OSCache hangs for that key</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-211"><img src="http://jira.opensymphony.com/images/icons/task.gif" alt="Task" border="0" /></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">
+                                    <tr class="rowNormal">
                                                             <td nowrap="true">
                                             <a href="http://jira.opensymphony.com/browse/CACHE-210"><img src="http://jira.opensymphony.com/images/icons/task.gif" alt="Task" border="0" /></a>
                                     </td>
                                             <img src="http://jira.opensymphony.com/images/icons/status_closed.gif" alt="Closed" border="0" />Closed
                                     </td>
                             </tr>
-                                    <tr class="rowNormal">
+                                    <tr class="rowAlternate">
                                                             <td nowrap="true">
                                             <a href="http://jira.opensymphony.com/browse/CACHE-204"><img src="http://jira.opensymphony.com/images/icons/improvement.gif" alt="Improvement" border="0" /></a>
                                     </td>
                                             <img src="http://jira.opensymphony.com/images/icons/status_closed.gif" alt="Closed" border="0" />Closed
                                     </td>
                             </tr>
-                                    <tr class="rowAlternate">
+                                    <tr class="rowNormal">
                                                             <td nowrap="true">
                                             <a href="http://jira.opensymphony.com/browse/CACHE-203"><img src="http://jira.opensymphony.com/images/icons/task.gif" alt="Task" border="0" /></a>
                                     </td>
                                             <img src="http://jira.opensymphony.com/images/icons/status_closed.gif" alt="Closed" border="0" />Closed
                                     </td>
                             </tr>
-                                    <tr class="rowNormal">
+                                    <tr class="rowAlternate">
                                                             <td nowrap="true">
                                             <a href="http://jira.opensymphony.com/browse/CACHE-202"><img src="http://jira.opensymphony.com/images/icons/bug.gif" alt="Bug" border="0" /></a>
                                     </td>
                                             <img src="http://jira.opensymphony.com/images/icons/status_closed.gif" alt="Closed" border="0" />Closed
                                     </td>
                             </tr>
-                                    <tr class="rowAlternate">
+                                    <tr class="rowNormal">
                                                             <td nowrap="true">
                                             <a href="http://jira.opensymphony.com/browse/CACHE-201"><img src="http://jira.opensymphony.com/images/icons/bug.gif" alt="Bug" border="0" /></a>
                                     </td>
                                             <img src="http://jira.opensymphony.com/images/icons/status_closed.gif" alt="Closed" border="0" />Closed
                                     </td>
                             </tr>
-                                    <tr class="rowNormal">
+                                    <tr class="rowAlternate">
                                                             <td nowrap="true">
                                             <a href="http://jira.opensymphony.com/browse/CACHE-199"><img src="http://jira.opensymphony.com/images/icons/task.gif" alt="Task" border="0" /></a>
                                     </td>
                                             <img src="http://jira.opensymphony.com/images/icons/status_closed.gif" alt="Closed" border="0" />Closed
                                     </td>
                             </tr>
-                                    <tr class="rowAlternate">
+                                    <tr class="rowNormal">
                                                             <td nowrap="true">
                                             <a href="http://jira.opensymphony.com/browse/CACHE-198"><img src="http://jira.opensymphony.com/images/icons/task.gif" alt="Task" border="0" /></a>
                                     </td>
                                             <img src="http://jira.opensymphony.com/images/icons/status_closed.gif" alt="Closed" border="0" />Closed
                                     </td>
                             </tr>
-                                    <tr class="rowNormal">
+                                    <tr class="rowAlternate">
                                                             <td nowrap="true">
                                             <a href="http://jira.opensymphony.com/browse/CACHE-196"><img src="http://jira.opensymphony.com/images/icons/improvement.gif" alt="Improvement" border="0" /></a>
                                     </td>
                                             <img src="http://jira.opensymphony.com/images/icons/status_closed.gif" alt="Closed" border="0" />Closed
                                     </td>
                             </tr>
-                                    <tr class="rowAlternate">
+                                    <tr class="rowNormal">
                                                             <td nowrap="true">
                                             <a href="http://jira.opensymphony.com/browse/CACHE-195"><img src="http://jira.opensymphony.com/images/icons/improvement.gif" alt="Improvement" border="0" /></a>
                                     </td>
                                             <img src="http://jira.opensymphony.com/images/icons/status_closed.gif" alt="Closed" border="0" />Closed
                                     </td>
                             </tr>
-                                    <tr class="rowNormal">
+                                    <tr class="rowAlternate">
                                                             <td nowrap="true">
                                             <a href="http://jira.opensymphony.com/browse/CACHE-194"><img src="http://jira.opensymphony.com/images/icons/task.gif" alt="Task" border="0" /></a>
                                     </td>
                                             <a href="http://jira.opensymphony.com/browse/CACHE-194">Update Documentation</a>
                                     </td>
                                 <td nowrap="true">
-                                            <img src="http://jira.opensymphony.com/images/icons/status_inprogress.gif" alt="In Progress" border="0" />In Progress
+                                            <img src="http://jira.opensymphony.com/images/icons/status_closed.gif" alt="Closed" border="0" />Closed
                                     </td>
                             </tr>
             </table>

docs/wiki/Requirements.html

 	    <table class="pagecontent" border="0" cellpadding="0" cellspacing="0" width="100%" bgcolor="#ffffff">
 		    <tr>
 			    <td valign="top" class="pagebody">
-				    <p>OSCache can be used directly to provide caching for any Java application. Using the OSCache tag library requires Servlet 2.3 and JSP 1.2 support to run properly. There is no dependency on a servlet container if the OSCache API is used directly.</p>
+				    <p>OSCache can be used directly to provide caching for any Java application. Using the OSCache tag library requires <b>Servlet 2.3</b> and <b>JSP 1.2</b> support (included in J2EE 1.3) to run properly. There is no dependency on a servlet container if the OSCache API is used directly.</p>
 
 <p>So far OSCache has been tested in the following application servers and web containers:</p>
 
 <ul>
 	<li><a href="http://www.orionserver.com/" title="Visit page outside Confluence">OrionServer</a>(version 1.4.0 and above)</li>
 	<li><a href="http://www.macromedia.com/" title="Visit page outside Confluence">Macromedia JRun</a> (version 3.0 and above)</li>
-	<li><a href="http://www.weblogic.com/" title="Visit page outside Confluence">BEA Weblogic</a> (should work on version 7.x and above)</li>
+	<li><a href="http://e-docs.bea.com/" title="Visit page outside Confluence">BEA WebLogic Server</a> (should work on version 8.1 and above)</li>
 	<li><a href="http://www.ibm.com/websphere" title="Visit page outside Confluence">IBM Websphere</a> (tested on version 5.0)</li>
 	<li>Silverstream (tested on version 3.7.4)</li>
 	<li><a href="http://www.caucho.com/" title="Visit page outside Confluence">Caucho Resin</a> (version 1.2.3 and above)</li>
 
 <p>This does not mean it will not run on other servers! It should run on any specification compliant container. If you have run OSCache successfully in other servers, please let us know and we'll add to this list.</p>
 
-<p>The <a href="CacheFilter.html" title="CacheFilter">Caching Filter</a> (for caching entire pages, and binary content such as GIFs and PDFs) requires Servlet 2.3 support. It is known to work on Orion, Weblogic and Tomcat 4.0.</p>
+<p>The <a href="CacheFilter.html" title="CacheFilter">Caching Filter</a> (for caching entire pages, and binary content such as GIFs and PDFs) requires Servlet 2.3 support. It is known to work on Orion, WebLogic and Tomcat 4.0.</p>
 
-<p>OSCache is compatible with JRE 1.3 and higher. For best performance, JRE 1.4.x or higher should be used.</p>
+<p>OSCache is compatible with Java 1.3 and higher. For best performance, Java 1.4.x or higher should be used.</p>
 
 
                     			    </td>

docs/wiki/Roadmap.html

 
 <p>This page and the <a href="https://oscache.dev.java.net/servlets/ProjectMailingListList" title="Visit page outside Confluence">mailing list</a> are provided for discussion purposes about the roadmap of OSCache and discussing new features and improvements. See also the <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> for more details or vote for issues in <a href="http://jira.opensymphony.com/browse/CACHE?report=com.atlassian.jira.plugin.system.project:popularissues-panel" title="Visit page outside Confluence">JIRA - Popular Issues</a> .</p>
 
-<h3><a name="Roadmap-OSCache2.2.1">OSCache 2.2.1</a></h3>
+<h3><a name="Roadmap-OSCache2.3">OSCache 2.3</a></h3>
 
-<p>A bug fix release with easy improvements which ensure backward compatibility:</p>
+<p>Improvements to CacheFilter and disk persistence :</p>
 
 <p>
     <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=21570&sorter/field=issuekey&sorter/order=DESC&tempMax=25&reset=true&">OpenSymphony JIRA</a>
-                <span class="smalltext">(2 issues)</span>
+                <span class="smalltext">(7 issues)</span>
             </th>
         </tr>
         <tr>
                     </tr>
                                             <tr class="rowNormal">
                                                             <td nowrap="true">
-                                            <a href="http://jira.opensymphony.com/browse/CACHE-214"><img src="http://jira.opensymphony.com/images/icons/bug.gif" alt="Bug" border="0" /></a>
+                                            <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_resolved.gif" alt="Resolved" border="0" />Resolved
+                                    </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_resolved.gif" alt="Resolved" border="0" />Resolved
+                                    </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_resolved.gif" alt="Resolved" border="0" />Resolved
+                                    </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">ResponseContent memory consumpition</a>
+                                            <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_open.gif" alt="Open" border="0" />Open
+                                            <img src="http://jira.opensymphony.com/images/icons/status_resolved.gif" alt="Resolved" border="0" />Resolved
+                                    </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_resolved.gif" alt="Resolved" border="0" />Resolved
                                     </td>
                             </tr>
                                     <tr class="rowAlternate">
                                             <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_resolved.gif" alt="Resolved" border="0" />Resolved
+                                    </td>
+                            </tr>
+                                    <tr class="rowNormal">
+                                                            <td nowrap="true">
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-140"><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-140">CACHE-140</a>
+                                    </td>
+                                <td >
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-140">Option to avoid bypassing the Cache if browser has resource already</a>
+                                    </td>
+                                <td nowrap="true">
                                             <img src="http://jira.opensymphony.com/images/icons/status_open.gif" alt="Open" border="0" />Open
                                     </td>
                             </tr>
         <tr>
             <th colspan="4" style="text-align: left;">
                 <a href="http://jira.opensymphony.com/secure/IssueNavigator.jspa?&pid=10001&fixfor=21470&sorter/field=issuekey&sorter/order=DESC&tempMax=25&reset=true&">OpenSymphony JIRA</a>
-                <span class="smalltext">(18 issues)</span>
+                <span class="smalltext">(19 issues)</span>
             </th>
         </tr>
         <tr>
                     </tr>
                                             <tr class="rowNormal">
                                                             <td nowrap="true">
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-220"><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-220">CACHE-220</a>
+                                    </td>
+                                <td >
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-220">Using a weak referenced cache for overflow capability</a>
+                                    </td>
+                                <td nowrap="true">
+                                            <img src="http://jira.opensymphony.com/images/icons/status_open.gif" alt="Open" border="0" />Open
+                                    </td>
+                            </tr>
+                                    <tr class="rowAlternate">
+                                                            <td nowrap="true">
                                             <a href="http://jira.opensymphony.com/browse/CACHE-172"><img src="http://jira.opensymphony.com/images/icons/improvement.gif" alt="Improvement" border="0" /></a>
                                     </td>
                                 <td nowrap="true">
                                             <img src="http://jira.opensymphony.com/images/icons/status_open.gif" alt="Open" border="0" />Open
                                     </td>
                             </tr>
-                                    <tr class="rowAlternate">
+                                    <tr class="rowNormal">
                                                             <td nowrap="true">
                                             <a href="http://jira.opensymphony.com/browse/CACHE-158"><img src="http://jira.opensymphony.com/images/icons/improvement.gif" alt="Improvement" border="0" /></a>
                                     </td>
                                             <img src="http://jira.opensymphony.com/images/icons/status_inprogress.gif" alt="In Progress" border="0" />In Progress
                                     </td>
                             </tr>
-                                    <tr class="rowNormal">
+                                    <tr class="rowAlternate">
                                                             <td nowrap="true">
                                             <a href="http://jira.opensymphony.com/browse/CACHE-151"><img src="http://jira.opensymphony.com/images/icons/bug.gif" alt="Bug" border="0" /></a>
                                     </td>
                                             <img src="http://jira.opensymphony.com/images/icons/status_open.gif" alt="Open" border="0" />Open
                                     </td>
                             </tr>
-                                    <tr class="rowAlternate">
+                                    <tr class="rowNormal">
                                                             <td nowrap="true">
                                             <a href="http://jira.opensymphony.com/browse/CACHE-149"><img src="http://jira.opensymphony.com/images/icons/newfeature.gif" alt="New Feature" border="0" /></a>
                                     </td>
                                             <img src="http://jira.opensymphony.com/images/icons/status_open.gif" alt="Open" border="0" />Open
                                     </td>
                             </tr>
-                                    <tr class="rowNormal">
+                                    <tr class="rowAlternate">
                                                             <td nowrap="true">
                                             <a href="http://jira.opensymphony.com/browse/CACHE-145"><img src="http://jira.opensymphony.com/images/icons/improvement.gif" alt="Improvement" border="0" /></a>
                                     </td>
                                             <img src="http://jira.opensymphony.com/images/icons/status_open.gif" alt="Open" border="0" />Open
                                     </td>
                             </tr>
-                                    <tr class="rowAlternate">
+                                    <tr class="rowNormal">
                                                             <td nowrap="true">
                                             <a href="http://jira.opensymphony.com/browse/CACHE-142"><img src="http://jira.opensymphony.com/images/icons/improvement.gif" alt="Improvement" border="0" /></a>
                                     </td>
                                             <img src="http://jira.opensymphony.com/images/icons/status_open.gif" alt="Open" border="0" />Open
                                     </td>
                             </tr>
-                                    <tr class="rowNormal">
+                                    <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>
                                             <img src="http://jira.opensymphony.com/images/icons/status_open.gif" alt="Open" border="0" />Open
                                     </td>
                             </tr>
-                                    <tr class="rowAlternate">
+                                    <tr class="rowNormal">
                                                             <td nowrap="true">
                                             <a href="http://jira.opensymphony.com/browse/CACHE-123"><img src="http://jira.opensymphony.com/images/icons/newfeature.gif" alt="New Feature" border="0" /></a>
                                     </td>
                                             <img src="http://jira.opensymphony.com/images/icons/status_open.gif" alt="Open" border="0" />Open
                                     </td>
                             </tr>
-                                    <tr class="rowNormal">
+                                    <tr class="rowAlternate">
                                                             <td nowrap="true">
                                             <a href="http://jira.opensymphony.com/browse/CACHE-121"><img src="http://jira.opensymphony.com/images/icons/newfeature.gif" alt="New Feature" border="0" /></a>
                                     </td>
                                             <img src="http://jira.opensymphony.com/images/icons/status_open.gif" alt="Open" border="0" />Open
                                     </td>
                             </tr>
-                                    <tr class="rowAlternate">
+                                    <tr class="rowNormal">
                                                             <td nowrap="true">
                                             <a href="http://jira.opensymphony.com/browse/CACHE-117"><img src="http://jira.opensymphony.com/images/icons/improvement.gif" alt="Improvement" border="0" /></a>
                                     </td>
                                             <img src="http://jira.opensymphony.com/images/icons/status_open.gif" alt="Open" border="0" />Open
                                     </td>
                             </tr>
-                                    <tr class="rowNormal">
+                                    <tr class="rowAlternate">
                                                             <td nowrap="true">
                                             <a href="http://jira.opensymphony.com/browse/CACHE-100"><img src="http://jira.opensymphony.com/images/icons/newfeature.gif" alt="New Feature" border="0" /></a>
                                     </td>
                                             <img src="http://jira.opensymphony.com/images/icons/status_open.gif" alt="Open" border="0" />Open
                                     </td>
                             </tr>
-                                    <tr class="rowAlternate">
+                                    <tr class="rowNormal">
                                                             <td nowrap="true">
                                             <a href="http://jira.opensymphony.com/browse/CACHE-81"><img src="http://jira.opensymphony.com/images/icons/improvement.gif" alt="Improvement" border="0" /></a>
                                     </td>
                                             <img src="http://jira.opensymphony.com/images/icons/status_open.gif" alt="Open" border="0" />Open
                                     </td>
                             </tr>
-                                    <tr class="rowNormal">
+                                    <tr class="rowAlternate">
                                                             <td nowrap="true">
                                             <a href="http://jira.opensymphony.com/browse/CACHE-79"><img src="http://jira.opensymphony.com/images/icons/newfeature.gif" alt="New Feature" border="0" /></a>
                                     </td>
                                             <img src="http://jira.opensymphony.com/images/icons/status_open.gif" alt="Open" border="0" />Open
                                     </td>
                             </tr>
-                                    <tr class="rowAlternate">
+                                    <tr class="rowNormal">
                                                             <td nowrap="true">
                                             <a href="http://jira.opensymphony.com/browse/CACHE-78"><img src="http://jira.opensymphony.com/images/icons/improvement.gif" alt="Improvement" border="0" /></a>
                                     </td>
                                             <img src="http://jira.opensymphony.com/images/icons/status_open.gif" alt="Open" border="0" />Open
                                     </td>
                             </tr>
-                                    <tr class="rowNormal">
+                                    <tr class="rowAlternate">
                                                             <td nowrap="true">
                                             <a href="http://jira.opensymphony.com/browse/CACHE-67"><img src="http://jira.opensymphony.com/images/icons/improvement.gif" alt="Improvement" border="0" /></a>
                                     </td>
                                             <img src="http://jira.opensymphony.com/images/icons/status_reopened.gif" alt="Reopened" border="0" />Reopened
                                     </td>
                             </tr>
-                                    <tr class="rowAlternate">
+                                    <tr class="rowNormal">
                                                             <td nowrap="true">
                                             <a href="http://jira.opensymphony.com/browse/CACHE-49"><img src="http://jira.opensymphony.com/images/icons/newfeature.gif" alt="New Feature" border="0" /></a>
                                     </td>
                                             <img src="http://jira.opensymphony.com/images/icons/status_open.gif" alt="Open" border="0" />Open
                                     </td>
                             </tr>
-                                    <tr class="rowNormal">
+                                    <tr class="rowAlternate">
                                                             <td nowrap="true">
                                             <a href="http://jira.opensymphony.com/browse/CACHE-21"><img src="http://jira.opensymphony.com/images/icons/newfeature.gif" alt="New Feature" border="0" /></a>
                                     </td>
                                             <img src="http://jira.opensymphony.com/images/icons/status_open.gif" alt="Open" border="0" />Open
                                     </td>
                             </tr>
-                                    <tr class="rowAlternate">
+                                    <tr class="rowNormal">
                                                             <td nowrap="true">
                                             <a href="http://jira.opensymphony.com/browse/CACHE-12"><img src="http://jira.opensymphony.com/images/icons/newfeature.gif" alt="New Feature" border="0" /></a>
                                     </td>

docs/wiki/Statistics.html

 			    <td valign="top" class="pagebody">
 				    <h3><a name="Statistics-Description">Description</a></h3>
 
-<p>With the <a href="http://www.opensymphony.com/oscache/api/com/opensymphony/oscache/base/events/package-summary.html" title="Visit page outside Confluence">cache event handlers</a> a listerner can be implemented to provide cache hits and misses information. You can copy and paste the following code to get a statistic of your OSCache integration. Just change the used logger and the sample helps you to improve the cache key creation and to decide which scope to use.</p>
+<p>With the <a href="http://www.opensymphony.com/oscache/api/com/opensymphony/oscache/base/events/package-summary.html" title="Visit page outside Confluence">cache event handlers</a> a listerner can be implemented to provide cache hits and misses information. You can copy and paste the following code to get a statistic of your OSCache integration. Just change the used logger and the sample helps you to improve the cache key creation and to decide which scope to use. The <em>StatisticListenerImpl</em> should be <a href="Configuration.html" title="Configuration">configured</a> via the <em>cache.event.listeners</em> in the <em>oscache.properties</em>.</p>
 
 <h3><a name="Statistics-SampleCode">Sample Code</a></h3>
 

docs/wiki/index.html

                                       <td><h4 style="margin-top: 0px"><a name="index-C"></a>C</h4>
                                   <a href="/display/CACHE/CacheFilter">CacheFilter</a>
     <br />
-             <div class="smalltext" style="margin: 0 0 0 36px">OSCache 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, eg PDF files or images....</div>
+             <div class="smalltext" style="margin: 0 0 0 36px">OSCache 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....</div>
                                   <a href="/display/CACHE/Change+Log">Change Log</a>
     <br />
              <div class="smalltext" style="margin: 0 0 0 36px">Release Notes  2005  OSCache 2.2  OSCache 2.2 RC  OSCache 2.1.1  OSCache 2.1  2004  OSCache 2.0.2  2003  OSCache 2.0.1  OSCache 2.0  OSCache 2.0 beta 2  OSCache 2.0 beta 1  2002  OSCache 1.7.5  2001  OSCache 1.7.4  OSCache 1.7.3  OSCache 1.7....</div>
                                   <a href="/display/CACHE/Hibernate">Hibernate</a>
     <br />
              <div class="smalltext" style="margin: 0 0 0 36px">Hibernate</div>
+                                  <a href="/display/CACHE/Hibernate+2.1+Cache+Adapter">Hibernate 2.1 Cache Adapter</a>
+    <br />
+             <div class="smalltext" style="margin: 0 0 0 36px">Patched version of OSCache.java originally created by Mathias Bogaert.    import java.util.Properties;  import net.sf.hibernate.cache.Cache; import net.sf.hibernate.cache.CacheException; import net.sf.hibernate.cache.Timestamper; import net.sf....</div>
+                                  <a href="/display/CACHE/Hibernate+2.1+Cache+Provider">Hibernate 2.1 Cache Provider</a>
+    <br />
+             <div class="smalltext" style="margin: 0 0 0 36px">Patched version of OSCacheProvider.java originally created by Mathias Bogaert.    import java.util.Properties;  import net.sf.hibernate.cache.Cache; import net.sf.hibernate.cache.CacheException; import net.sf.hibernate.cache.CacheProvider; import net....</div>
                                   <a href="/display/CACHE/Hibernate+3+Cache+Adaptor">Hibernate 3 Cache Adaptor</a>
     <br />
              <div class="smalltext" style="margin: 0 0 0 36px">Patched version of OSCache.java for Hibernate 3 originally created by Mathias Bogaert.    import java.util.Properties; import java.util.Map;  import org.hibernate.util.PropertiesHelper; import org.hibernate.util.StringHelper; import org.hibernate....</div>
                                   <a href="/display/CACHE/Hibernate+3+Cache+Provider">Hibernate 3 Cache Provider</a>
     <br />
              <div class="smalltext" style="margin: 0 0 0 36px">Patched version of OSCacheProvider.java for Hibernate 3.0 originally created by Mathias Bogaert.    import java.util.Properties; import org.hibernate.util.PropertiesHelper; import org.hibernate.util.StringHelper; import org.hibernate.cache....</div>
-                                  <a href="/display/CACHE/Hibernate+Cache+Adapter">Hibernate Cache Adapter</a>
-    <br />
-             <div class="smalltext" style="margin: 0 0 0 36px">Patched version of OSCache.java originally created by Mathias Bogaert.    import java.util.Properties;  import net.sf.hibernate.cache.Cache; import net.sf.hibernate.cache.CacheException; import net.sf.hibernate.cache.Timestamper; import net.sf....</div>
-                                  <a href="/display/CACHE/Hibernate+Cache+Provider">Hibernate Cache Provider</a>
-    <br />
-             <div class="smalltext" style="margin: 0 0 0 36px">Patched version of OSCacheProvider.java originally created by Mathias Bogaert.    import java.util.Properties;  import net.sf.hibernate.cache.Cache; import net.sf.hibernate.cache.CacheException; import net.sf.hibernate.cache.CacheProvider; import net....</div>
                                   <a href="/display/CACHE/Home">Home</a>
     <br />
              <div class="smalltext" style="margin: 0 0 0 36px">Welcome to the OSCache wiki.   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....</div>
                            <td><h4 style="margin-top: 0px"><a name="index-R"></a>R</h4>
                                   <a href="/display/CACHE/Requirements">Requirements</a>
     <br />
-             <div class="smalltext" style="margin: 0 0 0 36px">OSCache can be used directly to provide caching for any Java application. Using the OSCache tag library requires Servlet 2.3 and JSP 1.2 support to run properly. There is no dependency on a servlet container if the OSCache API is used directly....</div>
+             <div class="smalltext" style="margin: 0 0 0 36px">OSCache can be used directly to provide caching for any Java application. Using the OSCache tag library requires Servlet 2.3 and JSP 1.2 support (included in J2EE 1.3) to run properly....</div>
                                   <a href="/display/CACHE/Roadmap">Roadmap</a>
     <br />
              <div class="smalltext" style="margin: 0 0 0 36px">Scope  This page and the mailing list https://oscache.dev.java.net/servlets/ProjectMailingListList are provided for discussion purposes about the roadmap of OSCache and discussing new features and improvements. See also the JIRA Road Map</div>