Anonymous avatar Anonymous committed d98204c

final OSCache 2.4 pages

Comments (0)

Files changed (7)

docs/wiki/CVS and Compiling OSCache.html

-<html>
-    <head>
-        <title>OSCache - 
-         and Compiling OSCache
-        </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">
-				    <h3><a name="CVSandCompilingOSCache-CVS"></a>CVS</h3>
-
-<p>The OSCache CVS repository is hosted by <a href="http://www.java.net/" title="Visit page outside Confluence">java.net</a>.</p>
-
-<p>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>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"></a>Compiling OSCache</h3>
-
-<p>Run <tt>build.xml</tt> with <a href="http://ant.apache.org/" title="Visit page outside Confluence">Ant</a> 1.6.5 (or higher) under Java 1.4 or later. From the OSCache directory, type</p>
-
-<ul>
-	<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>
-
-
-<p>You may need to add the <a href="http://www.jayasoft.org/ivy" title="Visit page outside Confluence">Ivy</a> jar to your $ANT_HOME/lib directory if it is not there already.</p>
-
-                    			    </td>
-		    </tr>
-	    </table>
-    </body>
-</html>

docs/wiki/Hibernate 2.1 and pre OSCache 2.4 support.html

+<html>
+    <head>
+        <title>OSCache - 
+        Hibernate 2.1 and pre OSCache 2.4 support
+         </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">
+				    <table cellpadding='5' width='85%' cellspacing='8px' class='noteMacro' border="0" align='center'><colgroup><col width='24'><col></colgroup><tr><td valign='top'><img src="./icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td><b class="strong">Info</b><br />
+<p>This page is intended to give integration support for Hibernate 2.1 and for pre OSCache 2.4 releases.<br/>
+It's recommended to use the new <a href="Hibernate.html" title="Hibernate">Hibernate 3.2</a> classes.</p></td></tr></table>
+
+<p><a href="http://www.hibernate.org/" title="Visit page outside Confluence">Hibernate</a> is a powerful, ultra-high performance object/relational persistence and query service for Java. Hibernate lets you develop persistent objects following common Java idiom - including association, inheritance, polymorphism, composition and the Java collections framework. Extremely fine-grained, richly typed object models are possible.</p>
+
+<p>Hibernate 2.1 features support for plugin cache providers and is designed to integrate with distributed caches (2.1 also implements more aggressive use of the cache). <b>net.sf.hibernate.cache.CacheProvider</b> is the extension point for user-defined cache integration.</p>
+
+<p><a href="http://www.hibernate.org/6.html" title="Visit page outside Confluence">Hibernate 2.1.1</a> or higher is required.</p>
+
+<h3><a name="Hibernate2.1andpreOSCache2.4support-hibernate.cache.providerclass"></a>hibernate.cache.provider_class</h3>
+
+<p>OSCache and Hibernate 2.1 integrate though OSCacheProvider. </p>
+
+<table cellpadding='5' width='85%' cellspacing='8px' class='warningMacro' border="0" align='center'><colgroup><col width='24'><col></colgroup><tr><td valign='top'><img src="./icons/emoticons/forbidden.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td><b class="strong">Warning</b><br />
+<p>Unfortunately, at this time the OSCacheProvider distributed with Hibernate 2.1.x is not suited to clustering with OSCache.  A patch has been submitted to the Hibernate team but not yet applied.  Even if you do not require clustering, we recommend use of these patched versions of <a href="Hibernate 2.1 Cache Provider.html" title="Hibernate 2.1 Cache Provider">OSCacheProvider</a> and <a href="Hibernate 2.1 Cache Adapter.html" title="Hibernate 2.1 Cache Adapter">OSCache</a> for Hibernate 2.x and <a href="Hibernate 3 Cache Provider.html" title="Hibernate 3 Cache Provider">OSCacheProvider</a> and <a href="Hibernate 3 Cache Adaptor.html" title="Hibernate 3 Cache Adaptor">OSCache</a> for Hibernate 3.x.  Just cut-n-paste the code and use the provider class you create as the hibernate.cache.provider_class as shown below.</p></td></tr></table>
+
+<p>To enable OSCache in Hibernate's configuration, add the following line to hibernate.cfg.xml:</p>
+
+<div class="code"><div class="codeHeader"><b>hibernate.cfg.xml</b></div><div class="codeContent">
+<pre class="code-xml"><span class="code-tag">&lt;property name=<span class="code-quote">"hibernate.cache.provider_class"</span>&gt;</span>my.patched.provider.package.OSCacheProvider<span class="code-tag">&lt;/property&gt;</span></pre>
+</div></div>
+
+<p>The default refresh period is <a href="http://www.opensymphony.com/oscache/api/com/opensymphony/oscache/base/CacheEntry.html#INDEFINITE_EXPIRY" title="Visit page outside Confluence">CacheEntry.INDEFINITE_EXPIRY</a>. The first time a cacheable query is done, the cache has no effect on speed. On the second and successive queries, the cache will be populated and available to be hit.</p>
+
+<table cellpadding='5' width='85%' cellspacing='8px' class='noteMacro' border="0" align='center'><colgroup><col width='24'><col></colgroup><tr><td valign='top'><img src="./icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td><b class="strong">Object Identifiers</b><br />
+<p>Object identifiers must have well-behaved toString() methods, because OSCache uses the toString() method for the key of the cache.  Therefore it needs to create a unique identifier for the object being stored.</p></td></tr></table>
+
+<h3><a name="Hibernate2.1andpreOSCache2.4support-CacheRegionConfiguration"></a>Cache Region Configuration</h3>
+
+<p>To modify the refresh period, CRON expression, add the region configuration to your <a href="Configuration.html" title="Configuration">oscache.properties</a> file, as demonstrated below:</p>
+
+<div class="preformatted"><div class="preformattedContent">
+<pre>[region].refresh.period = 4000
+[region].cron = * * 31 Feb *
+
+# The maximum cache capacity can only be set per region if you use the 
+# net.sf.hibernate.cache.OSCacheProvider distributed with Hibernate.
+[region].capacity = 5000
+
+# The patched version distributed with OSCache only allows a single cache.capacity setting and saves memory.
+</pre>
+</div></div>
+
+<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/en/html/session-configuration.html" title="Visit page outside Confluence">hibernate.cache.region_prefix</a> .</p>
+
+<h3><a name="Hibernate2.1andpreOSCache2.4support-SourceCode"></a>Source Code</h3>
+
+<ul><li><a href="Hibernate 2.1 Cache Adapter.html" title="Hibernate 2.1 Cache Adapter">Hibernate 2.1 Cache Adapter</a></li><li><a href="Hibernate 2.1 Cache Provider.html" title="Hibernate 2.1 Cache Provider">Hibernate 2.1 Cache Provider</a></li><li><a href="Hibernate 3 Cache Adaptor.html" title="Hibernate 3 Cache Adaptor">Hibernate 3 Cache Adaptor</a></li><li><a href="Hibernate 3 Cache Provider.html" title="Hibernate 3 Cache Provider">Hibernate 3 Cache Provider</a></li></ul>
+
+                    			    </td>
+		    </tr>
+	    </table>
+    </body>
+</html>

