JMS. Java Message Service

Tamanho: px
Começar a partir da página:

Download "JMS. Java Message Service"

Transcrição

1 JMS

2 Autoria Autoria Fábio Cecin (1a versão) Versão V3.2, junho de 2013 C. Geyer

3 Referências Referências: The JMS Tutorial após versão 1.4 do JEE em capítulo do tutorial JEE da Sun v.1.5 (JEE): até v. 1.3: Documentação (javadoc) do pacote JMS: Dica: utilizar estes documentos como referência de programação para os exercícios.

4 Referências Referências: The JMS Tutorial Após versão 1.4 do JEE Em capítulos do tutorial JEE da Sun v.1.6 (JEE): Caps. 47 e 48

5 Referências Referências: The JMS Tutorial Até v. 1.3: Em 2012 desvia para: index.html

6 Referências Referências: Especificação docs html

7 Súmula Súmula Visão Geral JMS Arquitetura Modelo de Programação Mecanismos de Confiabilidade Integração com EJB Enterprise JavaBeans Message-Driven Beans

8 Visão geral Visão Geral JMS é uma API padrão da plataforma JEE que dá acesso a serviços de messaging. Messaging pode ser entendido como troca de mensagens, similar ao sistema de correio eletrônico. JMS é uma API mais um serviço para troca de mensagens entre componentes de software distribuídos oferecendo diversas funcionalidades inexistentes em outros pacotes (bibliotecas, mws, protocolos, ) Recepção Assíncrona (também) e Confiável similar à programação orientada a eventos.

9 Visão geral Visão Geral JMS foi originalmente desenvolvido para a integração com MOMs (Message-Oriented Middleware) Por exemplo, MQSeries da IBM Permitiria comunicação entre componentes Java e não-java Mas pode ser usado atualmente para integração com Sistemas de Informação (EIS: Enterprise Information Systems) existentes A partir da versão 1.3 do padrão JEE, a API JMS tornou-se uma solução completa, independente, para aplicações de messaging. Procura ser ao mesmo tempo: simples e flexível, com diversas opções

10 Visão Geral Vantagens de JMS Especialmente sobre alternativas mais fortemente acopladas (RMI ): Fácil substituição: componentes não dependem da interface de outros componentes Componentes que trocam mensagens via JMS não precisam se conhecer Comunicação entre dois componentes não requer que ambos estejam operacionais para que a comunicação aconteça É possível enviar uma mensagem e continuar a execução de forma assíncrona

11 Visão Geral Vantagens de JMS Diversas opções de sincronização no recebimento time-out síncrona e assíncrona 2 grandes modelos ponto a ponto publicador-assinante (publish-subscribe)

12 Visão Geral JMS versões Segundo artigos da Oracle v1.1: 2002 v2.0: abril 2013 Ou segundo wikipedia JMS 1.0.2b (June 25, 2001) JMS 1.1 (March 18, 2002) JMS 2.0 (May )

13 Visão Geral JMS implementações Em ActiveMQ Apache Apache Qpid, using AMQP Oracle Weblogic (part of the Oracle Fusion Middleware Fusion Middleware suite) and Oracle AQ from Oracle Corporation EMS from TIBCO FFMQ, GNU LGPL licensed

14 Visão Geral JMS implementações JBoss Messaging and HornetQ from Jboss JORAM from the OW2 Consortium Open Message Queue from Oracle OpenJMS from The OpenJMS Group Solace JMS from Solace systems RabbitMQ by Rabbit Technologies Ltd., acquired by SpringSource

15 Visão Geral JMS implementações SAP Process Integration ESB SonicMQ from Progress Software StormMQ, using AMQP SwiftMQ Tervela

16 JMS implementações Visão Geral Ultra Messaging from 29 West (acquired by Informatica) webmethods from Software AG WebSphere Application Server from IBM which provides an inbuilt default messaging provider known as the Service Integration Bus (SIBus), or which can connect to WebSphere MQ as a JMS provider "Choosing a messaging system: WebSphere MQ vs. the WebSphere Application Server Service Integration Bus library/techarticles/1109_wallis/1109_wallis.html work=ibm developerworks WebSphere MQ (formerly MQSeries) from[ibm

17 Visão Geral JMS - características funcionais em JEE: EJBs, clientes e componentes web podem consumir mensagens JMS de forma síncrona (recepção) Permite interação com um novo ( faz tempo ) tipo de bean, o message-driven bean: um EJB que consome mensagens JMS de forma assíncrona. Envio e recebimento de mensagens JMS podem participar de transações distribuídas.

18 Arquitetura JMS Arquitetura JMS Administrative Tool; Cliente JMS Provedor JMS

19 Arquitetura JMS Provedor de Serviço JMS: Implementa as interfaces do JMS Oferece recursos administrativos e de controle JEE deve oferecer um provedor JMS Clientes JMS: Componentes escritos em Java Consomem e produzem mensagens Arquitetura JMS Todo componente de uma aplicação JEE pode ser cliente JM

20 Arquitetura JMS Arquitetura JMS Ferramenta administrativa cria objetos administrativos em um serviço de nomes JNDI objetos são Connection Factories e Destinations, utilizados pelos clientes JMS.

21 Arquitetura JMS Um provedor de serviços JMS (JEE 1.3 e mais) suporta obrigatoriamente tanto o domínio de comunicação ponto-a-ponto quanto o de publicador-assinante. Ponto-a-ponto Publicador-assinante

22 Modelo (domaine) ponto-a-ponto abstrações filas (queues) de mensagens produtores de mensagens consumidores de mensagens cada mensagem é enviada a uma fila Modelo ponto-a-ponto fila mantém mensagens até serem consumidas ou expiradas cada mensagem só tem um consumidor sem dependência de tempo entre produtor e consumidor consumidor pode consumir mensagem mesmo se não estivesse executando quando do envio da mensagem recebedor confirma recepção da mensagem

23 Modelo publicador-assinante Modelo publicador-assinante abstrações tópicos (topics) publicadores de mensagens assinantes de mensagens clientes publicadores enviam (publicam) mensagens a um tópico (topic) assinantes se inscrevem como interessados em um tópico o sistema se encarrega de distribuir as mensagens de um tópico aos assinantes desse tópico mensagens são mantidas até que todos os assinantes atuais as recebam

24 Modelo publicador-assinante Modelo publicador-assinante uma mensagem pode ter vários consumidores (assinantes) há dependência de tempo entre publicador e assinante um assinante só pode consumir mensagens publicadas após a inscrição subscrições duráveis permitem contornar a dependência de tempo oferecem mais flexibilidade e confiabilidade (como as filas) mas preservam a relação n (> 1) consumidores para 1 mensagem

25 Modelos x Usos Quando usar cada modelo? ponto-a-ponto: use quando cada mensagem deve ser lida por 1 cliente publicador-assinante use quando cada mensagem pode ser lida por zero, 1 ou vários clientes

26 Interfaces comuns Interfaces comuns envio e recepção de mensagens com o mesmo código seja fila (ponto-a-ponto) ou topic (assinante) as destinações indicarão se fila ou topic as destinações podem ser definidas dinamicamente

27 Consumo de mensagens Consumo de mensagens Síncrono cliente deve executar o método receive o método receive bloqueia até: uma mensagem chegar ou se houver um time-out Assíncrona cliente registra um message-listener a um consumidor semelhante a um event-listener a cada nova mensagem que chega ao destino o sistema chama o método onmessage esse método processa a mensagem

28 Modelo de Programação JMS Modelo JMS: Entidades Administrativas: - Fábricas de Conexões - Destinos Entidades de Programação: - Conexão - Sessão - Mensagem - Produtor - Consumidor

29 Modelo de Programação JMS Fábricas de conexões e destinos São criados e modificados em ferramentas administrativas, em contraste com criação via clientes JMS. O objetivo é manter a portabilidade da API, ao encapsular informações específicas de conexão e de endereçamento nestes objetos. Cada fornecedor JEE Implementa suas próprias ferramentas administrativas. Sun JEE: j2eeadmin (/j2ee/bin) (versão 1.3) Clientes JMS acessam esses objetos através de interfaces padronizadas Usualmente via injeção de recursos (anotação)

30 Modelo de Programação JMS Fábrica de conexões (connection factory): É o objeto utilizado pelo cliente JMS para criar uma conexão com um serviço JMS. Uma instalação de JMS Deve fornecer pelo menos duas fábricas (nomes JNDI): QueueConnectionFactory (ponto-a-ponto) TopicConnectionFactory (publicador-assinante) Há ainda a fábrica geral: ConnectionFactory J2EE (C. Geyer)

31 Modelo de Programação JMS Exemplo: Obtendo uma Connection Factory em uma classe = "jms/connectionfactory") private static ConnectionFactory = "jms/connectionfactory") private static ConnectionFactory connectionfactory;

