JBoss Cache
description
Transcript of JBoss Cache
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
b c
a
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
POJO Cache
Objeto
CacheInterceptor
1 2
3
45
6
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çãoExemplo 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 CacheLoaderExemplo 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 CacheLoadersRepositório compartilhado
Replicação
Repositório
CacheLoader CacheLoader
Cenários CacheLoadersRepositório único
Replicação
Repositório
CacheLoader
Cenários CacheLoadersRepositórios isolados
Replicação
Repositório
CacheLoader
Repositório
CacheLoader
Configuração JBoss CacheModo de replicação
CacheMode– Sem replicação
LOCAL
– Com replicação 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 CacheReplicação entre um subgrupo
buddyReplicationEnabled– TRUE/FALSE
buddyLocatorProperties– numBuddies = 5– ignoreColocatedBuddies = true
buddyPoolName
Configuração JBoss CacheInvalidação de Cache “Eviction Policy”
EvictionPolicyClass– LRUPolicy, LFUPolicy, MRUPolicy e FIFOPolicy
Region ( fqn de um nó )– maxNodes, minNodes– timeToLiveSeconds– maxAgeSeconds
wakeUpIntervalSeconds
Configuração JBoss CacheCache 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 CacheDúvidas/Perguntas
Helves H. Domingues
MAC 5863 - Sistemas de Middleware Avançados
Prof. Francisco Reverbel