docs/wiki/JMX Monitoring.html

+<html>
+    <head>
+        <title>OSCache - 
+         Monitoring
+        </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>New in OSCache 2.4 is support for JMX monitoring and administration via the <a href="http://www.springframework.org" title="Visit page outside Confluence">Spring Framework</a>.</p>
+
+<p>In oscache.properties, enable the statistic listener:</p>
+
+<div class="preformatted"><div class="preformattedContent">
+<pre>cache.event.listeners= com.opensymphony.oscache.extra.StatisticListenerImpl
+</pre>
+</div></div>
+
+<p>Then add this to the Spring application context</p>
+
+<div class="code"><div class="codeContent">
+<pre class="code-xml">&lt;!-- create mbeanserver, this doesn't need to be done if running on an Appserver with 
+it's own JMX server, such as Tomcat --&gt;
+<span class="code-tag">&lt;bean id=<span class="code-quote">"mbeanServer"</span> class=<span class="code-quote">"org.springframework.jmx.support.MBeanServerFactoryBean"</span>/&gt;</span>
+
+<span class="code-tag"><span class="code-comment">&lt;!-- create a connector on port 1109 --&gt;</span></span>
+&lt;bean id=<span class="code-quote">"registry"</span>
+	class=<span class="code-quote">"org.springframework.remoting.rmi.RmiRegistryFactoryBean"</span>&gt;
+	<span class="code-tag">&lt;property name=<span class="code-quote">"port"</span>&gt;</span>
+		<span class="code-tag">&lt;value&gt;</span>1109<span class="code-tag">&lt;/value&gt;</span>
+	<span class="code-tag">&lt;/property&gt;</span>
+<span class="code-tag">&lt;/bean&gt;</span>
+
+&lt;bean id=<span class="code-quote">"serverConnector"</span> depends-on=<span class="code-quote">"registry"</span>
+	class=<span class="code-quote">"org.springframework.jmx.support.ConnectorServerFactoryBean"</span>&gt;
+	<span class="code-tag">&lt;property name=<span class="code-quote">"objectName"</span>&gt;</span>
+		<span class="code-tag">&lt;value&gt;</span>connector:name=rmi<span class="code-tag">&lt;/value&gt;</span>
+	<span class="code-tag">&lt;/property&gt;</span>
+	<span class="code-tag">&lt;property name=<span class="code-quote">"serviceUrl"</span>&gt;</span>
+		<span class="code-tag">&lt;value&gt;</span>service:jmx:rmi://localhost/jndi/rmi://localhost:1109/jmxconnector<span class="code-tag">&lt;/value&gt;</span>
+	<span class="code-tag">&lt;/property&gt;</span>			
+<span class="code-tag">&lt;/bean&gt;</span>  
+
+<span class="code-tag"><span class="code-comment">&lt;!-- export the oscache stats beans --&gt;</span></span>
+&lt;bean id=<span class="code-quote">"exporter"</span>
+      class=<span class="code-quote">"org.springframework.jmx.export.MBeanExporter"</span>&gt;
+	<span class="code-tag">&lt;property name=<span class="code-quote">"beans"</span>&gt;</span>
+		<span class="code-tag">&lt;map&gt;</span>   
+                <span class="code-tag">&lt;entry key=<span class="code-quote">"bean:name=StatisticListenerImpl"</span>&gt;</span>
+				<span class="code-tag">&lt;value&gt;</span>StatisticListenerImpl<span class="code-tag">&lt;/value&gt;</span>
+		<span class="code-tag">&lt;/entry&gt;</span>	                
+		<span class="code-tag">&lt;/map&gt;</span>
+	<span class="code-tag">&lt;/property&gt;</span>
+<span class="code-tag">&lt;/bean&gt;</span>
+
+<span class="code-tag"><span class="code-comment">&lt;!-- oscache stats bean --&gt;</span></span>
+<span class="code-tag">&lt;bean id=<span class="code-quote">"StatisticListenerImpl"</span> class=<span class="code-quote">"com.opensymphony.oscache.extra.StatisticListenerImpl"</span>/&gt;</span></pre>
+</div></div>
+
+                    			    </td>
+		    </tr>
+	    </table>
+    </body>
+</html>

docs/wiki/Legacy Installation Guide.html

