Seminário - SobD

25
Seminário - SobD Introdu₤₧o ao JavaSpaces

description

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 - PowerPoint PPT Presentation

Transcript of Seminário - SobD

Page 1: Seminário - SobD

Seminário - SobD

Introdu₤₧o ao JavaSpaces

Page 2: Seminário - SobD

Agenda

O Que ₫ JavaSpaces ?

A que o JavaSpaces se propõe

API JavaSpaces Principais Classes e Interfaces

Outras Implementa₤ões

Page 3: Seminário - SobD

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

Page 4: Seminário - SobD

Exemplo de Spaces

Page 5: Seminário - SobD

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

Page 6: Seminário - SobD

net.jini.space.JavaSpace

Interface do JavaSpace

M₫todos da Interface read, readIfExists take, takeIfExists write notify Snapshot

Page 7: Seminário - SobD

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

Page 8: Seminário - SobD

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);

}

Page 9: Seminário - SobD

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

Page 10: Seminário - SobD

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

Page 11: Seminário - SobD

Write

Entrys s₧o leased

public lease write(Entry tmpl, Transaction txn, long lease) throws TransactionException, RemoteException

Page 12: Seminário - SobD

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

Page 13: Seminário - SobD

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

Page 14: Seminário - SobD

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

Page 15: Seminário - SobD

Pacotes do Jini

net.jini.core.transaction

net.jini.core.entry

net.jini.core.lease

net.jini.core.event

Page 16: Seminário - SobD

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

Page 17: Seminário - SobD

JavaSpace n₧o ₫....

Um sistema de arquivos

Um banco de dados de objetos

Page 18: Seminário - SobD

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..

Page 19: Seminário - SobD

Fun₤ões do JavaSpace

Deixe o JavaSpace tratar da: Persist₨ncia Concorr₨ncia Transa₤ões Escalabilidade

Page 20: Seminário - SobD

Em resumo...

Se voc₨ pode modelar sua aplica₤₧o como uma troca de objetos

USE JAVASPACES!!!!!!!!!!!!

Page 21: Seminário - SobD

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

Page 22: Seminário - SobD

Outras implementa₤ões

GigaSpaces - http://www.gigaspaces.com Suporte a clusteriza₤₧o Intregra₤₧o com webservices Alta disponibilidade

T-Spaces - IBM

Page 23: Seminário - SobD

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

Page 24: Seminário - SobD

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

Page 25: Seminário - SobD

Maiores Informa₤ões

http://www.java.sun.com/products/javaspaces

http://www.jini.org

[email protected]