Provides advanced cache features via {{ehcache}}
CacheManagerEhcache
<dependency>
<groupId>org.jooby</groupId>
<artifactId>jooby-ehcache</artifactId>
<version>{{version}}</version>
</dependency>{
use(new Eh());
get("/", req -> {
CacheManager cm = require(CacheManager.class);
// work with cm
Ehcache ehcache = require(Ehcache.class);
// work with ehcache
});
}{{ehcache}} can be fully configured from your .conf file and/or programmatically, but for the
time being there is no support for xml.
Caches are configured via .conf like almost everything in {{jooby}}.
ehcache.cache.mycache {
eternal = true
}Later, we can access to mycache with:
{
get("/", req -> {
Ehcache mycache = require(Ehcache.class);
});
}Multiple caches are also possible:
ehcache.cache.cache1 {
maxEntriesLocalHeap = 100
eternal = true
}
ehcache.cache.cache2 {
maxEntriesLocalHeap = 100
eternal = true
}Later, we can access to our caches with:
{
get("/", req -> {
Ehcache cache1 = require("cache1", Ehcache.class);
// ..
Ehcache cache2 = require("cache2", Ehcache.class);
// ..
});
}Previous examples, show how to configure two or more caches, but it is also possible to inherit
cache configuration using the default cache:
ehcache.cache.default {
maxEntriesLocalHeap = 100
eternal = true
}
ehcache.cache.cache1 {
eternal = false
}
ehcache.cache.cache2 {
maxEntriesLocalHeap = 1000
}Here cache1 and cache2 will inherited their properties from the default cache.
Please note the default cache works as a template and isn't a real/usable cache.
{{doc/ehcache/ehcache-session.md}}
Configuration is done in one of two ways: 1) via .conf; or 2) programmatically:.
ehcache {
defaultTransactionTimeout = 1m
dynamicConfig = true
maxBytesLocalDisk = 1k
maxBytesLocalHeap = 1k
maxBytesLocalOffHeap = 1m
monitor = off
# just one event listener
cacheManagerEventListenerFactory {
class = MyCacheEventListenerFactory
p1 = "v1"
p2 = true
}
# or multiple event listeners
cacheManagerEventListenerFactory {
listener1 {
class = MyCacheEventListenerFactory1
p1 = "v1"
p2 = true
}
listener2 {
class = MyCacheEventListenerFactory2
}
}
diskStore.path = ${application.tmpdir}${file.separator}ehcache
# etc...
}{
use(new Eh().doWith(conf -> {
conf.setDefaultTransactionTimeoutInSeconds(120);
// etc...
}));
}{{appendix}}