-<html>
-    <head>
-        <title>OSCache - 
-        Legacy Installation Guide
-         </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>This legacy installation guide shows you how to configure OSCache with Java 1.3 or in a Servlet 2.2 container (included in J2EE 1.2). The latest release may require at least Java 1.4 and/or a Servlet 2.3 container, hence you have to check the <a href="Change Log.html" title="Change Log">release notes</a> and download a release which fits to your enviroment.</p>
-
-<h4><a name="LegacyInstallationGuide-ExtractionSteps"></a>Extraction Steps</h4>
-
-<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>).</li>
-	<li>If you are using Java 1.3 it is optional, but strongly recommended, to add <tt>commons-collections.jar</tt> to your classpath. OSCache will use this to provide a significant speed increase. (Note that with Java 1.4 and higher, <tt>commons-collections.jar</tt> will not be used - the 1.4 implementation is faster still).</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>Remember to escape any \ characters in Windows paths - ie if you want cache files to go in c:\cachedir, the <tt>cache.path</tt> property should be set to c:\ \cachedir.</li>
-	<li>Put the <tt>/etc/oscache.tld</tt> file in your <tt>/WEB-INF/classes</tt> directory.</li>
-	<li>Your directory structure should now look something like this:
-<div class="panel"><div class="panelContent">
-<p>    $WEB_APPLICATION/WEB-INF/lib/oscache.jar<br/>
-    $WEB_APPLICATION/WEB-INF/classes/oscache.properties<br/>
-    $WEB_APPLICATION/WEB-INF/classes/oscache.tld</p>
-</div></div></li>
-</ol>
-
-
-<h4><a name="LegacyInstallationGuide-InstallationSteps"></a>Installation Steps</h4>
-
-<ol>
-	<li>Add the following to your web.xml file
-<div class="code"><div class="codeContent">
-<pre class="code-xml"><span class="code-tag">&lt;taglib&gt;</span>
-    <span class="code-tag">&lt;taglib-uri&gt;</span>oscache<span class="code-tag">&lt;/taglib-uri&gt;</span>
-    <span class="code-tag">&lt;taglib-location&gt;</span>/WEB-INF/classes/oscache.tld<span class="code-tag">&lt;/taglib-location&gt;</span>
-<span class="code-tag">&lt;/taglib&gt;</span></pre>
-</div></div></li>
-	<li>Now add the appropriate <a href="JSP Tags.html" title="JSP Tags">tags</a> to your JSP files and you're done.</li>
-	<li>It should work properly. <a href="mailto:users@oscache.dev.java.net" title="Send mail to Tell us on the mailing list">Tell us on the mailing list</a> if it doesn't work in your container.</li>
-</ol>
-
-
-<table cellpadding='5' width='85%' cellspacing='8px' class='infoMacro' border="0" align='center'><colgroup><col width='24'><col></colgroup><tr><td valign='top'><img src="/images/icons/emoticons/information.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td><b class="strong">Logging</b><br />
-<p>OSCache uses <a href="http://jakarta.apache.org/commons/logging/" title="Visit page outside Confluence">Jakarta Commons Logging</a> for logging any messages. Please see the Commons Logging documentation for details on logging configuration.</p></td></tr></table>
-
-<table cellpadding='5' width='85%' cellspacing='8px' class='tipMacro' border="0" align='center'><colgroup><col width='24'><col></colgroup><tr><td valign='top'><img src="/images/icons/emoticons/check.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td><b class="strong">Debugging</b><br />
-<p>Note that OSCache has been compiled with debugging information enabled so you should be able to use your favourite debugger to step through the source if need be.</p></td></tr></table>
-
-<table cellpadding='5' width='85%' cellspacing='8px' class='tipMacro' border="0" align='center'><colgroup><col width='24'><col></colgroup><tr><td valign='top'><img src="/images/icons/emoticons/check.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td><b class="strong">Servlet 2.3</b><br />
-<p>You can omit putting the <tt>/etc/oscache.tld</tt> file in your <tt>/WEB-INF/classes</tt> directory and omit declaring OSCache in the <tt>WEB-INF/web.xml</tt>. You just have to add the following line declaring the OSCache custom tag library for use on the jsp page:</p>
-
-<p><tt>&lt;%@ taglib uri="http://www.opensymphony.com/oscache" prefix="oscache" %&gt;</tt></p>
-
-
-<p><em>Note: In OSCache releases before 2.1.1 you have to change the URI to <tt>/oscache</tt>, see <a href="http://jira.opensymphony.com/browse/CACHE-61" title="Visit page outside Confluence">CACHE-61</a>.</em></p></td></tr></table>
-
-                    			    </td>
-		    </tr>
-	    </table>
-    </body>
-</html>

docs/wiki/OSCache 2.4.html

