Seminário - SobD Introdu₤₧o ao JavaSpaces. Agenda O Que ₫ JavaSpaces ? A que o JavaSpaces...

Preview:

Citation preview

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 javaspaces-users@java.sun.com

Recommended