jboss cache helves h. domingues mac 5863 - sistemas de middleware avançados prof. francisco...

Post on 07-Apr-2016

219 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

top related