32 Modelo de Programação JMS Destino (Destination): Um objeto que o cliente JMS usa como alvo das mensagens que produz e fonte das mensagens que consome. Em comunicação ponto-a-ponto um destino é chamado fila (queue) Em comunicação publicador-assinante um destino é chamado tópico (topic). Uma aplicação JMS Pode utilizar quantas filas e/ou tópicos forem necessários.

33 Modelo de Programação JMS Destino (Destination): Objetos filas e tópicos injetados no programa só podem ser usados como filas ou tópicos Objetos Destinations Para desenvolver componentes que manipulem filas e tópicos com o mesmo código se pode usar objetos Destinations O comportamento de um programa é determinado pelo tipo de destino (fila ou tópico) E não do tipo de factory

34 Modelo de Programação JMS JEE Sun Criando destinos (filas e tópicos): j2eeadmin -addjmsdestination <nome JNDI da fila> queue j2eeadmin -addjmsdestination <nome JNDI do tópico> topic obs.: válido para versão 1.3 (revisar nas seguintes)

35 Modelo de Programação JMS Visão geral de codificando um cliente JMS : Obter ConnectionFactory e Destinations na classe cliente Usar factory para criar uma Connection com o provedor JMS Usar Connection para criar uma ou mais Sessions Usar uma Session com os Destinations para criar produtores e consumidores Habilitar a Connection (método start) para iniciar a entrega de Messages no cliente consumidor Criar uma mensagem usando método específico (conforme tipo da mensagem) de Session Enviar mensagem com método send do produtor Receber mensagem com método receive do consumidor

36 Modelo de Programação JMS JEE Sun Obtendo um destino no cliente, após = "jms/queue") private static Queue = "jms/topic" private static Topic = "jms/queue") private static Queue = "jms/topic") private static Topic topic;

37 Modelo de Programação JMS Conexões (Connections): Conexão é um canal entre o cliente e o provedor de serviço JMS Após criado e obtido (@resource) um objeto fábrica de conexões, é possível criar conexões a partir do mesmo: QueueConnection myqueuecon = myqueuefact.createqueueconnection(); TopicConnection mytopiccon = mytopicfact.createtopicconnection(); Connection connection = connectionfactory.createconnection() A criação geral (Connection) pode ser usada para queue e topic queue e topic serão indicados na criação de produtores e consumidores

38 Modelo de Programação JMS Conexões Podem ser (re)iniciadas e suspensas após criação. Não há recebimento de mensagens enquanto a conexão está suspensa: myqueuecon.start(); /* (re)inicia */ myqueuecon.stop(); /* suspende */ connection.start(); connection.stop(); É necessário fechar conexões após o uso: myqueuecon.close(); connection.close();

39 Modelo de Programação JMS Resumo de codificando um cliente JMS : Obter ConnectionFactory e Destinations na classe cliente Usar factory para criar uma Connection com o provedor JMS Habilitar a Connection (método start) para iniciar a entrega de Messages no cliente consumidor Usar Connection para criar uma ou mais Sessions Usar uma Session com os Destinations para criar produtores e consumidores Criar uma mensagem usando método específico (conforme tipo da mensagem) de Session Enviar mensagem com método send do produtor Receber mensagem com método receive do consumidor

40 Modelo de Programação JMS Sessão (Session): Uma sessão representa um contexto para uma thread produzir e consumir mensagens. Também prove um contexto de transação para um conjunto de sends e receives

41 Modelo de Programação JMS Sessão (Session): A partir de uma conexão é possível criar sessões (sessions): QueueSession myqueuesession = myqueuecon.createqueuesession(false, Session.AUTO_ACKNOWLEDGE); Arg. 1: sessão sem semântica de transação. Arg. 2: confirmação automática de recebimento de mensagens pela sessão. Session session = connection.createsession( false, Session.AUTO_ACKNOWLEDGE);

42 Modelo de Programação JMS Resumo de codificando um cliente JMS : Obter ConnectionFactory e Destinations na classe cliente Usar factory para criar uma Connection com o provedor JMS Habilitar a Connection (método start) para iniciar a entrega de Messages no cliente consumidor Usar Connection para criar uma ou mais Sessions Usar uma Session com os Destinations para criar produtores e consumidores Criar uma mensagem usando método específico (conforme tipo da mensagem) de Session Enviar mensagem com método send do produtor Receber mensagem com método receive do consumidor

43 Modelo de Programação JMS Produtor de mensagens: É um objeto criado por uma sessão Utilizado para enviar mensagens para um destino especificado. Argumento da criação do produtor Há 3 tipos de interfaces conforme o tipo de destino Geral: interface Producer Para filas: interface QueueSender Para tópicos: interface TopicPublisher

44 Modelo de Programação JMS Exemplo de produtor Destination dest = queue ou topic;... Producer producer = session.createproducer(dest /*destino*/ ); Message mymessage = /* cria mensagem */ producer.send( mymessage );

45 Modelo de Programação JMS Produtor de mensagens: É possível não especificar o destino (null) Nesse caso o destino será especificado pelo método de envio (send)

46 Consumidor de mensagens: Modelo de Programação JMS Objeto criado por uma sessão para recebimento de mensagens enviadas a um destino especificado. Um cliente JMS utiliza um consumidor de mensagens para registrar interesse por certos destinos hospedados em um provedor JMS. O provedor de serviço JMS se encarrega de transferir as mensagens de um destino para os consumidores registrados neste destino. Antes do 1o receive, é necessário ativar a recepção via o método start da sessão

47 Modelo de Programação JMS Consumidor de mensagens: Geral: interface Consumer Para filas: interface QueueReceiver Para tópicos: interface TopicSubscriber Exemplo com consumo síncrono: Consumer consumer = session.createconsumer(dest); Message m = consumer.receive( 1000 ); receive ( ) parâmetro opcional timeout em milisegundos.

48 Modelo de Programação JMS Resumo de codificando um cliente JMS : Obter ConnectionFactory e Destinations na classe cliente Usar factory para criar uma Connection com o provedor JMS Usar Connection para criar uma ou mais Sessions Habilitar a Connection (método start) para iniciar a entrega de Messages no cliente consumidor Usar uma Session com os Destinations para criar produtores e consumidores Criar uma mensagem usando método específico (conforme tipo da mensagem) de Session Enviar mensagem com método send do produtor Receber mensagem com método receive do consumidor

49 Modelo de Programação JMS Mensagem (Message): Objeto que representa uma mensagem Formato permitiria uso de mensagens por aplicações não JMS Deve ser criado por uma sessão através de interface específica

50 Modelo de Programação JMS Mensagem (Message): Possui três partes: Cabeçalho (header): possui campos pré-definidos que devem ser preenchidos pela aplicação ou pela implementação JMS. tipo, destino, prioridade, time-stamp,... Propriedades (properties): espaço para um header opcional, mantido pela aplicação. Corpo (body): opcional.

51 Modelo de Programação JMS Tipos de mensagens (corpo): TextMessage: uma String BytesMessage: uma sequência de bytes StreamMessage: um stream de tipos primitivos Java (int, char, byte[], String...) ObjectMessage: objeto Java serializado Message: mensagem sem corpo

52 Modelo de Programação JMS Criando e enviando uma mensagem de texto: TextMessage message = session.createtextmessage(); message.settext( minha mensagem ); producer.send(message); Consumindo a mensagem: Message m = consumer.receive(); if (m instanceof TextMessage) { TextMessage message = (TextMessage)m; System.out.println( Mensagem chegou: + message.gettext() ); } else { /* erro: não recebe outro tipo de mensagem */ }

53 Modelo de Programação JMS Message listeners: Uma classe qualquer da aplicação pode atuar como consumidora assíncrona de mensagens ao implementar a interface MessageListener, do padrão JMS. Esta interface especifica o método: void onmessage( Message ) onde Message é a mensagem de interesse que deve ser processada pela classe. Esse método substitui o receive da recepção síncrona

54 Modelo de Programação JMS Message listeners: A classe listener deve ser registrada junto a um consumidor (Consumer ou QueueReceiver ou TopicSubscriber) através do método setmessagelistener( ) (do consumidor), para receber as mensagens. Exemplo: mytopicsubscriber.setmessagelistener( mytopiclistener ); Onde mytopiclistener é instância de classe que implementa a interface MessageListener. E mytopicsubscriber é um consumidor

55 Modelo de Programação JMS Message listeners: A entrega de mensagens também deve ser ativada pelo método start da sessão Um listener específico pode receber mensagens de ambos os tipos O tipo é definido pelo consumidor ao qual o listener registrado Vários listener podem estar registrados em uma sessão Os respectivos consumidores foram criados nessa sessão Nesse caso a execução de todos os listener é serializada Em JEE/EJB, um message drive bean é um caso especial de listener

