Post on 07-Apr-2016
JBoss Cache
Helves H. DominguesMAC 5863 - Sistemas de Middleware AvançadosProf. 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
CacheInterceptor1 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. DominguesMAC 5863 - Sistemas de Middleware Avançados Prof. Francisco Reverbel