JMS. Java Message Service
|
|
- Sandra Borja Bernardes
- 8 Há anos
- Visualizações:
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 1 Introdução Message Driven Beans são EJBs que consomem mensagens enviadas para filas
Leia maisA 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 maisEnterprise 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 maisJava 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 maisUTILIZAÇÃ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 maisENTERPRISE 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 maisUNIVERSIDADE. 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 maisComo 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 maisJava 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 maisPadrã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 maisJ530 - 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 maisSistemas 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 maisTDC2012. 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 maisConsideraçõ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 maisServiç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 maisComunicaçã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 mais3 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 maisEnterprise 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 maisUNIDADE 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 maisEJB. 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 maisProf. 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 maisLaborató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 maisProgramaçã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 maisMessage 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 maisWeb 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 maisSistemas 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 maisSistemas 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 maisEste 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 maisEnterprise 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 maisUNIVERSIDADE. 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 maisJava. 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 maisUFG - 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 maisSistemas 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 maisSistemas 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 maisIntegrando 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 maisProgramaçã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 maisLaborató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 maisUFG - 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 maisProgramaçã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 maisTutorial 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 maisAula 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 maisComunicaçã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 maisJ2EE. 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 mais3 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 mais1.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 maisBancos 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
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 maisINTEGRADOR 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 maisStateful 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 maisSistemas 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 maisParte 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 maisREDES 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 maisJ533 - 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 maisProjeto 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 maisGuia 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 maisDescriçã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 maisEspecializaçã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 maisFramework. 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 maisOrientaçã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 maisFundamentos 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 mais4. 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 maisProgramaçã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 maisInvocaçã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 maisLinguagem 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 mais4 - 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 maisIntroduçã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 maisMini-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 maisCAMADA 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 maisDocumentaçã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 maisFBV - 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 maisExercí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 maisSistemas 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 maisInformá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 maisEntendendo 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 maisSistemas 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 maisAcesso 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 maisComunicaçã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 mais8. 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 maisAula 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 maisJPA: 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 maisLista 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 maisInvocaçã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 maisManual 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 maisSistemas 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 maisLeonardo 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 maisProgramaçã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 maisSISTEMAS 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 maisSistemas 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 maisTó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 maisEJB 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 maisLicenciatura 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 maisManipulaçã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 maisUFG - 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 maisMIDDLEWARE 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 maisJava 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 mais3. 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 maisECD1200 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