+<html>
+    <head>
+        <title>OSCache - 
+        OSCache 2.4
+         </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">
+				    <h3><a name="OSCache2.4-ReleaseNotes"></a>Release Notes</h3>
+
+<p>(1st Mai 2007 - by Lars Torunski)</p>
+
+<h4><a name="OSCache2.4-Newfeaturesandenhancements"></a>New features and enhancements</h4>
+
+<p>Furthermore the next major release 2.4 enhances the CacheFilter and allows a better integration with the <a href="http://www.springframework.org/" title="Visit page outside Confluence">Spring Framework</a> and <a href="JMX Monitoring.html" title="JMX Monitoring">JMX Monitoring</a>.</p>
+
+<ul>
+	<li>Setting CacheFilter parameters runtime</li>
+	<li>Lazy initialization in CacheFilter in order to ease spring integration</li>
+	<li>Allow disabling cacheing for special http methods (e.g. POST/DELETE/PUT) in CacheFilter</li>
+	<li>CacheFilter allow reentrance over different filter configurations</li>
+</ul>
+
+
+<ul>
+	<li>Hibernate 3.2 integration support</li>
+	<li>JMX Monitoring/Administration via Spring</li>
+	<li>Improve oscache.properties loading</li>
+	<li>Performance improvment for large disk persistence usage</li>
+</ul>
+
+
+<h4><a name="OSCache2.4-UpgradeGuide"></a>Upgrade Guide</h4>
+
+<ul>
+	<li>Due to the enhancements in the CacheFilter and method signature changes, it's recommended to recompile your code.</li>
+	<li>Due to changes for CACHE-284 the handling of the listeners have been changed: Before OSCache 2.4 objects which implemented different CacheEventListener (e.g. CacheEntryEventListener and CacheMapAccessEventListener) had to be added twice, because the listeners where registrated only for one special event listener. With OSCache 2.4 only the object has to be added to the list without the 2nd parameter 'type of the listener'.</li>
+</ul>
+
+
+<h4><a name="OSCache2.4-JIRAIssueList"></a>JIRA Issue List</h4>
+
+<p><a name="jiraissues">
+    <table  width="100%" cellspacing="0" class="grid">
+        <tr>
+            <th colspan="4" style="text-align: left;">
+                                    <a href="/spaces/doexportspace.action?key=CACHE&macro.refresh=true#jiraissues"><img src="/images/icons/refresh_16.png" height="16" width="16" border="0" align="right" title="refresh"/></a>
+                                <a href="http://jira.opensymphony.com/secure/IssueNavigator.jspa?&pid=10001&fixfor=21660&sorter/field=priority&sorter/order=DESC&tempMax=30&reset=true&">OpenSymphony JIRA</a>
+                <span class="smalltext">(27 issues)</span>
+            </th>
+        </tr>
+        <tr>
+                        <th style="text-align: left;">
+                T                                                                                                                                                                            </th>
+                        <th style="text-align: left;">
+                                Key                                                                                                                                                            </th>
+                        <th style="text-align: left;">
+                                                Summary                                                                                                                                            </th>
+                        <th style="text-align: left;">
+                                                                                                                Status                                                                            </th>
+                    </tr>
+                                            <tr class="rowNormal">
+                                                            <td nowrap="true">
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-260"><img src="http://jira.opensymphony.com/secure/IssueNavigator.jspa?reset=true&pid=10001&fixfor=21660&sorter/field=priority&sorter/order=DESC/images/icons/bug.gif" alt="Bug" border="0" /></a>
+                                    </td>
+                                <td nowrap="true">
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-260">CACHE-260</a>
+                                    </td>
+                                <td >
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-260">NullPointerException in AbstractConcurrentReadCache</a>
+                                    </td>
+                                <td nowrap="true">
+                                            <img src="http://jira.opensymphony.com/secure/IssueNavigator.jspa?reset=true&pid=10001&fixfor=21660&sorter/field=priority&sorter/order=DESC/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-215"><img src="http://jira.opensymphony.com/secure/IssueNavigator.jspa?reset=true&pid=10001&fixfor=21660&sorter/field=priority&sorter/order=DESC/images/icons/improvement.gif" alt="Improvement" border="0" /></a>
+                                    </td>
+                                <td nowrap="true">
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-215">CACHE-215</a>
+                                    </td>
+                                <td >
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-215">Setting CacheFilter parameters runtime</a>
+                                    </td>
+                                <td nowrap="true">
+                                            <img src="http://jira.opensymphony.com/secure/IssueNavigator.jspa?reset=true&pid=10001&fixfor=21660&sorter/field=priority&sorter/order=DESC/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-99"><img src="http://jira.opensymphony.com/secure/IssueNavigator.jspa?reset=true&pid=10001&fixfor=21660&sorter/field=priority&sorter/order=DESC/images/icons/improvement.gif" alt="Improvement" border="0" /></a>
+                                    </td>
+                                <td nowrap="true">
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-99">CACHE-99</a>
+                                    </td>
+                                <td >
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-99">Use lazy initialization in cache filter in order to ease spring integration</a>
+                                    </td>
+                                <td nowrap="true">
+                                            <img src="http://jira.opensymphony.com/secure/IssueNavigator.jspa?reset=true&pid=10001&fixfor=21660&sorter/field=priority&sorter/order=DESC/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-258"><img src="http://jira.opensymphony.com/secure/IssueNavigator.jspa?reset=true&pid=10001&fixfor=21660&sorter/field=priority&sorter/order=DESC/images/icons/bug.gif" alt="Bug" border="0" /></a>
+                                    </td>
+                                <td nowrap="true">
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-258">CACHE-258</a>
+                                    </td>
+                                <td >
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-258">NullPointerException when using putCache(key, val) in LRUCache</a>
+                                    </td>
+                                <td nowrap="true">
+                                            <img src="http://jira.opensymphony.com/secure/IssueNavigator.jspa?reset=true&pid=10001&fixfor=21660&sorter/field=priority&sorter/order=DESC/images/icons/status_closed.gif" alt="Closed" border="0" />Closed
+                                    </td>
+                            </tr>
+                                    <tr class="rowNormal">
+                                                            <td nowrap="true">
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-273"><img src="http://jira.opensymphony.com/secure/IssueNavigator.jspa?reset=true&pid=10001&fixfor=21660&sorter/field=priority&sorter/order=DESC/images/icons/task.gif" alt="Task" border="0" /></a>
+                                    </td>
+                                <td nowrap="true">
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-273">CACHE-273</a>
+                                    </td>
+                                <td >
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-273">Update to Commons Logging 1.1</a>
+                                    </td>
+                                <td nowrap="true">
+                                            <img src="http://jira.opensymphony.com/secure/IssueNavigator.jspa?reset=true&pid=10001&fixfor=21660&sorter/field=priority&sorter/order=DESC/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-253"><img src="http://jira.opensymphony.com/secure/IssueNavigator.jspa?reset=true&pid=10001&fixfor=21660&sorter/field=priority&sorter/order=DESC/images/icons/task.gif" alt="Task" border="0" /></a>
+                                    </td>
+                                <td nowrap="true">
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-253">CACHE-253</a>
+                                    </td>
+                                <td >
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-253">Migrate from CVS to SVN</a>
+                                    </td>
+                                <td nowrap="true">
+                                            <img src="http://jira.opensymphony.com/secure/IssueNavigator.jspa?reset=true&pid=10001&fixfor=21660&sorter/field=priority&sorter/order=DESC/images/icons/status_closed.gif" alt="Closed" border="0" />Closed
+                                    </td>
+                            </tr>
+                                    <tr class="rowNormal">
+                                                            <td nowrap="true">
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-261"><img src="http://jira.opensymphony.com/secure/IssueNavigator.jspa?reset=true&pid=10001&fixfor=21660&sorter/field=priority&sorter/order=DESC/images/icons/task.gif" alt="Task" border="0" /></a>
+                                    </td>
+                                <td nowrap="true">
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-261">CACHE-261</a>
+                                    </td>
+                                <td >
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-261">Check javadoc of Cache.cancelUpdate on key not being updated </a>
+                                    </td>
+                                <td nowrap="true">
+                                            <img src="http://jira.opensymphony.com/secure/IssueNavigator.jspa?reset=true&pid=10001&fixfor=21660&sorter/field=priority&sorter/order=DESC/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-163"><img src="http://jira.opensymphony.com/secure/IssueNavigator.jspa?reset=true&pid=10001&fixfor=21660&sorter/field=priority&sorter/order=DESC/images/icons/issue_subtask.gif" alt="Sub-task" border="0" /></a>
+                                    </td>
+                                <td nowrap="true">
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-163">CACHE-163</a>
+                                    </td>
+                                <td >
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-163">CacheFilter easier sub-classing via pre- and post-processes</a>
+                                    </td>
+                                <td nowrap="true">
+                                            <img src="http://jira.opensymphony.com/secure/IssueNavigator.jspa?reset=true&pid=10001&fixfor=21660&sorter/field=priority&sorter/order=DESC/images/icons/status_closed.gif" alt="Closed" border="0" />Closed
+                                    </td>
+                            </tr>
+                                    <tr class="rowNormal">
+                                                            <td nowrap="true">
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-162"><img src="http://jira.opensymphony.com/secure/IssueNavigator.jspa?reset=true&pid=10001&fixfor=21660&sorter/field=priority&sorter/order=DESC/images/icons/issue_subtask.gif" alt="Sub-task" border="0" /></a>
+                                    </td>
+                                <td nowrap="true">
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-162">CACHE-162</a>
+                                    </td>
+                                <td >
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-162">CacheFilter easier sub-classing via useCache</a>
+                                    </td>
+                                <td nowrap="true">
+                                            <img src="http://jira.opensymphony.com/secure/IssueNavigator.jspa?reset=true&pid=10001&fixfor=21660&sorter/field=priority&sorter/order=DESC/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-272"><img src="http://jira.opensymphony.com/secure/IssueNavigator.jspa?reset=true&pid=10001&fixfor=21660&sorter/field=priority&sorter/order=DESC/images/icons/improvement.gif" alt="Improvement" border="0" /></a>
+                                    </td>
+                                <td nowrap="true">
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-272">CACHE-272</a>
+                                    </td>
+                                <td >
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-272">Allow disabling of cacheing special http methods (e.g. POST/DELETE/PUT) in CacheFilter</a>
+                                    </td>
+                                <td nowrap="true">
+                                            <img src="http://jira.opensymphony.com/secure/IssueNavigator.jspa?reset=true&pid=10001&fixfor=21660&sorter/field=priority&sorter/order=DESC/images/icons/status_closed.gif" alt="Closed" border="0" />Closed
+                                    </td>
+                            </tr>
+                                    <tr class="rowNormal">
+                                                            <td nowrap="true">
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-277"><img src="http://jira.opensymphony.com/secure/IssueNavigator.jspa?reset=true&pid=10001&fixfor=21660&sorter/field=priority&sorter/order=DESC/images/icons/improvement.gif" alt="Improvement" border="0" /></a>
+                                    </td>
+                                <td nowrap="true">
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-277">CACHE-277</a>
+                                    </td>
+                                <td >
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-277">CacheFilter should allow reentrance over different filter configurations</a>
+                                    </td>
+                                <td nowrap="true">
+                                            <img src="http://jira.opensymphony.com/secure/IssueNavigator.jspa?reset=true&pid=10001&fixfor=21660&sorter/field=priority&sorter/order=DESC/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-283"><img src="http://jira.opensymphony.com/secure/IssueNavigator.jspa?reset=true&pid=10001&fixfor=21660&sorter/field=priority&sorter/order=DESC/images/icons/improvement.gif" alt="Improvement" border="0" /></a>
+                                    </td>
+                                <td nowrap="true">
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-283">CACHE-283</a>
+                                    </td>
+                                <td >
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-283">Improve oscache.properties loading</a>
+                                    </td>
+                                <td nowrap="true">
+                                            <img src="http://jira.opensymphony.com/secure/IssueNavigator.jspa?reset=true&pid=10001&fixfor=21660&sorter/field=priority&sorter/order=DESC/images/icons/status_closed.gif" alt="Closed" border="0" />Closed
+                                    </td>
+                            </tr>
+                                    <tr class="rowNormal">
+                                                            <td nowrap="true">
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-266"><img src="http://jira.opensymphony.com/secure/IssueNavigator.jspa?reset=true&pid=10001&fixfor=21660&sorter/field=priority&sorter/order=DESC/images/icons/newfeature.gif" alt="New Feature" border="0" /></a>
+                                    </td>
+                                <td nowrap="true">
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-266">CACHE-266</a>
+                                    </td>
+                                <td >
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-266">ServletCacheAdministrator no longer a &quot;Servlet Singleton&quot;</a>
+                                    </td>
+                                <td nowrap="true">
+                                            <img src="http://jira.opensymphony.com/secure/IssueNavigator.jspa?reset=true&pid=10001&fixfor=21660&sorter/field=priority&sorter/order=DESC/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-267"><img src="http://jira.opensymphony.com/secure/IssueNavigator.jspa?reset=true&pid=10001&fixfor=21660&sorter/field=priority&sorter/order=DESC/images/icons/improvement.gif" alt="Improvement" border="0" /></a>
+                                    </td>
+                                <td nowrap="true">
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-267">CACHE-267</a>
+                                    </td>
+                                <td >
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-267">SplitServletOutputStream doesn&#39;t pass flush() on to underlying stream</a>
+                                    </td>
+                                <td nowrap="true">
+                                            <img src="http://jira.opensymphony.com/secure/IssueNavigator.jspa?reset=true&pid=10001&fixfor=21660&sorter/field=priority&sorter/order=DESC/images/icons/status_closed.gif" alt="Closed" border="0" />Closed
+                                    </td>
+                            </tr>
+                                    <tr class="rowNormal">
+                                                            <td nowrap="true">
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-141"><img src="http://jira.opensymphony.com/secure/IssueNavigator.jspa?reset=true&pid=10001&fixfor=21660&sorter/field=priority&sorter/order=DESC/images/icons/task.gif" alt="Task" border="0" /></a>
+                                    </td>
+                                <td nowrap="true">
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-141">CACHE-141</a>
+                                    </td>
+                                <td >
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-141">CacheFilter easier sub-classing</a>
+                                    </td>
+                                <td nowrap="true">
+                                            <img src="http://jira.opensymphony.com/secure/IssueNavigator.jspa?reset=true&pid=10001&fixfor=21660&sorter/field=priority&sorter/order=DESC/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-288"><img src="http://jira.opensymphony.com/secure/IssueNavigator.jspa?reset=true&pid=10001&fixfor=21660&sorter/field=priority&sorter/order=DESC/images/icons/bug.gif" alt="Bug" border="0" /></a>
+                                    </td>
+                                <td nowrap="true">
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-288">CACHE-288</a>
+                                    </td>
+                                <td >
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-288">Error in the HashDiskPersistenceListener byteArrayToHexString</a>
+                                    </td>
+                                <td nowrap="true">
+                                            <img src="http://jira.opensymphony.com/secure/IssueNavigator.jspa?reset=true&pid=10001&fixfor=21660&sorter/field=priority&sorter/order=DESC/images/icons/status_closed.gif" alt="Closed" border="0" />Closed
+                                    </td>
+                            </tr>
+                                    <tr class="rowNormal">
+                                                            <td nowrap="true">
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-264"><img src="http://jira.opensymphony.com/secure/IssueNavigator.jspa?reset=true&pid=10001&fixfor=21660&sorter/field=priority&sorter/order=DESC/images/icons/bug.gif" alt="Bug" border="0" /></a>
+                                    </td>
+                                <td nowrap="true">
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-264">CACHE-264</a>
+                                    </td>
+                                <td >
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-264">problem with not escaped group names and their filenames for disk persistence</a>
+                                    </td>
+                                <td nowrap="true">
+                                            <img src="http://jira.opensymphony.com/secure/IssueNavigator.jspa?reset=true&pid=10001&fixfor=21660&sorter/field=priority&sorter/order=DESC/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-255"><img src="http://jira.opensymphony.com/secure/IssueNavigator.jspa?reset=true&pid=10001&fixfor=21660&sorter/field=priority&sorter/order=DESC/images/icons/bug.gif" alt="Bug" border="0" /></a>
+                                    </td>
+                                <td nowrap="true">
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-255">CACHE-255</a>
+                                    </td>
+                                <td >
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-255"> AbstractConcurrentReadCache#put(Object key, Object value) may return a wrong value</a>
+                                    </td>
+                                <td nowrap="true">
+                                            <img src="http://jira.opensymphony.com/secure/IssueNavigator.jspa?reset=true&pid=10001&fixfor=21660&sorter/field=priority&sorter/order=DESC/images/icons/status_closed.gif" alt="Closed" border="0" />Closed
+                                    </td>
+                            </tr>
+                                    <tr class="rowNormal">
+                                                            <td nowrap="true">
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-249"><img src="http://jira.opensymphony.com/secure/IssueNavigator.jspa?reset=true&pid=10001&fixfor=21660&sorter/field=priority&sorter/order=DESC/images/icons/improvement.gif" alt="Improvement" border="0" /></a>
+                                    </td>
+                                <td nowrap="true">
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-249">CACHE-249</a>
+                                    </td>
+                                <td >
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-249">Performance improvment for large disk persistence usage</a>
+                                    </td>
+                                <td nowrap="true">
+                                            <img src="http://jira.opensymphony.com/secure/IssueNavigator.jspa?reset=true&pid=10001&fixfor=21660&sorter/field=priority&sorter/order=DESC/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-278"><img src="http://jira.opensymphony.com/secure/IssueNavigator.jspa?reset=true&pid=10001&fixfor=21660&sorter/field=priority&sorter/order=DESC/images/icons/bug.gif" alt="Bug" border="0" /></a>
+                                    </td>
+                                <td nowrap="true">
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-278">CACHE-278</a>
+                                    </td>
+                                <td >
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-278">Filter ignores max-age parameter when serving from cache</a>
+                                    </td>
+                                <td nowrap="true">
+                                            <img src="http://jira.opensymphony.com/secure/IssueNavigator.jspa?reset=true&pid=10001&fixfor=21660&sorter/field=priority&sorter/order=DESC/images/icons/status_closed.gif" alt="Closed" border="0" />Closed
+                                    </td>
+                            </tr>
+                                    <tr class="rowNormal">
+                                                            <td nowrap="true">
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-178"><img src="http://jira.opensymphony.com/secure/IssueNavigator.jspa?reset=true&pid=10001&fixfor=21660&sorter/field=priority&sorter/order=DESC/images/icons/newfeature.gif" alt="New Feature" border="0" /></a>
+                                    </td>
+                                <td nowrap="true">
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-178">CACHE-178</a>
+                                    </td>
+                                <td >
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-178">JMX Monitoring/Administration via Spring</a>
+                                    </td>
+                                <td nowrap="true">
+                                            <img src="http://jira.opensymphony.com/secure/IssueNavigator.jspa?reset=true&pid=10001&fixfor=21660&sorter/field=priority&sorter/order=DESC/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-284"><img src="http://jira.opensymphony.com/secure/IssueNavigator.jspa?reset=true&pid=10001&fixfor=21660&sorter/field=priority&sorter/order=DESC/images/icons/bug.gif" alt="Bug" border="0" /></a>
+                                    </td>
+                                <td nowrap="true">
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-284">CACHE-284</a>
+                                    </td>
+                                <td >
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-284">Cache.dispatchCacheEntryEvent and Cache.addEventListener implementations are inconsistent</a>
+                                    </td>
+                                <td nowrap="true">
+                                            <img src="http://jira.opensymphony.com/secure/IssueNavigator.jspa?reset=true&pid=10001&fixfor=21660&sorter/field=priority&sorter/order=DESC/images/icons/status_closed.gif" alt="Closed" border="0" />Closed
+                                    </td>
+                            </tr>
+                                    <tr class="rowNormal">
+                                                            <td nowrap="true">
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-274"><img src="http://jira.opensymphony.com/secure/IssueNavigator.jspa?reset=true&pid=10001&fixfor=21660&sorter/field=priority&sorter/order=DESC/images/icons/improvement.gif" alt="Improvement" border="0" /></a>
+                                    </td>
+                                <td nowrap="true">
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-274">CACHE-274</a>
+                                    </td>
+                                <td >
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-274">new method getIntialContext JMSBroadcastingListener</a>
+                                    </td>
+                                <td nowrap="true">
+                                            <img src="http://jira.opensymphony.com/secure/IssueNavigator.jspa?reset=true&pid=10001&fixfor=21660&sorter/field=priority&sorter/order=DESC/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-263"><img src="http://jira.opensymphony.com/secure/IssueNavigator.jspa?reset=true&pid=10001&fixfor=21660&sorter/field=priority&sorter/order=DESC/images/icons/task.gif" alt="Task" border="0" /></a>
+                                    </td>
+                                <td nowrap="true">
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-263">CACHE-263</a>
+                                    </td>
+                                <td >
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-263">Run FindBugs 1.1.3 against current source code</a>
+                                    </td>
+                                <td nowrap="true">
+                                            <img src="http://jira.opensymphony.com/secure/IssueNavigator.jspa?reset=true&pid=10001&fixfor=21660&sorter/field=priority&sorter/order=DESC/images/icons/status_closed.gif" alt="Closed" border="0" />Closed
+                                    </td>
+                            </tr>
+                                    <tr class="rowNormal">
+                                                            <td nowrap="true">
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-292"><img src="http://jira.opensymphony.com/secure/IssueNavigator.jspa?reset=true&pid=10001&fixfor=21660&sorter/field=priority&sorter/order=DESC/images/icons/bug.gif" alt="Bug" border="0" /></a>
+                                    </td>
+                                <td nowrap="true">
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-292">CACHE-292</a>
+                                    </td>
+                                <td >
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-292">CacheFilter max-age default and error-case initialisation are wrong</a>
+                                    </td>
+                                <td nowrap="true">
+                                            <img src="http://jira.opensymphony.com/secure/IssueNavigator.jspa?reset=true&pid=10001&fixfor=21660&sorter/field=priority&sorter/order=DESC/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-290"><img src="http://jira.opensymphony.com/secure/IssueNavigator.jspa?reset=true&pid=10001&fixfor=21660&sorter/field=priority&sorter/order=DESC/images/icons/improvement.gif" alt="Improvement" border="0" /></a>
+                                    </td>
+                                <td nowrap="true">
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-290">CACHE-290</a>
+                                    </td>
+                                <td >
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-290">Bad Practice</a>
+                                    </td>
+                                <td nowrap="true">
+                                            <img src="http://jira.opensymphony.com/secure/IssueNavigator.jspa?reset=true&pid=10001&fixfor=21660&sorter/field=priority&sorter/order=DESC/images/icons/status_closed.gif" alt="Closed" border="0" />Closed
+                                    </td>
+                            </tr>
+                                    <tr class="rowNormal">
+                                                            <td nowrap="true">
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-252"><img src="http://jira.opensymphony.com/secure/IssueNavigator.jspa?reset=true&pid=10001&fixfor=21660&sorter/field=priority&sorter/order=DESC/images/icons/improvement.gif" alt="Improvement" border="0" /></a>
+                                    </td>
+                                <td nowrap="true">
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-252">CACHE-252</a>
+                                    </td>
+                                <td >
+                                            <a href="http://jira.opensymphony.com/browse/CACHE-252">Log warning if user tries to set max entries on an unlimited cache</a>
+                                    </td>
+                                <td nowrap="true">
+                                            <img src="http://jira.opensymphony.com/secure/IssueNavigator.jspa?reset=true&pid=10001&fixfor=21660&sorter/field=priority&sorter/order=DESC/images/icons/status_closed.gif" alt="Closed" border="0" />Closed
+                                    </td>
+                            </tr>
+            </table>
+</p>
+
+
+
+
+                    			    </td>
+		    </tr>
+	    </table>
+    </body>
+</html>

