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
Download

JBoss Cache - IME-USP