250 likes | 337 Views
Seminário - SobD. Introdu₤₧o ao JavaSpaces. Agenda. O Que ₫ JavaSpaces ? A que o JavaSpaces se propõe API JavaSpaces Principais Classes e Interfaces Outras Implementa₤ões. Space. Um space ₫ um lugar na rede para compartilhar e guardar objetos
E N D
Seminário - SobD Introdu₤₧o ao JavaSpaces
Agenda • O Que ₫ JavaSpaces ? • A que o JavaSpaces se propõe • API JavaSpaces • Principais Classes e Interfaces • Outras Implementa₤ões
Space • Um space ₫ um lugar na rede para compartilhar e guardar objetos • É a implementa₤₧o da especifica₤₧o do JavaSpace • Pode ser visto como compartilhamento de memória em uma rede • Simples design - 4 opera₤ões
Propósito do JavaSpace • Persist₨ncia Distribuída • Outra forma de construir algoritmos distribuídos • Ao inv₫s de invoca₤₧o de m₫todos, fluxo de objetos • É projetado para dar suporte a aplica₤ões que trabalham com fluxo de objetos entre servidores
net.jini.space.JavaSpace • Interface do JavaSpace • M₫todos da Interface • read, readIfExists • take, takeIfExists • write • notify • Snapshot
Entry • Todos os objetos do Space s₧o entries. • Um Entry ₫ um grupo de objetos tipados expressos em uma classe que implementa a interface net.jini.core.entry.Entry • Campos do tipo Entry devem ser public. • N₧o podem ser: final, transient, primitivos • Classes do tipo Entry deevem possuir um construtor public sem argumentos • Informa₤ões sobre Entry, Jini Technology Core Plataform Specification - Entry
Exemplo de Entry import net.jini.core.entry.*; public class Converter implements Entry { public Float real; public Float dolar; public boolean done; public Converter() {} public Converter(float r, boolean d) { real = new Float(r); done = new Boolean(d); }
Read public Entry read(Entry tmpl, Transaction txn, long timeout) throws UnusableEntryException, TransactionException, InterruptedException, RemoteException public Entry readIfExists(Entry tmpl, Transaction txn, long timeout) throws UnusableEntryException, TransactionException, InterruptedException, RemoteException
Take • Mesma opera₤₧o do read, mas remove Entry do Space public Entry take(Entry tmpl, Transaction txn, long timeout) throws UnusableEntryException, TransactionException, InterruptedException, RemoteException public Entry takeIfExists(Entry tmpl, Transaction txn, long timeout) throws UnusableEntryException, TransactionException, InterruptedException, RemoteException
Write • Entrys s₧o leased public lease write(Entry tmpl, Transaction txn, long lease) throws TransactionException, RemoteException
Notify • M₫todo para registrar listeners que ser₧o informados das mudan₤as no space public EventRegistration notify(Entry tmpl, Transaction txn, RemoteEventListener, long lease, MarshalledObject handback) throws TransactionException, RemoteException • Maiores detalhes, Jini Technology Core Plataform Specification - Event
Snapshot • Minimiza o esfor₤o no uso repetido da mesma Entry -custo de seria₤₧o e entrega public Entry snapshot(Entry e) throws RemoteException • ex: dele₤₧o de vários Entrys com mesmo Template
Relacionamento com Jini • É um servi₤o da tecnologia Jini • Uso do modelo de programa₤₧o do Jini • Transa₤ões • Leasing • Eventos • Criados pelas mesmas pessoas
Pacotes do Jini • net.jini.core.transaction • net.jini.core.entry • net.jini.core.lease • net.jini.core.event
Onde Usar JavaSpaces • Workflow • DataFlow • Aplica₤ões que utilizem fluxo de objetos • Necessidade de controle transa₤ões, eventos • Cache • Criar um space entre os componentes web servers/EJB e o banco de dados (DB) • Exemplo do Jrun
JavaSpace n₧o ₫.... • Um sistema de arquivos • Um banco de dados de objetos
Como utilizar JavaSpaces • Modelar o problema como um fluxo de objetos, ao inv₫s do modo convencional de invoca₤₧o de m₫todos • Definir os objetos • Decidir como e quando os objetos devem entrar e sair do space, utilizando os m₫todos write, take, read, etc..
Fun₤ões do JavaSpace • Deixe o JavaSpace tratar da: • Persist₨ncia • Concorr₨ncia • Transa₤ões • Escalabilidade
Em resumo... • Se voc₨ pode modelar sua aplica₤₧o como uma troca de objetos • USE JAVASPACES!!!!!!!!!!!!
Questões em aberto • A seguran₤a no JavaSpaces ₫ um dos grandes problemas da tecnologia • Projeto Davis - visa resolver este problema • http://www.jini.org
Outras implementa₤ões • GigaSpaces - http://www.gigaspaces.com • Suporte a clusteriza₤₧o • Intregra₤₧o com webservices • Alta disponibilidade • T-Spaces - IBM
Alguns usuários • Cisco • SI - framework para uma escalável infraestrutura de comunica₤₧o (centrais de PABX) • Jrun -Allaire • Utiliza javaspaces para troca de objetos entre instancias de servidores de aplica₤₧o • Mais usuários no http://www.jini.org
Sumário • Use javaspaces quando seu modelo arquitetural permite a troca de objetos • Javaspaces ₫ escalável, transacional, orientado à eventos, simples e funcional • Fortemente integrado com o Jini
Maiores Informa₤ões • http://www.java.sun.com/products/javaspaces • http://www.jini.org • javaspaces-users@java.sun.com