docs/wiki/SVN and Compiling OSCache.html

+<html>
+    <head>
+        <title>OSCache - 
+         and Compiling OSCache
+        </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">
+				    <h3><a name="SVNandCompilingOSCache-SVN"></a>SVN</h3>
+
+<p>The OSCache SVN repository is hosted at <a href="http://svn.opensymphony.com/svn/oscache" title="Visit page outside Confluence">http://svn.opensymphony.com/svn/oscache</a>. You can get the sources anonymously by using e.g. <a href="http://subclipse.tigris.org" title="Visit page outside Confluence">Subclipse</a> a <a href="http://subversion.tigris.org" title="Visit page outside Confluence">Subversion</a> Eclipse Plugin.</p>
+
+<p>If you want to build OSCache from SVN, you have to checkout the project <a href="http://svn.opensymphony.com/svn/opensymphony/trunk/" title="Visit page outside Confluence">OpenSymphony</a> also.</p>
+
+<h3><a name="SVNandCompilingOSCache-CompilingOSCache"></a>Compiling OSCache</h3>
+
+<p>Run <tt>build.xml</tt> with <a href="http://ant.apache.org/" title="Visit page outside Confluence">Ant</a> 1.6.5 (or higher) under Java 1.4 or later. From the OSCache directory, type</p>
+
+<ul>
+	<li>ant - to build the oscache.jar</li>
+	<li>ant dist - to build the complete distribution (only for full SVN checkout)</li>
+	<li>ant clean - to clean up</li>
+</ul>
+
+
+<p>You may need to add the <a href="http://www.jayasoft.org/ivy" title="Visit page outside Confluence">Ivy</a> jar to your $ANT_HOME/lib directory if it is not there already.</p>
+
+                    			    </td>
+		    </tr>
+	    </table>
+    </body>
+</html>

