JBoss Cache
Helves H. Domingues
MAC 5863 - Sistemas de
Middleware Avançados
Prof. Francisco Reverbel
Agenda
Visão Geral
TreeCache / Demonstração
POJOCache / Demonstração
Cache Loaders
Configurações
JBoss Cache
Consiste em dois módulos
–
TreeCache
–
Dados em estrutura de árvore
Replicação, transação
Utiliza JGroups
PojoCache
“Acima” do TreeCache
Replicação de objetos POJO
Utiliza AOP
Versão Atual
JBoss Cache 1.4.0 “Jalapeno”
Integrado ao JBoss App. Server como
MBean service.
Standalone – Pode rodar em qualquer Java
EE Server ( WebLogic e WebSphere) e
também em um processo Java fora de um
servidor de applicação.
Aplicações
JBoss Cache como segundo nível de cache para o
Hibernate
Replicação de objetos de sessão em um cluster
Cópia local de dados “caros”:
–
–
–
–
Banco de dados ( acesso mais lento )
Dados calculados ( faz um cálculo )
Parte de conjunto muito grande
Dados remotos, onde o tráfego é lento
Organização dos dados
a
b
c
d
e
f
Full Qualified Name ( Fqn ) = /a/d/f
TreeCache API
put (Fqn path,Object key, Object value)
put (Fqn path,Object key, Map data)
Object get (Fqn path,Object key)
remove(Fqn path)
remove(Fqn path, Object key)
TreeCache
Exemplo 1 / Demonstração
import org.jboss.cache.*;
TreeCache tree = new TreeCache();
PropertyConfigurator config = new PropertyConfigurator();
config.configure(tree, "META-INF/replSync-service.xml");
tree.startService();
tree.put("/a/b/c", "chave", "valor1");
POJOCache API
putObject (Fqn path,Object pojo)
Object getObject (Fqn path)
removeObject(Fqn path)
O objeto que será posto no cache:
–
@org.jboss.cache.aop.annotation.InstanceOfPojoCacheable
POJOCache Interceptadores
1
2
CacheInterceptor
6
3
5
4
POJO Cache
Objeto
POJOCache
Exemplo 2 / Demonstração
// Import necessários…
TreeCache tree = new PojoCache();
PropertyConfigurator config = new PropertyConfigurator();
config.configure(tree, "META-INF/replSync-service.xml");
Person joe = new Person();
joe.setName("Joao Batista");
joe.setAge(31);
Address addr = new Address();
addr.setCity("Sao Paulo");
addr.setStreet("Bosque Saude, 56");
addr.setZip(04136-222);
joe.setAddress(addr);
tree.startService();
tree.putObject("/aop/joe", joe);
POJOCache com Transação
Exemplo 3 / Demonstração
//-- Import necessários…
DummyTransactionManager.getInstance();
Properties prop = new Properties();
prop.put(Context.INITIAL_CONTEXT_FACTORY,"org.jboss.cache.tra
nsaction.DummyContextFactory");
UserTransaction tx = (UserTransaction)new
InitialContext(prop).lookup("UserTransaction");
PojoCache tree = new PojoCache();
PropertyConfigurator config = new PropertyConfigurator();
config.configure(tree, "META-INF/replSync-service.xml");
//-- Criação do Person e Address, etc…
tree.startService();
tree.putObject("/aop/joe", joe);
tx.begin();
joe.setAge(41);
tx.commit();
POJOCache com CacheLoader
Exemplo 4 / Demonstração
//-- Import necessários…
//-- o mesmo do exemplo anterior…
config.configure(tree, "META-INF/oodb-service.xml");
tree.startService();
if(!tree.exists("/aop/joe")) {
print("Criando um entrada no cache");
//-- Cria Person e Addres..
}
else {
print("O Cache ja tem a entrada /aop/joe");
}
Cenários CacheLoaders
Repositório compartilhado
Replicação
CacheLoader
CacheLoader
Repositório
Cenários CacheLoaders
Repositório único
Replicação
CacheLoader
Repositório
Cenários CacheLoaders
Repositórios isolados
Replicação
CacheLoader
CacheLoader
Repositório
Repositório
Configuração JBoss Cache
Modo de replicação
CacheMode
–
Sem replicação
–
Com replicação
–
LOCAL
REPL_SYNC
REPL_ASYNC
Com invalidação
INVALIDATE_SYNC
INVALIDATE_ASYNC
Configuração JBoss Cache
Transação
IsolationLevel
–
–
–
–
–
SERIALIZABLE
REPEATABLE_READ (default)
READ_COMMITTED
READ_UNCOMMITTED
NONE
NodeLockingScheme
–
–
OPTIMISTIC
PESSIMISTIC (default)
Configuração JBoss Cache
Replicação entre um subgrupo
buddyReplicationEnabled
–
buddyLocatorProperties
–
–
TRUE/FALSE
numBuddies = 5
ignoreColocatedBuddies = true
buddyPoolName
Configuração JBoss Cache
Invalidação de Cache “Eviction Policy”
EvictionPolicyClass
–
Region ( fqn de um nó )
–
–
–
LRUPolicy, LFUPolicy, MRUPolicy e FIFOPolicy
maxNodes, minNodes
timeToLiveSeconds
maxAgeSeconds
wakeUpIntervalSeconds
Configuração JBoss Cache
Cache Loaders
Modo de operação
–
–
–
passivation= true/false
preload=(fqn do nó)
shared=true/false
Para cada cache Loaders
–
–
–
–
–
class
location (onde está o repositório)
async=true/false
purgeOnStartup=true/false
ignoreModifications=true/false
JBoss Cache
Dúvidas/Perguntas
Helves H. Domingues
MAC 5863 - Sistemas de
Middleware Avançados
Prof. Francisco Reverbel