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 invocation result invocation Server result Server Client Key: Proc ess : Computer: Integração de Aplicações Arquiteturas – Cliente / Vários Servidores Servic e Server Client Server Client Server Integração de Aplicações Arquiteturas – Servidor Proxy Web s erver Client Proxy s erver Client Web s erver 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) c lient reques t res ults in the downl oadi ng of applet c ode Client Applet c ode Web s erver b) c lient interac ts with the appl et Client Applet Web s erver 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 server Desktop c om pute rs print and other servers Loc al area network Web s erver email server File server print other s ervers the res t of the Internet router/firewal l 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 , s ervic es RMI and RPC T his c hapter reques t-reply protocol marshall ing and external data repres entation UDP and T CP Middleware layers 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;