docs/wiki/Spring.html

+<html>
+    <head>
+        <title>OSCache - 
+        Spring
+         </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">
+				    <h2><a name="Spring-Configuringa%7B%7BGeneralCacheAdministrator%7D%7D"></a>Configuring a <tt>GeneralCacheAdministrator</tt></h2>
+
+<p>A <a href="API Usage.html" title="API Usage">GeneralCacheAdministrator</a> instance that picks up configuration from an <a href="Configuration.html" title="Configuration">oscache.properties</a> file can be configured within Spring using the following code:</p>
+<div class="code"><div class="codeContent">
+<pre class="code-xml"><span class="code-tag">&lt;bean id=<span class="code-quote">"cacheAdministrator"</span> class=<span class="code-quote">"com.opensymphony.oscache.general.GeneralCacheAdministrator"</span> destroy-method=<span class="code-quote">"destroy"</span>/&gt;</span></pre>
+</div></div>
+<p>Notice that a <tt>destory-method</tt> is configured to ensure that the <tt>GeneralCacheAdministrator</tt> is closed down gracefully.</p>
+
+<p>If you'd prefer to keep all your configuration inside the Spring configuration, you can omit the <tt>oscache.properties</tt> file and pass in any properties you want to the <tt>GeneralCacheAdministrator</tt> constructor like so:</p>
+<div class="code"><div class="codeContent">
+<pre class="code-xml"><span class="code-tag">&lt;bean id=<span class="code-quote">"cacheAdministrator"</span> class=<span class="code-quote">"com.opensymphony.oscache.general.GeneralCacheAdministrator"</span> destroy-method=<span class="code-quote">"destroy"</span>&gt;</span>
+    <span class="code-tag">&lt;constructor-arg index=<span class="code-quote">"0"</span>&gt;</span>
+        <span class="code-tag">&lt;props&gt;</span>
+            <span class="code-tag">&lt;prop key=<span class="code-quote">"cache.memory"</span>&gt;</span>true<span class="code-tag">&lt;/prop&gt;</span>
+        <span class="code-tag">&lt;/props&gt;</span>
+    <span class="code-tag">&lt;/constructor-arg&gt;</span>
+<span class="code-tag">&lt;/bean&gt;</span></pre>
+</div></div>
+
+<h2><a name="Spring-ConfiguringaCache"></a>Configuring a Cache</h2>
+
+<p>You can configure a <tt>Cache</tt> instance directly using the following snippet of code:</p>
+<div class="code"><div class="codeContent">
+<pre class="code-xml"><span class="code-tag">&lt;bean id=<span class="code-quote">"cache"</span> class=<span class="code-quote">"com.opensymphony.oscache.base.Cache"</span>&gt;</span>
+    <span class="code-tag">&lt;constructor-arg index=<span class="code-quote">"0"</span>&gt;</span>
+        <span class="code-tag">&lt;value&gt;</span>true<span class="code-tag">&lt;/value&gt;</span> <span class="code-tag"><span class="code-comment">&lt;!-- useMemoryCaching --&gt;</span></span>
+    <span class="code-tag">&lt;constructor-arg&gt;</span>
+    <span class="code-tag">&lt;constructor-arg index=<span class="code-quote">"1"</span>&gt;</span>
+        <span class="code-tag">&lt;value&gt;</span>true<span class="code-tag">&lt;/value&gt;</span> <span class="code-tag"><span class="code-comment">&lt;!-- unlimitedDiskCache --&gt;</span></span>
+    <span class="code-tag">&lt;constructor-arg&gt;</span>
+    <span class="code-tag">&lt;constructor-arg index=<span class="code-quote">"2"</span>&gt;</span>
+        <span class="code-tag">&lt;value&gt;</span>true<span class="code-tag">&lt;/value&gt;</span> <span class="code-tag"><span class="code-comment">&lt;!-- overflowPersistence --&gt;</span></span>
+    <span class="code-tag">&lt;constructor-arg&gt;</span>
+<span class="code-tag">&lt;/bean&gt;</span></pre>
+</div></div>
+<p>Alternatively, you can pick up the <tt>Cache</tt> from the <tt>GeneralCacheAdministrator</tt> like so:</p>
+<div class="code"><div class="codeContent">
+<pre class="code-xml"><span class="code-tag">&lt;bean id=<span class="code-quote">"cacheAdministrator"</span> class=<span class="code-quote">"com.opensymphony.oscache.general.GeneralCacheAdministrator"</span> destroy-method=<span class="code-quote">"destroy"</span>/&gt;</span>
+
+<span class="code-tag">&lt;bean id=<span class="code-quote">"cache"</span> factory-bean=<span class="code-quote">"cacheAdministrator"</span> factory-method=<span class="code-quote">"getCache"</span>/&gt;</span></pre>
+</div></div>
+
+                    			    </td>
+		    </tr>
+	    </table>
+    </body>
+</html>
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.