56 Modelo de Programação JMS Filtro de mensagens: É possível filtrar mensagens em recepção Um seletor usa uma sintaxe baseada em SQL A seleção só pode ser feita sobre atributos das partes cabeçalho e propriedades da mensagem Não sobre atributos da 3a parte (aplicação)

57 Modelo de Programação JMS Exceções: JMS possui uma hierarquia de exceções, cuja raiz é JMSException. Portanto, é possível utilizar um tratador genérico para qualquer exceção JMS: try {... } catch (JMSException ex) {... }

58 Modelo de Programação JMS Resumo de codificando um cliente JMS : Obter ConnectionFactory e Destinations na classe cliente Usar factory para criar uma Connection com o provedor JMS Usar Connection para criar uma ou mais Sessions Usar uma Session com os Destinations para criar produtores e consumidores Habilitar a Connection (método start) para iniciar a entrega de Messages no cliente consumidor Criar uma mensagem usando método específico (conforme tipo da mensagem) de Session Enviar mensagem com método send do produtor Receber mensagem com método receive do consumidor

59 Confiabilidade JMS Confiabilidade JMS JMS possui vários mecanismos para aumento da robustez da aplicação: Nível de confirmação (acknowledgement) Persistência de mensagens Nível de prioridade da mensagem Mensagens com tempo de vida Criação de destinos temporários Assinaturas duráveis (durable subscriptions) Transações locais (local transactions)

60 Confiabilidade JMS Nível de confirmação (acknowledgement) é especificado na criação da fila ou tópico: Session.AUTO_ACKNOWLEDGE: mensagens automaticamente confirmadas. Session.CLIENT_ACKNOWLEDGE: cliente deve invocar o método acknowledge( ) da mensagem para confirmá-la. Session.DUPS_OK_ACKNOWLEDGE: idem a AUTO, porém pode resultar em entregas duplicadas de mensagens, com possível ganho em performance.

61 JMS 2.0 JMS 2.0 Objetivo principal Nova API simplified Permite códigos mais concisos, simples Tem todas funcionalidades da API anterior API 1.1 classic Continua válida sem prazo para deprecated

62 JMS 2.0 JMS 2.0 API simplified Novas interfaces: JMSContext, JMSProducer, and JMSConsumer JMSContext Substitui Connection e Session

63 JMS 2.0 JMS 2.0 API simplified JMSProducer Substitui MessageProducer Oferece manipulação da mensagem Opções de entrega Headers Properties Usando encadeamento de método (method chaining)

64 JMS 2.0 JMS 2.0 API simplified JMSConsumer Substitui MessageConsumer De modo similar à JMSProducer x MessageProducer

