220 likes | 359 Views
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
E N D
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
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 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.transaction.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"); }
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