jms/Queue

Propaganda
Integrações de Aplicações
Empresariais
Prof. Paulo Fernando da Silva
UNC – Universidade do Contestado
Pós-Graduação em Sistemas de Informação Aplicados
a Web
Organização
• Módulo 1:
– Integração de Aplicações;
– Troca de Mensagens (Client-Server);
• Módulo 2:
– RPC
– RMI;
• Módulo 3:
– Corba
– DCOM;
Organização
• Módulo 4:
– Enterprise Java Beans;
– Servidores de Aplicação;
• Módulo 5:
– Message Brokers;
– Agentes de Software;
• Módulo 6:
– Web Services / XML;
– Avaliação;
Módulo 1 - Sumário
• Integração de Aplicações;
– Introdução;
– Arquiteturas;
– Middleware;
• Troca de Mensagens;
–
–
–
–
Arquitetura Client-Server
JMS – Java Message Server;
Estudo de Caso;
Atividade;
Integração de Aplicações
Introdução
• Integrar:
–
–
–
–
–
Sistemas Legados;
Sistemas Distribuídos;
Comércio Eletrônico;
Cliente / Fornecedor;
etc...
Integração de Aplicações
Introdução - Desafios
•
•
•
•
•
•
•
Heterogeneidade;
Abertura;
Segurança;
Escalabilidade;
Tolerância a Falhas;
Concorrência;
Transparência;
Integração de Aplicações
Transparência
Transparência
Acesso
Localização
Descrição
Esconde diferenças na representação de dados e como um
recurso é acessado
Esconde onde um recurso está localizado
Migração
Esconde que um recurso pode mover-se para outra localização
Relocação
Esconde que um recurso pode ser movido para outra localização
enquanto esta sendo usado
Replicação
Esconde que um recurso está distribuído por vários servidores.
Concorrência
Falha
Persistência
Esconde que um recurso pode ser compartilhado por vários
usuários concorrentes
Esconde a falha e recuperação de um recurso
Esconde quando um recurso (software) esta em memória ou em
disco
Integração de Aplicações
Arquiteturas – Cliente / Servidor
Client
inv oc ation
result
inv oc ation
Server
Server
result
Client
Key:
Proc es s:
Computer:
Integração de Aplicações
Arquiteturas – Cliente / Vários Servidores
Service
Server
Client
Server
Client
Server
Integração de Aplicações
Arquiteturas – Servidor Proxy
Web
s erv er
Client
Prox y
s erv er
Client
Web
s erv er
Integração de Aplicações
Arquiteturas – Peer-to-Peer
Applic ation
Applic ation
Coordination
c ode
Coordination
c ode
Applic ation
Coordination
c ode
Integração de Aplicações
Arquiteturas – Código Móvel
a) client request res ults in the dow nloading of applet c ode
Client
Applet code
Web
s erv er
b) client interac ts w ith the applet
Client
Applet
Web
s erv er
Integração de Aplicações
Arquiteturas – Agente Móvel
• É um programa que viaja de um
computador para outros;
• Inclui código e dados;
• Geralmente realiza coleta de
informações;
• Realiza acesso a recursos locais no
servidor em que executa;
Integração de Aplicações
Exemplos – Intra-Rede
email s erv er
Desktop
computers
print and other s erv ers
Web server
Loc al area
netw ork
email s erv er
File s erv er
print
other s erv ers
the res t of
the Internet
router/firew all
Integração de Aplicações
Exemplos – Inter-Rede
intranet
ISP
%
%
%
%
backbone
satellite link
desktop computer:
server
: link:
network
Integração de Aplicações
Middleware
Applic ations, services
RMI and RPC
This
c hapter
reques t-reply protocol
marshalling and ex ternal data representation
UDP and TCP
Middlew are
lay ers
Troca de Mensagens
Comunicação Sockets
socket
any port
agreed port
socket
message
client
server
other ports
Internet address = 138.37.94.248
Internet address = 138.37.88.249
Troca de Mensagens
Arquitetura Client-Server
Client
doOperation
Server
Request
message
(wait)
Reply
message
(continuation)
getRequest
select object
execute
method
sendReply
Troca de Mensagens
Arquitetura Client-Server
public byte[] doOperation (RemoteObjectRef o, int methodId, byte[] arguments)
sends a request message to the remote object and returns the reply.
The arguments specify the remote object, the method to be invoked and the arguments of
that method.
public byte[] getRequest ();
acquires a client request via the server port.
public void sendReply (byte[] reply, InetAddress clientHost, int clientPort);
sends the reply message reply to the client at its Internet address and port.
Troca de Mensagens
Arquitetura Client-Server
Name
Client
Messages sent by
Server
Client
R
Request
RR
Request
Reply
RRA
Request
Reply
Acknowledge reply
Troca de Mensagens
Visão do JNDI usado pelo JMS
• JNDI: Java Naming and Directory
Interface;
• É uma interface para registro e
localização de nomes e diretórios;
• É necessário existir um provedor JNDI
que implemente a interface;
Troca de Mensagens
Visão do JNDI usado pelo JMS
Troca de Mensagens
Visão do JNDI usado pelo JMS
• Nomes estão em um contexto;
• Aplicação precisa obter o contexto JNDI
inicial;
• É necessário informar:
– Initial Context Factory;
– Provider URL
Troca de Mensagens
Visão do JNDI usado pelo JMS
• Pesquisa no Contexto:
queue = (Queue) ic.lookup(queueName);
Troca de Mensagens
JMS – Java Message Server
• É uma API para troca de mensagens
entre processos;
• JMS não implementa a troca de
mensagens;
• JMS é apenas uma interface;
• É necessário um “provedor” para
implementar a interface JMS;
Troca de Mensagens
JMS – Java Message Server: Arquitetura
• Provedor: implementa a interface JMS;
• Cliente JMS: envia ou recebe
mensagem;
• Domínio de troca: ponto-a-ponto ou
publicação-assinatura;
• Mensagem: objetos trocados na
comunicação;
Troca de Mensagens
JMS – Java Message Server: Arquitetura
• Filas: recebem mensagens ponto-aponto;
• Tópicos: recebem as mensagens
publicação-assinatura;
• Objetos administrados: usados para
criar a conexão:
– Fábricas e Destinos;
• Conexão e Sessão;
Troca de Mensagens
JMS – Java Message Server
Troca de Mensagens
JMS – Java Message Server: Conexão
• Cliente obtém acesso ao JMS Provider
através do JNDI;
• Ferramenta administrativa cria
ConnectionFactory e Destination;
• Cliente pesquisa no JNDI;
• Cliente acessa JMS Provider;
Troca de Mensagens
JMS – Java Message Server: Conexão
Troca de Mensagens
JMS – Java Message Server: Tipos de Troca
• Ponto-a-Ponto:
– Trabalha com filas;
– Mensagem de um para um;
• Publicação-Assinatura:
– Trabalho com tópicos;
– Mensagem de um para muitos;
Troca de Mensagens
JMS – Point-to-Point
Troca de Mensagens
JMS – Publishes / Subscribes
Troca de Mensagens
JMS – Java Message Server: API
•Ver JavaDoc
Troca de Mensagens
Estudo de Caso - Ambiente
• J2SE 1.4:
– Verificar instalação e configuração;
– Variável JAVA_HOME e bin no path;
• J2EE 1.3:
– Verificar instalação e configuração;
– Variável J2EE_HOME, bin no path e
lib\j2ee.jar no classpath
– Implementação de Referência será o provedor
JNDI e JMS;
Troca de Mensagens
Estudo de Caso - Queue
• Código Fonte:
– SimpleQueueSender/SimpleQueueReceiver;
• Compilar Sender / Receiver;
• Iniciar Provedor JNDI e JMS;
– start j2ee –verbose;
• Executar servidor / cliente:
– java <fonte> jms/Queue;
Troca de Mensagens
Estudo de Caso - Queue
• Executar na mesma janela:
– Java SimpleQueueSender jms/Queue 5;
– Java SimpleQueueReceiver jms/Queue;
• Testar em diferentes máquinas;
• Criar uma nova fila:
– j2eeAdmin –addJmsDestionation jms/MyQueue
Queue;
• Fazer testes com nova fila;
Troca de Mensagens
Atividade - Queue
• Criar duas filas:
– Cliente para Servidor;
– Servidor para Cliente;
• Cliente envia uma requisição para
servidor por uma fila;
• Servidor responde para cliente pela
outra fila;
• Mensagens são exibidas no cliente e no
servidor;
Troca de Mensagens
Estudo de Caso - Topic
• Código Fonte:
– SimpleTopicSubscriber / TextListener;
– SimpleTopicPublisher;
• Compilar Subscriber / Publisher;
• Iniciar Provedor JNDI e JMS;
– start j2ee –verbose;
• Executar Subscriber / Publisher:
– java <fonte> jms/Topic;
Troca de Mensagens
Estudo de Caso - Topic
• Testar em diferentes máquinas;
• Criar um novo tópico:
– j2eeAdmin –addJmsDestionation jms/MyTopic
Topic;
– Listar recursos;
– Remover recursos;
• Fazer testes com novo Tópico;
Troca de Mensagens
Atividade - Topic
• Criar dois tópicos:
– Cliente para Servidor;
– Servidor para Cliente;
• Cliente envia uma requisição para
servidor por um tópico;
• Servidor responde para cliente pelo
outro tópico;
• Mensagens são exibidas no cliente e no
servidor;
Download