65 JMS 2.0 JMS 2.0 Exemplo comparando simplified x classic Aplicação Versão classic Envio de mensagem de texto public void sendmessagejms11(connectionfactory connectionfactory, Queue queuestring text) { try { Connection connection = connectionfactory.createconnection(); try { Session session = connection.createsession(false, Session.AUTO_ACKNOWLEDGE);

66 JMS 2.0 JMS 2.0 Exemplo comparando simplified x classic Aplicação Envio de mensagem de texto Versão classic } MessageProducer messageproducer = session.createproducer(queue); TextMessage textmessage = session.createtextmessage(text); messageproducer.send(textmessage); } finally { connection.close(); } } catch (JMSException ex) { // handle exception (details omitted) }

67 JMS 2.0 JMS 2.0 Exemplo comparando simplified x classic Versão simplified public void sendmessagejms20(connectionfactory connectionfactory, Queue queue, String text) { try (JMSContext context = connectionfactory.createcontext();) { context.createproducer().send(queue, text); } catch (JMSRuntimeException ex) { // handle exception (details omitted) } }

68 JMS 2.0 JMS 2.0 Exemplo comparando simplified x classic Diferenças Simplified cria um único objeto Context E não 2: Connection e Session Simplified tem chamada de close implícita Opções de sessão Simplified: há uma opção default false e Session.AUTO_ACKNOWLEDGE sem transação e confirmação automática de mensagens Outras opções: um (1) único parâmetro

69 JMS 2.0 JMS 2.0 Exemplo comparando simplified x classic Diferenças Mensagens texto (text): conteúdo passado como argumento do método send processamento de exceções mais simples Exceção JMSRuntimeException

70 JMS 2.0 JMS 2.0 Exemplo comparando simplified x classic Aplicação Recepção síncrona de mensagem de texto Diferenças similares às do envio

71 JMS 2.0 JMS 2.0 Exemplo comparando simplified x classic Versão classic public String receivemessagejms11(connectionfactory connectionfactory,queue queue) { String body=null; try { Connection connection = connectionfactory.createconnection(); try { Session session = connection.createsession(false, Session.AUTO_ACKNOWLEDGE); MessageConsumer messageconsumer = session.createconsumer(queue); connection.start();

72 JMS 2.0 JMS 2.0 Exemplo comparando simplified x classic Versão classic (cont.) } TextMessage textmessage = (TextMessage) messageconsumer.receive(); body = textmessage.gettext(); } finally { connection.close(); } } catch (JMSException ex) { // handle exception (details omitted) } return body;

73 JMS 2.0 JMS 2.0 Exemplo comparando simplified x classic Versão simplified (cont.) public String receivemessagejms20( ConnectionFactory connectionfactory,queue queue) { String body=null; try (JMSContext context = connectionfactory.createcontext() { JMSConsumer consumer = session.createconsumer(queue); body = consumer.receivebody(string.class); } } catch (JMSRuntimeException ex) { // handle exception (details omitted) } return body;

74 JMS 2.0 JMS 2.0 Exemplo comparando simplified x classic Diferenças Simplified cria um único objeto Context E não 2: Connection e Session Simplified tem chamada de close implícita Opções de sessão Simplified: há uma opção default false e Session.AUTO_ACKNOWLEDGE

75 JMS 2.0 JMS 2.0 Exemplo comparando simplified x classic Diferenças Não é necessário ativar a recepção (método start) Mensagens texto (text): Recupera texto (corpo da mensagem) com receive especial (sem uso de métodos adicionais) receivebody(string.class)

76 Resumo JMS Resumo JMS é uma especificação de serviços e API para troca de mensagens Arquitetura Clientes Ferramentas Provedor (serviço) Modos Filas Tópicos (publish/subscribe)

77 Resumo JMS Resumo API Factories Destinos Connections Sessions Producers e Consumers Messages Diversas funcionalidades como Semânticas variadas de sincronização Time-outs Maior confiabilidade

78 Fim Parcial

79 Opções de Confiabilidade

80 Confiabilidade JMS Persistência de mensagens: DeliveryMode.PERSISTENT: instrui o provedor de serviço JMS a tomar cuidado extra com esta mensagem, para que ela não seja perdida em caso de falhas no serviço. DeliveryMode.NON_PERSISTENT Esta opção pode ser especificada a cada envio de mensagem (nos métodos send( ) e publish( ) dos produtores), Ou especificada no produtor: myproducer.setdeliverymode( <modo> );

81 Confiabilidade JMS Nível de prioridade da mensagem: Entre 0 e 9 (default=4). O provedor JMS tenta entregar mensagens de maior prioridade primeiro. Pode ser especificado por envio de mensagem: mytopicpublisher.publish(message, DeliveryMode.NON_PERSISTENT, 3); // 3 é a prioridade Pode ser especificado no produtor: myproducer.setpriority( 3 );

82 Confiabilidade JMS Mensagens com tempo de vida Por exemplo, para se criar mensagens com tempo de vida de 16 segundos: mytopicpublisher.publish(message, DeliveryMode.NON_PERSISTENT, 3, 16000); myproducer.settimetolive( ); Por default, mensagens não expiram.

83 Confiabilidade JMS Criação de destinos temporários: é possível a criação programática de destinos, subordinados a uma conexão (Connection): TemporaryQueue mytempqueue= queuesession.createtemporaryqueue(); TemporaryTopic mytemptopic = topicsession.createtemporarytopic(); O destino temporário, e todas as mensagens contidas neste, são descartados quando a conexão é fechada.

84 Destino temporários Confiabilidade JMS Qualquer produtor pode enviar mensagens para um destino temporário, mas apenas consumidores criados sob a mesma conexão podem consumir mensagens deste. Uso comum - sistema requisição-resposta: Cabeçalho: JMSDestination = myqueue JMSReplyTo = tempqueue Cliente JMS tempqueue myqueue Cliente JMS

85 Confiabilidade JMS Assinaturas duráveis: após criada uma assinatura durável, um ou mais assinantes duráveis (um de cada vez) podem obter a assinatura e recuperar mensagens enviadas antes das suas criações individuais:

86 Confiabilidade JMS Transações locais (local transactions): uma sessão criada com suporte a transações disponibiliza dois métodos adicionais: mysession.commit( ) - efetiva a transação. mysession.rollback( ) - desfaz operações parciais da transação. Este suporte é simples, porém limitado Não pode ser usado em EJBs, que devem utilizar o mecanismo de transações distribuídas do JEE.

87 Confiabilidade JMS Em transações cuidado com a ordem das operações: Somente send()s ou receive()s = OK receive()s antes de send()s = OK send() de uma mensagem e após, tentativa de receive() da resposta na mesma transação = deadlock Causa: mensagens enviadas em uma sessão transacional não são de fato enviadas até o commit( )

88 Confiabilidade JMS Adicionalmente: uma mensagem enviada em uma transação não pode ser consumida na mesma transação. Isto ocorre porque este suporte à transação é local ao contexto de um cliente e um provedor JMS, que intervém entre o send e o receive:

89 JMS + Enterprise JavaBeans EJB: Qualquer tipo de enterprise bean pode atuar como um cliente JMS: Produzir mensagens. Consumir mensagens de forma síncrona - Consumer.receive( ); Para evitar uso desnecessário de recursos do servidor ( receive nunca satisfeito) utilizar receivenowait( ) ou receive( <timeout-ms> ): while ( ) { /* retorna null se não há mensagem em 10ms */ Message m = myconsumer.receivenowait( 10 );

90 JMS + Enterprise JavaBeans Por questão de performance recomenda-se realizar o lookup de objetos administrativos (fábricas de conexões e destinos) apenas no método ebjcreate( ) do bean, ao invés de realizar o lookup cada vez em que o objeto for necessário em um método de serviço do bean. É recomendado utilizar o suporte a transações distribuídas do container EJB (container-managed transactions) ou, em caso de requerimentos especiais da aplicação, outro mecanismo, como bean-managed transactions.

91 É importante JMS + Enterprise JavaBeans liberar os recursos JMS (sessões e conexões) quando não forem mais utilizadas. Se um recurso for utilizado apenas durante um método de negócio do bean, utilizar uma estrutura try-finally dentro do método: // criação de recursos JMS try { // operações que podem jogar exceções } /* opcionalmente: catch { } */ finally { // liberação dos recursos JMS }

92 JMS + Enterprise JavaBeans Se o recurso for utilizado durante todo o tempo de vida do EJB, é recomendável criar o recurso JMS (sessão ou conexão) no método ejbcreate( ), e destruir o recurso no método ejbremove( ).

93 Message-Driven Beans Message-Driven Beans - Um MDB é um bean que pode consumir mensagens de forma assíncrona, assim como um message listener: O método onmessage( ) do MDB é invocado quando uma mensagem chega no destino de interesse. O MDB pode registrar interesse em dois destinos: uma fila, ou em uma assinatura durável (tópico). Um MDB não possui interfaces home e remote, sendo constituído apenas de uma classe de bean.

94 Message-Driven Beans MDB x Session Beans Possui similaridades com Stateless Session Bean Instâncias com tempo de vida curto; Não guarda estado para um cliente específico; Podem ser criadas previamente em uma pool para atendimento de vários clientes; Podem manter alguns recursos em aberto entre requisições: conexões JMS, conexões com BD, referências EJB...

95 Message-Driven Beans MDB x message listener Um MDB possui algumas diferenças quanto a um message listener: setmessagelistener( ) não é invocado. A associação do MDB com um destino e uma fábrica de conexões é feita em tempo de deploy do bean para o container EJB.

96 Message-Driven Beans MDB Além de implementar os métodos ejbcreate( ), ejbremove( ) e onmessage( ), o MDB deve implementar o método: void setmessagedrivencontext( MessageDrivenContext ) Este método será invocado uma vez, antes de ejbcreate( ), para fornecer um objeto MessageDrivenContext. Atualmente, MessageDrivenContext = EJBContext.

97 Message-Driven Beans MDB O MessageDrivenContext fornece um método útil para utilização conjunta com container-managed transactions: void setrollbackonly( ) Este método marca a transação atual como falha, garantindo que ela não receberá commit. Ser invocado pelo MD quando uma exceção for lançada no seu método onmessage( ), garante o rollback da transação distribuída em que este recebimento de mensagem possa estar participando.

98 Exemplo - message-driven bean: import javax.ejb.*; import javax.naming.*; import javax.jms.*; public class MessageBean implements MessageDrivenBean, MessageListener { Message-Driven Beans private transient MessageDrivenContext mdc = null; private Context context; public MessageBean() { } /* construtor */ public void ejbcreate() { } public void ejbremove() { }

99 Message-Driven Beans Exemplo - message-driven bean: public void setmessagedrivencontext(messagedrivencontext mdc) { this.mdc = mdc; }

100 Message-Driven Beans Exemplo - message-driven bean: /* este MDB processa mensagens de texto */ public void onmessage(message inmessage) { TextMessage msg = null; try { if (inmessage instanceof TextMessage) { msg = (TextMessage) inmessage; System.out.println("MESSAGE BEAN: Message + "received: " + msg.gettext()); } else { System.out.println("Message of wrong type: " + inmessage.getclass().getname()); } }

101 Message-Driven Beans Exemplo - message-driven bean: } catch (JMSException e) { System.err.println("MessageBean.onMessage: " + "JMSException: " + e.tostring()); mdc.setrollbackonly(); /* se transação: falhou */ } catch (Throwable te) { System.err.println("MessageBean.onMessage: " + "Exception: + te.tostring()); }

102 JMS

103 Slides antigos

104 Modelo de Programação JMS Exemplo Obtendo uma Connection Factory: Context ctx = new InitialContext(); QueueConnectionFactory myqueuefact = (QueueConnectionFactory) ctx.lookup("queueconnectionfactory"); Obs.: Invocar InitialContext( ) sem parâmetros resulta na busca pelo arquivo jndi.properties determina o serviço JNDI (LDAP,...) e o espaço de nomes JNDI a ser utilizado para a construção do contexto.

105 Modelo de Programação JMS JEE Sun Criando destinos (filas e tópicos): j2eeadmin -addjmsdestination <nome JNDI da fila> queue j2eeadmin -addjmsdestination <nome JNDI do tópico> topic obs.: válido para versão 1.3 (revisar nas seguintes) Obtendo um destino no cliente, após criação: Queue myqueue = (Queue) ctx.lookup( Nome JNDI da fila );

Message Driven Beans. Apresentação. Introdução Implementação de MDBs Deployment no JBoss Java Messaging Service Exemplo

Message Driven Beans. Apresentação. Introdução Implementação de MDBs Deployment no JBoss Java Messaging Service Exemplo Message Driven Beans Apresentação Introdução Implementação de MDBs Deployment no JBoss Java Messaging Service Exemplo 1 Introdução Message Driven Beans são EJBs que consomem mensagens enviadas para filas

Leia mais

A interface de uma mensagem é extremamente flexível e permite várias formas de customização de conteúdo. Figura 1 - Tipos de Mensagens JMS

A interface de uma mensagem é extremamente flexível e permite várias formas de customização de conteúdo. Figura 1 - Tipos de Mensagens JMS Programando com Java Artigo http://mballem.wordpress.com/ Chat JMS com ActiveMQ Java Message Service Autor Marcio Ballem: é formado em Sistemas de Informação e possui certificação Oracle Certified Professional,

Leia mais

Enterprise Java Beans

Enterprise Java Beans Enterprise Java Beans Prof. Pasteur Ottoni de Miranda Junior DCC PUC Minas Disponível em www.pasteurjr.blogspot.com 1-O que é um Enterprise Java Bean? O Entertprise Java Bean (EJB) é um componente server-side

Leia mais

Java Message Service (JMS)

Java Message Service (JMS) J530 - Enterprise JavaBeans Java Message Service (JMS) Helder da Rocha (helder@acm.org) argonavis.com.br 1 Introdução O objetivo deste capítulo é apresentar uma introdução ao modelo de comunicações baseado

Leia mais

UTILIZAÇÃO DA TECNOLOGIA ENTERPRISE JAVABEANS NO DESENVOLVIMENTO DE APLICAÇÕES DISTRÍBUIDAS

UTILIZAÇÃO DA TECNOLOGIA ENTERPRISE JAVABEANS NO DESENVOLVIMENTO DE APLICAÇÕES DISTRÍBUIDAS UTILIZAÇÃO DA TECNOLOGIA ENTERPRISE JAVABEANS NO DESENVOLVIMENTO DE APLICAÇÕES DISTRÍBUIDAS ¹Lucas Martins de Andrade, ¹Jaime William Dias ¹Universidade Paranaense (Unipar) Paranavaí PR Brasil lucasm748@gmail.com

Leia mais

ENTERPRISE JAVABEANS 3. Msc. Daniele Carvalho Oliveira

ENTERPRISE JAVABEANS 3. Msc. Daniele Carvalho Oliveira ENTERPRISE JAVABEANS 3 Msc. Daniele Carvalho Oliveira Apostila Servlets e JSP www.argonavis.com.br/cursos/java/j550/index.html INTRODUÇÃO Introdução Enterprise JavaBeans é um padrão de modelo de componentes

Leia mais

UNIVERSIDADE. Sistemas Distribuídos

UNIVERSIDADE. Sistemas Distribuídos UNIVERSIDADE Sistemas Distribuídos Ciência da Computação Prof. Jesus José de Oliveira Neto Comunicação Inter-Processos Sockets e Portas Introdução Sistemas distribuídos consistem da comunicação entre processos

Leia mais

Como criar um EJB. Criando um projeto EJB com um cliente WEB no Eclipse

Como criar um EJB. Criando um projeto EJB com um cliente WEB no Eclipse Como criar um EJB Criando um projeto EJB com um cliente WEB no Eclipse Gabriel Novais Amorim Abril/2014 Este tutorial apresenta o passo a passo para se criar um projeto EJB no Eclipse com um cliente web

Leia mais

Java 2 Enterprise Edition Fundamentos básicos de Transações

Java 2 Enterprise Edition Fundamentos básicos de Transações Java 2 Enterprise Edition Fundamentos básicos de Transações Helder da Rocha www.argonavis.com.br 1 Objetivos Apresentar conceitos essenciais sobre transações em aplicações J2EE Este curso não aborda o

Leia mais

PadrãoIX. Módulo II JAVA. Marcio de Carvalho Victorino. Servlets A,L,F,M

PadrãoIX. Módulo II JAVA. Marcio de Carvalho Victorino. Servlets A,L,F,M JAVA Marcio de Carvalho Victorino 1 Servlets 2 1 Plataforma WEB Baseada em HTTP (RFC 2068): Protocolo simples de transferência de arquivos Sem estado (não mantém sessão aberta) Funcionamento (simplificado):

Leia mais

J530 - Enterprise JavaBeans. Message-driven Beans. argonavis.com.br. Helder da Rocha

J530 - Enterprise JavaBeans. Message-driven Beans. argonavis.com.br. Helder da Rocha J530 - Enterprise JavaBeans Message-driven Beans Helder da Rocha (helder@acm.org) argonavis.com.br 1 O que é um Message-Driven Bean Bean guiado por mensagens, ou eventos Um event-handler distribuído em

Leia mais

Sistemas Distribuídos na WEB (Plataformas para Aplicações Distribuídas) Sumário. Java 2 Enterprise Edition. J2EE (Java 2 Enterprise Edition)

Sistemas Distribuídos na WEB (Plataformas para Aplicações Distribuídas) Sumário. Java 2 Enterprise Edition. J2EE (Java 2 Enterprise Edition) Sistemas Distribuídos na WEB (Plataformas para Aplicações Distribuídas) J2EE () Sumário Introdução J2EE () APIs J2EE Web Container: Servlets e JSP Padrão XML 2 J2EE é Uma especificação para servidores

Leia mais

TDC2012. EJB simples e descomplicado, na prática. Slide 1

TDC2012. EJB simples e descomplicado, na prática. Slide 1 TDC2012 EJB simples e descomplicado, na prática Slide 1 Palestrantes Kleber Xavier Arquiteto Senior / Globalcode kleber@globalcode.com.br Vinicius Senger Arquiteto Senior / Globalcode vinicius@globalcode.com.br

Leia mais

Considerações no Projeto de Sistemas Cliente/Servidor

Considerações no Projeto de Sistemas Cliente/Servidor Cliente/Servidor Desenvolvimento de Sistemas Graça Bressan Graça Bressan/LARC 2000 1 Desenvolvimento de Sistemas Cliente/Servidor As metodologias clássicas, tradicional ou orientada a objeto, são aplicáveis

Leia mais

Serviço de Transação. Transação - Conceitos

Serviço de Transação. Transação - Conceitos Serviço de Transação Conceitos Tipos de Gerência de Transação JTA Transação - Conceitos Garantir as propriedades ACID Atomicidade Consistencia Isolamento Durabilidade Transações no modelo EJB Dois Tipos

Leia mais

Comunicação entre Processos

Comunicação entre Processos Comunicação entre Processos Comunicação entre Processos - Sistemas Operacionais fornecem mecanismos para comunicação entre processos (IPC), tal como filas de mensagens, semáfaros e memória compartilhada.

Leia mais

3 Um Framework Orientado a Aspectos para Monitoramento e Análise de Processos de Negócio

3 Um Framework Orientado a Aspectos para Monitoramento e Análise de Processos de Negócio 32 3 Um Framework Orientado a Aspectos para Monitoramento e Análise de Processos de Negócio Este capítulo apresenta o framework orientado a aspectos para monitoramento e análise de processos de negócio

Leia mais

Enterprise Java Bean. Enterprise JavaBeans

Enterprise Java Bean. Enterprise JavaBeans Enterprise Java Bean Introdução Elementos do Modelo Enterprise JavaBeans A especificação do Enterprise JavaBeansTM (EJB) define uma arquitetura para o desenvolvimento de componentes de software distribuídos

Leia mais

UNIDADE IV ENTERPRISE JAVABEANS

UNIDADE IV ENTERPRISE JAVABEANS UNIDADE IV ENTERPRISE JAVABEANS MODELO J2EE COMPONENTES DE Camada de Negócios NEGÓCIOS JAVA SERVLET, JSP E EJB Nos capítulos anteriores, foi mostrado como desenvolver e distribuir aplicações servlet e

Leia mais

EJB. Session Beans. J2EE (C. Geyer) Introdução a SessionBean 1

EJB. Session Beans. J2EE (C. Geyer) Introdução a SessionBean 1 EJB Session Beans J2EE (C. Geyer) Introdução a SessionBean 1 Autores! Autores " Cláudio Geyer " Eduardo Studzinski Estima de Castro (EJB 3.0) " Gisele Pinheiro Souza (EJB 3.0) J2EE (C. Geyer) Introdução

Leia mais

Prof. Fellipe Araújo Aleixo fellipe.aleixo@ifrn.edu.br

Prof. Fellipe Araújo Aleixo fellipe.aleixo@ifrn.edu.br Prof. Fellipe Araújo Aleixo fellipe.aleixo@ifrn.edu.br A arquitetura Enterprise JavaBeans é uma arquitetura de componentes para o desenvolvimento e a implantação de aplicativos de negócio distribuídos

Leia mais

Laboratório de Computação VI JAVA IDL. Fabricio Aparecido Breve - 981648-9

Laboratório de Computação VI JAVA IDL. Fabricio Aparecido Breve - 981648-9 Laboratório de Computação VI JAVA IDL Fabricio Aparecido Breve - 981648-9 O que é Java IDL? Java IDL é uma tecnologia para objetos distribuídos, ou seja, objetos em diferentes plataformas interagindo através

Leia mais

Programação de Computadores - I. Profª Beatriz Profº Israel

Programação de Computadores - I. Profª Beatriz Profº Israel Programação de Computadores - I Profª Beatriz Profº Israel As 52 Palavras Reservadas O que são palavras reservadas São palavras que já existem na linguagem Java, e tem sua função já definida. NÃO podem

Leia mais

Message Oriented Middleware (MOM)

Message Oriented Middleware (MOM) Message Oriented Middleware (MOM) March 24, 2010 Comunicação Assíncrona Problema: Nem sempre as entidades comunicantes estão disponíveis simultaneamente. Por exemplo, um servidor de submissão pode estar

Leia mais

Web Technologies. Tópicos da apresentação

Web Technologies. Tópicos da apresentação Web Technologies Tecnologias de Middleware 2004/2005 Hugo Simões hsimoes@di.fc.ul.pt 1 A Web Tópicos da apresentação Tecnologias Web para suporte a clientes remotos (Applets,CGI,Servlets) Servidores Aplicacionais

Leia mais

Sistemas Distribuídos RPC x RMI. Edeyson Andrade Gomes www.edeyson.com.br

Sistemas Distribuídos RPC x RMI. Edeyson Andrade Gomes www.edeyson.com.br Sistemas Distribuídos RPC x RMI Edeyson Andrade Gomes www.edeyson.com.br Roteiro da Aula Chamada Remota a Procedimento Definição Passagem de Parâmetros STUBS Semântica de Falhas 2 RPC Chamada Remota a

Leia mais

Sistemas Distribuídos Comunicação entre Processos em Sistemas Distribuídos: Middleware de comunicação Aula II Prof. Rosemary Silveira F. Melo Comunicação em sistemas distribuídos é um ponto fundamental

Leia mais

Este tutorial contém material (texto, código, imagens) produzido por Helder da Rocha em outubro de 2013 e poderá ser usado de acordo com os termos da licença Creative Commons BY-SA (Attribution- ShareAlike)

Leia mais

Enterprise Java Beans

Enterprise Java Beans 1 Enterprise Java Beans Java Platform, Enterprise Edition. The Java EE Tutorial https://docs.oracle.com/javaee/7/jeett.pdf Formador Java EE Annotations http://www.physics.usyd.edu.au/~rennie/javaeereferencesheet.pdf

Leia mais

UNIVERSIDADE. Sistemas Distribuídos

UNIVERSIDADE. Sistemas Distribuídos UNIVERSIDADE Sistemas Distribuídos Ciência da Computação Prof. Jesus José de Oliveira Neto Web Services Web Services Existem diferentes tipos de comunicação em um sistema distribuído: Sockets Invocação

Leia mais

Java. Marcio de Carvalho Victorino www.dominandoti.eng.br

Java. Marcio de Carvalho Victorino www.dominandoti.eng.br Java Marcio de Carvalho Victorino www.dominandoti.eng.br 3. Considere as instruções Java abaixo: int cont1 = 3; int cont2 = 2; int cont3 = 1; cont1 += cont3++; cont1 -= --cont2; cont3 = cont2++; Após a

Leia mais

UFG - Instituto de Informática

UFG - Instituto de Informática UFG - Instituto de Informática Especialização em Desenvolvimento de Aplicações Web com Interfaces Ricas EJB 3.0 Prof.: Fabrízzio A A M N Soares professor.fabrizzio@gmail.com Aula 5 Servidores de Aplicação

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos Modelo Cliente-Servidor: comunicação orientada por mensagem e comunicação orientada por fluxo Prof. MSc. Hugo Souza Continuando o módulo 03 da primeira unidade, iremos abordar sobre

Leia mais

Sistemas Distribuídos Capítulos 3 e 4 - Aula 4

Sistemas Distribuídos Capítulos 3 e 4 - Aula 4 Sistemas Distribuídos Capítulos 3 e 4 - Aula 4 Aula passada Threads Threads em SDs Processos Clientes Processos Servidores Aula de hoje Clusters de Servidores Migração de Código Comunicação (Cap. 4) Fundamentos

Leia mais

Integrando Java com Banco de Dados

Integrando Java com Banco de Dados Especialização em Engenharia de Software Programação Orientada a Objetos JDBC Java Database Connectivity Sérgio Soares scbs@cin.ufpe.br Objetivos Apresentar os conceitos básicos da especificação de Java

Leia mais

Programação Orientada a Objetos JDBC Java Database Connectivity

Programação Orientada a Objetos JDBC Java Database Connectivity Especialização em Engenharia de Software Programação Orientada a Objetos JDBC Java Database Connectivity Sérgio Soares scbs@cin.ufpe.br Objetivos Apresentar os conceitos básicos da especificação de Java

Leia mais

Laboratório de Banco de Dados Aula 1 Acesso a Banco de Dados. Prof. Josenildo Silva jcsilva@ifma.edu.br

Laboratório de Banco de Dados Aula 1 Acesso a Banco de Dados. Prof. Josenildo Silva jcsilva@ifma.edu.br Laboratório de Banco de Dados Aula 1 Acesso a Banco de Dados Prof. Josenildo Silva jcsilva@ifma.edu.br Introdução O JDBC (Java Database Connectivity) foi criado com o intuito de fornecer aos programadores

Leia mais

UFG - Instituto de Informática

UFG - Instituto de Informática UFG - Instituto de Informática Especialização em Desenvolvimento de Aplicações Web com Interfaces Ricas EJB 3.0 Prof.: Fabrízzio A A M N Soares professor.fabrizzio@gmail.com Aula 13 Web Services Web Services

Leia mais

Programação distribuída e paralela (C. Geyer) RPC 1

Programação distribuída e paralela (C. Geyer) RPC 1 Programação distribuída e paralela (C. Geyer) RPC 1 Autores C. Geyer Local II-UFRGS Versão v6 2008-2 Disciplinas SOII Programação distribuída e paralela (C. Geyer) RPC 2 Bibliografia base original dos

Leia mais

Tutorial JMS com ActiveMQ Nível: Introdutório Autor: José Damico (jdamico@br.ibm.com) IBM Data: 26 de novembro de 2006

Tutorial JMS com ActiveMQ Nível: Introdutório Autor: José Damico (jdamico@br.ibm.com) IBM Data: 26 de novembro de 2006 Tutorial JMS com ActiveMQ Nível: Introdutório Autor: José Damico (jdamico@br.ibm.com) IBM Data: 26 de novembro de 2006 O objetivo deste tutorial é oferecer uma documentação básica passo-a-passo e um exemplo

Leia mais

Aula 1 Acesso a Banco de Dados

Aula 1 Acesso a Banco de Dados Laboratório de Banco de Dados Aula 1 Acesso a Banco de Dados Prof. Josenildo Silva jcsilva@ifma.edu.br Introdução O JDBC (Java Database Connectivity) foi criado com o intuito de fornecer aos programadores

Leia mais

Comunicação em Sistemas Distribuídos. Conceitos: Paradigma C/S. Conceitos: Paradigma C/S. Paradigma Cliente/Servidor

Comunicação em Sistemas Distribuídos. Conceitos: Paradigma C/S. Conceitos: Paradigma C/S. Paradigma Cliente/Servidor Comunicação em Sistemas Distribuídos Paradigma / Os processos em um SD estão lógica e fisicamente separados. Precisam se comunicar para que possam interagir O desempenho de um SD depende criticamente do

Leia mais

J2EE. J2EE - Surgimento

J2EE. J2EE - Surgimento J2EE Java 2 Enterprise Edition Objetivo: Definir uma plataforma padrão para aplicações distribuídas Simplificar o desenvolvimento de um modelo de aplicações baseadas em componentes J2EE - Surgimento Início:

Leia mais

3 SCS: Sistema de Componentes de Software

3 SCS: Sistema de Componentes de Software 3 SCS: Sistema de Componentes de Software O mecanismo para acompanhamento das chamadas remotas se baseia em informações coletadas durante a execução da aplicação. Para a coleta dessas informações é necessário

Leia mais

1.6. Tratamento de Exceções

1.6. Tratamento de Exceções Paradigmas de Linguagens I 1 1.6. Tratamento de Exceções Uma exceção denota um comportamento anormal, indesejado, que ocorre raramente e requer alguma ação imediata em uma parte do programa [GHE 97, DER

Leia mais

Bancos de dados distribuídos Prof. Tiago Eugenio de Melo tiagodemelo@gmail.com. http://www.tiagodemelo.info

Bancos de dados distribuídos Prof. Tiago Eugenio de Melo tiagodemelo@gmail.com. http://www.tiagodemelo.info Bancos de dados distribuídos Prof. Tiago Eugenio de Melo tiagodemelo@gmail.com Última atualização: 20.03.2013 Conceitos Banco de dados distribuídos pode ser entendido como uma coleção de múltiplos bds

Leia mais

(UFF) JDBC (I) TEPIS II

(UFF) JDBC (I) TEPIS II Aula 20: JDBC (I) Diego Passos Universidade Federal Fluminense Técnicas de Projeto e Implementação de Sistemas II Diego Passos (UFF) JDBC (I) TEPIS II 1 / 33 JDBC: Introdução Especificação que provê acesso

Leia mais

INTEGRADOR DE MENSAGENS CORPORATIVAS PARA UMA INFRA-ESTRUTURA DE ELETRONIC DATA INTERCHANGE (EDI)

INTEGRADOR DE MENSAGENS CORPORATIVAS PARA UMA INFRA-ESTRUTURA DE ELETRONIC DATA INTERCHANGE (EDI) INTEGRADOR DE MENSAGENS CORPORATIVAS PARA UMA INFRA-ESTRUTURA DE ELETRONIC DATA INTERCHANGE (EDI) Fernando José Lunelli Marcel Hugo - Orientador Roteiro da apresentação: Introdução Objetivos Fundamentação

Leia mais

Stateful Session Beans

Stateful Session Beans J530 - Enterprise JavaBeans Stateful Session Beans Helder da Rocha (helder@acm.org) argonavis.com.br 1 Stateful Session Beans Quando um cliente chama um método de um bean, ele está iniciando um diálogo

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos Comunicação Remota Gustavo Reis gustavo.reis@ifsudestemg.edu.br 1 Comunicação entre processos está no coração de todo sistema distribuído. Não tem sentido estudar sistemas distribuídos

Leia mais

Parte I. Demoiselle Mail

Parte I. Demoiselle Mail Parte I. Demoiselle Mail Para o envio e recebimento de e-s em aplicativos Java, a solução mais natural é usar a API JavaMail [http:// www.oracle.com/technetwork/java/java/index.html]. Ela provê um framework

Leia mais

REDES DE COMPUTADORES

REDES DE COMPUTADORES REDES DE COMPUTADORES 09/2013 Cap.3 Protocolo TCP e a Camada de Transporte 2 Esclarecimentos Esse material é de apoio para as aulas da disciplina e não substitui a leitura da bibliografia básica. Os professores

Leia mais

J533 - Minicurso. Helder da Rocha (helder@acm.org) www.argonavis.com.br

J533 - Minicurso. Helder da Rocha (helder@acm.org) www.argonavis.com.br J533 - Minicurso Helder da Rocha (helder@acm.org) www.argonavis.com.br 1 Sumário Introdução Messaging e Message-Oriented Middlewares (MOMs) Quando usar MOMs? Vantagens e desvantagens O que é o Java Message

Leia mais

Projeto de Software Orientado a Objeto

Projeto de Software Orientado a Objeto Projeto de Software Orientado a Objeto Ciclo de Vida de Produto de Software (PLC) Analisando um problema e modelando uma solução Prof. Gilberto B. Oliveira Estágios do Ciclo de Vida de Produto de Software

Leia mais

Guia de Fatores de Qualidade de OO e Java

Guia de Fatores de Qualidade de OO e Java Qualiti Software Processes Guia de Fatores de Qualidade de OO e Java Versã o 1.0 Este documento só pode ser utilizado para fins educacionais, no Centro de Informática da Universidade Federal de Pernambuco.

Leia mais

Descrição. Implementação. Departamento de Informática e Estatística Universidade Federal de Santa Catarina LAB 4 Transferência de Arquivos

Descrição. Implementação. Departamento de Informática e Estatística Universidade Federal de Santa Catarina LAB 4 Transferência de Arquivos Departamento de Informática e Estatística Universidade Federal de Santa Catarina LAB 4 Transferência de Arquivos Descrição Implemente nesta atividade de laboratório um programa em Java utilizando threads

Leia mais

Especialização em desenvolvimento para web com interfaces ricas. Tratamento de exceções em Java Prof. Fabrízzio A. A. M. N. Soares

Especialização em desenvolvimento para web com interfaces ricas. Tratamento de exceções em Java Prof. Fabrízzio A. A. M. N. Soares Especialização em desenvolvimento para web com interfaces ricas Tratamento de exceções em Java Prof. Fabrízzio A. A. M. N. Soares Objetivos Conceito de exceções Tratar exceções pelo uso de try, catch e

Leia mais

Framework. Marcos Paulo de Souza Brito João Paulo Raittes

Framework. Marcos Paulo de Souza Brito João Paulo Raittes Framework Marcos Paulo de Souza Brito João Paulo Raittes Sobre o seu surgimento A primeira versão do spring foi escrita por Rod Johnson em 2002, quando ele estava Lancando o seu livro Expert One-on-One

Leia mais

Orientação a Objetos

Orientação a Objetos 1. Domínio e Aplicação Orientação a Objetos Um domínio é composto pelas entidades, informações e processos relacionados a um determinado contexto. Uma aplicação pode ser desenvolvida para automatizar ou

Leia mais

Fundamentos da Plataforma Java EE. Prof. Fellipe Aleixo (fellipe.aleixo@ifrn.edu.br)

Fundamentos da Plataforma Java EE. Prof. Fellipe Aleixo (fellipe.aleixo@ifrn.edu.br) Fundamentos da Plataforma Java EE Prof. Fellipe Aleixo (fellipe.aleixo@ifrn.edu.br) Como a plataforma Java EE trata o SERVIÇO DE NOMES Serviço de Nomes Num sistema distribuído os componentes necessitam

Leia mais

4. Qual seria o impacto da escolha de uma chave que possua letras repetidas em uma cifra de transposição?

4. Qual seria o impacto da escolha de uma chave que possua letras repetidas em uma cifra de transposição? Prova de 2011-02 1. Descreva duas maneiras de estabelecer uma conexão entre processos na camada de transporte sem o conhecimento da porta (TSAP) ao qual o servidor remoto esteja associado. 2. Estabelecer

Leia mais

Programação com Acesso a Banco de Dados

Programação com Acesso a Banco de Dados Campus Ipanguaçu Curso: Técnico em Informática Programação com Acesso a Banco de Dados AULA 17 ACESSO A BANCO DE DADOS COM JDBC PROF.: CLAYTON M. COSTA 2 011.2 Introdução Aplicação + Banco de Dados: Funcionalidade

Leia mais

Invocação de Métodos Remotos

Invocação de Métodos Remotos Invocação de Métodos Remotos Java RMI (Remote Method Invocation) Tópicos Tecnologia RMI Introdução Modelo de camadas do RMI Arquitetura Fluxo de operação do RMI Passos para implementação Estudo de caso

Leia mais

Linguagem de Programação JAVA. Técnico em Informática Professora Michelle Nery

Linguagem de Programação JAVA. Técnico em Informática Professora Michelle Nery Linguagem de Programação JAVA Técnico em Informática Professora Michelle Nery Agenda Regras paravariáveis Identificadores Válidos Convenção de Nomenclatura Palavras-chaves em Java Tipos de Variáveis em

Leia mais

4 - Padrões da Camada de Integração. Introdução

4 - Padrões da Camada de Integração. Introdução Padrões de Projeto J2EE J931 Padrões da Camada de Integração Helder da Rocha (helder@acm.org) argonavis.com.br Introdução A camada de integração encapsula a lógica relacionada com a integração do sistema

Leia mais

Introdução ao PHP. Prof. Késsia Marchi

Introdução ao PHP. Prof. Késsia Marchi Introdução ao PHP Prof. Késsia Marchi PHP Originalmente PHP era um assíncrono para Personal Home Page. De acordo com convenções para atribuições de nomes recursivas do GNU foi alterado para PHP Hypertext

Leia mais

Mini-curso Gratuito Globalcode Slide 1

Mini-curso Gratuito Globalcode Slide 1 Mini-curso Gratuito Slide 1 Mini-curso Gratuito Introdução Enterprise Java Beans (EJB) 3.0 Slide 2 Agenda Plataforma Java EE Conceitos Iniciais (EJB) Session Bean Message-Driven Bean (MDB) Java Persistence

Leia mais

CAMADA DE TRANSPORTE

CAMADA DE TRANSPORTE Curso Técnico de Redes de Computadores Disciplina de Fundamentos de Rede CAMADA DE TRANSPORTE Professora: Juliana Cristina de Andrade E-mail: professora.julianacrstina@gmail.com Site: www.julianacristina.com

Leia mais

Documentação Usando o Javadoc

Documentação Usando o Javadoc Documentação Usando o Javadoc Prof. MSc. João Carlos Pinheiro jcpinheiro@cefet-ma.br Versão 2.1 Última Atualização: 04/2005 1 Comentários e Documentação Comentários em Java Existem três tipos de comentários

Leia mais

FBV - Linguagem de Programação II. Um pouco sobre Java

FBV - Linguagem de Programação II. Um pouco sobre Java FBV - Linguagem de Programação II Um pouco sobre Java História 1992: um grupo de engenheiros da Sun Microsystems desenvolve uma linguagem para pequenos dispositivos, batizada de Oak Desenvolvida com base

Leia mais

Exercícios de Revisão Java Básico

Exercícios de Revisão Java Básico Exercícios de Revisão Java Básico (i) Programação básica (estruturada) 1) Faça um programa para calcular o valor das seguintes expressões: S 1 = 1 1 3 2 5 3 7 99... 4 50 S 2 = 21 50 22 49 23 48...250 1

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos Aula 4 Msc. Daniele Carvalho Oliveira Doutoranda em Ciência da Computação - UFU Mestre em Ciência da Computação UFU Bacharel em Ciência da Computação - UFJF Migração de Código Em

Leia mais

Informática UFRGS. Programação com Objetos Distribuídos (C. Geyer) C# Remote V0 1

Informática UFRGS. Programação com Objetos Distribuídos (C. Geyer) C# Remote V0 1 .NET Remoting Programação com Objetos Distribuídos (C. Geyer) C# Remote V0 1 Autoria Autores 1a versão Fabio Augusto Dal Castel colaboração revisão Eduardo F. Seganfredo Rodrigo Gatto C. Geyer Programação

Leia mais

Entendendo como funciona o NAT

Entendendo como funciona o NAT Entendendo como funciona o NAT Vamos inicialmente entender exatamente qual a função do NAT e em que situações ele é indicado. O NAT surgiu como uma alternativa real para o problema de falta de endereços

Leia mais

Sistemas Distribuídos. Coulouris Capítulo 4

Sistemas Distribuídos. Coulouris Capítulo 4 Sistemas Distribuídos Coulouris Capítulo 4 Mensagens Para comunicar-se com outros processos, um processo envia uma MENSAGEM para um DESTINO; um outro processo nesse destino recebe a mensagem. As operações

Leia mais

Acesso a Banco. Conexão em Java. Conexão em Java. Programação Orientada a Objetos Profa. Cristiane e Prof. Daniel

Acesso a Banco. Conexão em Java. Conexão em Java. Programação Orientada a Objetos Profa. Cristiane e Prof. Daniel Acesso a Banco Programação Orientada a Objetos Profa. Cristiane e Prof. Daniel As conexões em Java são feitas através de uma ponte que implementa todas as funcionalidades que um banco de dados padrão deve

Leia mais

Comunicação Inter-Processos. Prof. Adriano Fiorese. Conceitos Iniciais

Comunicação Inter-Processos. Prof. Adriano Fiorese. Conceitos Iniciais Comunicação Inter-Processos Conceitos Iniciais 1 Características para Comunicação Inter-Processos. Passagem de Mensagem pode ser suportada por duas operações de comunicação (send e receive). A comunicação

Leia mais

8. Outros tipos de Transação (Modo de Transação de Autoconfirmação e Modo Implícito)

8. Outros tipos de Transação (Modo de Transação de Autoconfirmação e Modo Implícito) 8. Outros tipos de Transação (Modo de Transação de Autoconfirmação e Modo Implícito) Nos itens anteriores vimos transações do tipo explícitas, ou seja, aquelas que iniciam com BEGIN TRANSACTION. As outras

Leia mais

Aula 2. Objetivos. Encapsulamento na linguagem Java; Utilizando a referência this.

Aula 2. Objetivos. Encapsulamento na linguagem Java; Utilizando a referência this. Aula 2 Objetivos Encapsulamento na linguagem Java; Utilizando a referência this. Encapsulamento, data hiding é um conceito bastante importante em orientação a objetos. É utilizado para restringir o acesso

Leia mais

JPA: Persistência padronizada em Java

JPA: Persistência padronizada em Java JPA: Persistência padronizada em Java FLÁVIO HENRIQUE CURTE Bacharel em Engenharia de Computação flaviocurte.java@gmail.com Programação Orientada a Objetos X Banco de Dados Relacionais = Paradigmas diferentes

Leia mais

Lista de Contas: Assinatura. Lista de Contas. Listas de Contas: Descrição. Listas de Contas: Descrição. Listas de Contas: Descrição

Lista de Contas: Assinatura. Lista de Contas. Listas de Contas: Descrição. Listas de Contas: Descrição. Listas de Contas: Descrição Lista de Contas Lista de Contas: Assinatura null Quais são os métodos necessários? class ListaDeContas { void inserir (Conta c) { void retirar (Conta c) { Conta procurar (String num) { Listas de Contas:

Leia mais

Invocação de Métodos Remotos RMI (Remote Method Invocation)

Invocação de Métodos Remotos RMI (Remote Method Invocation) Invocação de Métodos Remotos RMI (Remote Method Invocation) Programação com Objetos Distribuídos Um sistema de objetos distribuídos permite a operação com objetos remotos A partir de uma aplicação cliente

Leia mais

Manual do Desenvolvedor Criptografia de Arquivos do WebTA

Manual do Desenvolvedor Criptografia de Arquivos do WebTA Manual do Desenvolvedor Criptografia de Arquivos do WebTA Versão 1.4 Índice 1. Objetivo..3 2. Processo..3 3. API de Criptografia - Biblioteca Java..4 3.1 WEBTACryptoUtil..4 3.1.1 decodekeyfile..4 3.1.2

Leia mais

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064 Sistemas Distribuídos Professora: Ana Paula Couto DCC 064 Comunicação- Protocolos, Tipos, RPC Capítulo 4 Agenda Protocolos em Camadas Pilhas de Protocolos em Sistemas Distribuídos Tipos de Comunicação

Leia mais

Leonardo Gresta Paulino Murta leomurta@gmail.com

Leonardo Gresta Paulino Murta leomurta@gmail.com Leonardo Gresta Paulino Murta leomurta@gmail.com O Que é JDBC? API de acesso a banco de dados relacional do Java Faz uso do driver provido pelo banco de dados Roda SQL (create, insert, update, etc.) no

Leia mais

Programação por Objectos. Java

Programação por Objectos. Java Programação por Objectos Java Parte 2: Classes e objectos LEEC@IST Java 1/24 Classes (1) Sintaxe Qualif* class Ident [ extends IdentC] [ implements IdentI [,IdentI]* ] { [ Atributos Métodos ]* Qualif:

Leia mais

SISTEMAS DISTRIBUÍDOS

SISTEMAS DISTRIBUÍDOS SISTEMAS DISTRIBUÍDOS CUP Disk Memoey CUP Memoey Disk Network CUP Memoey Disk Remote Method Invocation (RMI) Introdução Solução JAVA para Objetos Distribuídos Um objeto existe em uma máquina É possível

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos LICENCIATURA EM COMPUTAÇÃO Prof. Adriano Avelar Site: www.adrianoavelar.com Email: eam.avelar@gmail.com Mecanismos de Comunicação Voltando ao exemplo da calculadora... Rede local

Leia mais

Tópicos em Sistemas Distribuídos. Modelos de Comunicação

Tópicos em Sistemas Distribuídos. Modelos de Comunicação Tópicos em Sistemas Distribuídos Modelos de Comunicação Comunicação em SD Comunicação entre processos Sockets UDP/TCP Comunicação em grupo Broadcast Multicast Comunicação entre processos Conceitos básicos

Leia mais

EJB 3.1: A Community Update

EJB 3.1: A Community Update EJB 3.1: A Community Update Reza Rahman Autor, EJB 3 in Action Expert Group Member, Java EE 6 and EJB 3.1 Fundador, Cognicellence Julho de 2008 1 EJB 3.0: Revisão Breve > As grandes mudanças > EJB simplificado

Leia mais

Licenciatura em Engenharia Informática Sistemas Distribuídos I 2ª chamada, 6 de Julho de 2005 2º Semestre, 2004/2005

Licenciatura em Engenharia Informática Sistemas Distribuídos I 2ª chamada, 6 de Julho de 2005 2º Semestre, 2004/2005 Departamento de Informática Faculdade de Ciências e Tecnologia UNIVERSIDADE NOVA DE LISBOA Licenciatura em Engenharia Informática Sistemas Distribuídos I 2ª chamada, 6 de Julho de 2005 2º Semestre, 2004/2005

Leia mais

Manipulação de Banco de Dados com Java. Ms. Bruno Crestani Calegaro (bruno.calegaro@ifsc.edu.br) Maio/ 2015

Manipulação de Banco de Dados com Java. Ms. Bruno Crestani Calegaro (bruno.calegaro@ifsc.edu.br) Maio/ 2015 Manipulação de Banco de Dados com Java Ms. Bruno Crestani Calegaro (bruno.calegaro@ifsc.edu.br) Maio/ 2015 Acesso a um SGBD Em sistemas mais simples o uso de arquivos pode ser usado mas para aplicações

Leia mais

UFG - Instituto de Informática

UFG - Instituto de Informática UFG - Instituto de Informática Especialização em Desenvolvimento de Aplicações Web com Interfaces Ricas EJB 3.0 Prof.: Fabrízzio A A M N Soares professor.fabrizzio@gmail.com Aula 10 Persistência de Dados

Leia mais

MIDDLEWARE Aplicativos RMI, RPC e eventos Camadas Protocolo Requesição-Respostal Middleware Representação Externa dos Dados Sistemas Operacionais

MIDDLEWARE Aplicativos RMI, RPC e eventos Camadas Protocolo Requesição-Respostal Middleware Representação Externa dos Dados Sistemas Operacionais RMI JAVA MIDDLEWARE Aplicativos RMI, RPC e eventos Protocolo Requesição-Respostal Camadas Middleware Representação Externa dos Dados Sistemas Operacionais RMI REMOTE METHOD INVOCATION Invocação remota

Leia mais

Java 2 Enterprise Edition Session Beans

Java 2 Enterprise Edition Session Beans Java 2 Enterprise Edition Session Beans Helder da Rocha www.argonavis.com.br 1 Session Beans São objetos de processo de negócio Implementam lógica de negócio, algoritmos, workflow Representam ações Uma

Leia mais

3. Explique o motivo pelo qual os protocolos UDP e TCP acrescentam a informação das portas (TSAP) de origem e de destino em seu cabeçalho.

3. Explique o motivo pelo qual os protocolos UDP e TCP acrescentam a informação das portas (TSAP) de origem e de destino em seu cabeçalho. Entregue três questões de cada prova. Prova de 2011-02 1. Descreva duas maneiras de estabelecer uma conexão entre processos na camada de transporte sem o conhecimento da porta (TSAP) ao qual o servidor

Leia mais

ECD1200 Equipamento de Consulta de Dados KIT DE DESENVOLVIMENTO

ECD1200 Equipamento de Consulta de Dados KIT DE DESENVOLVIMENTO Equipamento de Consulta de Dados KIT DE DESENVOLVIMENTO Versão do documento: 1.1 1. Introdução...3 2. Documentação...3 2.1. DOCUMENTAÇÃO DE REFERÊNCIA... 3 2.2. DESCRIÇÃO FUNCIONAL... 4 2.2.1. INTERFACE...

Leia mais