Fixed bug in indexed disk cache. Partial key removal was adding duplicates in the recycle bin. This lead to the multiple keys pointing to the same spot on disk.Fixed bug in block disk cache. It couldn't handle items with more than 127 blocks. Now it can. (Note: for performance reasons, you should try to fit your items in as few blocks as possible.)TCP Lateral now uses a queuing zombie service during recovery.Refactored UDP Discovery. Slots for same key updates now get added to the recycle bin.Added File Disk Cache.Default properties should now work.Caught Throwable in JDBC disk cache shrinker, so it won't die.Added a compressing serializer. Added an LHMLRUMemoryCache. Added a clearDiskOnStartup configuration option for the IndexedDisk Cache. False by default. Fixed data chunking bug in BlockDisk.Made "openTimeOut" and "socketTimeOut" configurable on the TCP Lateral.Fixed bug in Remote Http Client URL creation for query strings. Fixed disk cache custom serializer injection.Fixed bug remote cache listener interface.Added a simple http remote cache client and server.Fixed bug in the MySQLDiskCache optimizer. It can now use a shared pool.Fixed balking bug in getMatching( String pattern ) API.Fixed event naming bug in getMatching( String pattern ) API.Added a getMatching( String pattern ) API.Added the ability to inject a custom event queue. You simply specify the classname as the type. Added the ability to share a connection pool amongst different JBC disk cache instances.Added the ability to inject a custom RMI socket factory to be used by the remote cache server. Added a registry keep alive and restore option for the remote cache server.Made all disk cache managers handle custom event loggers. Added eventLogging to major auxiliaries and to the auxiliary factory interface. This allows you to time and monitor the internal working of the cache.Moving to JDK 1.4 compliance. 1.3 not supported. Added the ability to inject custom serializers into auxiliary caches. Added a work-around to the host address resolution used by the TCP lateral and the remote cache. Added getSource to IElementEvent interface. Made spool chunk size configurable. Added RMI socket connect timeout. Made this configurable on the server and client.Fixed client decrement count in indexed disk cache.Moved shutdown hook from disk cache to composite cache manager. Added getMultiple() method to ICache Updated/added license headers in all files. Fixed partial key and group id removal bug in indexed disk cache. Fixed partial key removal SQL syntax problem with the JDBC disk cache. Fixed a few minor missing locks. Added a summary page to the JCSAdmin.jsp that just dumps the stats for a region. It doesn't display all the keys. Added get, put, and remove counts to the lateral and remote stats. Added hit count to disk cache stats. Fixed non thread safe OOS writes in the TCP Lateral Sender. This was causing endless loops deep down in the OOS code. Fixed last element too small recycle bin bug. Added the ability to send all items to disk or to use the disk merely as a swap. This is done by setting the DiskUsagePattern on the cache attributes for a region. Disk optimization now occurs in place, without using additional files. It is far more efficient. The disk cache will not optimize on shutdown if the freedata size is 0. Remote cache client will now shutdown properly. Only send memory items to disk auxiliaries on shutdown. Added the ability to schedule optimizations for the MySQL disk cache. It can also recover from optimization failure and repair the table. It's been tested and is running in a production environment. Fixed the array index out of bounds exception in the Sorted Preferential Array. Fixed UDP discovery configuration problem. The discovery address was not being used. It was broken in the last release. Fixed disk cache class cast problem when running inside the remote cache. The disk cache was casting to an instance and not the ICacheElement interface. You can now configure the remote cache client to not receive from the remote server. Added a new xdoc for the Remote Cache properties. Improved the jcs admin jsp: added stats details, better navigation, item lookup, and remove confirmation. You can configure the remote cache to use a custom RMI Socket Factory with socket timeouts. Removed redundant system out logging from remote cache server. Added additional stats for remote cache. Added a JDBC disk cache. It has been tested with MYSql and HSQL. Added a special HSQL implementation of the JDBC disk cache. This replaces the previous experimental HSQL implementation. Added a new xdoc for the JDBC Disk Cache properties. Removed dependencies on commons-lang and on commons-collections from the core of JCS. Increased test coverage. Fixed entry set creation problem in LRUMap. The remote cache now sends a byte array to the server instead of the class. This allows you to run the remote server without copies of your objects in its classpath. This makes the remote server far easier to use. Created an interface for cache element serializers and made a default implementation. This will allow use to use other serialization mechanisms in the future. I converted the remote cache to use the standard serializer. Added several new unit tests. Improved Javadocs throughout. Moved synchronization from the client to the sorted preferential array. This solved the index out of bounds exception that appeared periodically on disk cleanup. Improved Javadocs throughout. Fixed shutdown for lateral. Added shutdown observer framework. Changed listener thread to a daemon. Made executor on listener use a daemon setting thread factory. Fixed abstract inner class references for Jikes. Improved Javadocs throughout. Properties are loaded using the current thread's classloader by default. When a config file is not found a descriptive error message is printed to the logs. Made an interface for the cache manager to improve testability. Auxiliaries are assigned a cache manager and the lateral TCP has a settable source id, so it can be tested. Increased JGroups version to 2.2.8. It works again. The old JGroups didn't work for unknown reasons. Cleaned up some javadocs. Improved info level logging for TCP lateral. Added configuration properties xdocs for TCP lateral, indexed disk, and memory cache. Created concurrent tests for TCP lateral to verify correct region behavior. Made BDBJE work with new auxiliary changes. UDP discovery no longer activates if the lateral type isn't TCP. Reduced lateral get timeout to 1 second, rather than 10. We still need to disable gets when a timeout occurs.