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 [email protected]