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
Exemplo de Spaces
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
Top Related