JMS. Java Message Service
|
|
|
- Sandra Borja Bernardes
- 10 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
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,
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
Java Message Service (JMS)
J530 - Enterprise JavaBeans Java Message Service (JMS) Helder da Rocha ([email protected]) argonavis.com.br 1 Introdução O objetivo deste capítulo é apresentar uma introdução ao modelo de comunicações baseado
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 [email protected]
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
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
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
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
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):
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
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 [email protected] Vinicius Senger Arquiteto Senior / Globalcode [email protected]
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
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
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.
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
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
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
Prof. Fellipe Araújo Aleixo [email protected]
Prof. Fellipe Araújo Aleixo [email protected] A arquitetura Enterprise JavaBeans é uma arquitetura de componentes para o desenvolvimento e a implantação de aplicativos de negócio distribuídos
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
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
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
Web Technologies. Tópicos da apresentação
Web Technologies Tecnologias de Middleware 2004/2005 Hugo Simões [email protected] 1 A Web Tópicos da apresentação Tecnologias Web para suporte a clientes remotos (Applets,CGI,Servlets) Servidores Aplicacionais
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
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
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)
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
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
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 [email protected] Aula 5 Servidores de Aplicação
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
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
Integrando Java com Banco de Dados
Especialização em Engenharia de Software Programação Orientada a Objetos JDBC Java Database Connectivity Sérgio Soares [email protected] Objetivos Apresentar os conceitos básicos da especificação de Java
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 [email protected] Objetivos Apresentar os conceitos básicos da especificação de Java
Laboratório de Banco de Dados Aula 1 Acesso a Banco de Dados. Prof. Josenildo Silva [email protected]
Laboratório de Banco de Dados Aula 1 Acesso a Banco de Dados Prof. Josenildo Silva [email protected] Introdução O JDBC (Java Database Connectivity) foi criado com o intuito de fornecer aos programadores
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 [email protected] Aula 13 Web Services Web Services
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
Tutorial JMS com ActiveMQ Nível: Introdutório Autor: José Damico ([email protected]) IBM Data: 26 de novembro de 2006
Tutorial JMS com ActiveMQ Nível: Introdutório Autor: José Damico ([email protected]) IBM Data: 26 de novembro de 2006 O objetivo deste tutorial é oferecer uma documentação básica passo-a-passo e um exemplo
Aula 1 Acesso a Banco de Dados
Laboratório de Banco de Dados Aula 1 Acesso a Banco de Dados Prof. Josenildo Silva [email protected] Introdução O JDBC (Java Database Connectivity) foi criado com o intuito de fornecer aos programadores
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
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:
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
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
Bancos de dados distribuídos Prof. Tiago Eugenio de Melo [email protected]. http://www.tiagodemelo.info
Bancos de dados distribuídos Prof. Tiago Eugenio de Melo [email protected] Última atualização: 20.03.2013 Conceitos Banco de dados distribuídos pode ser entendido como uma coleção de múltiplos bds
(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
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
Stateful Session Beans
J530 - Enterprise JavaBeans Stateful Session Beans Helder da Rocha ([email protected]) argonavis.com.br 1 Stateful Session Beans Quando um cliente chama um método de um bean, ele está iniciando um diálogo
Sistemas Distribuídos
Sistemas Distribuídos Comunicação Remota Gustavo Reis [email protected] 1 Comunicação entre processos está no coração de todo sistema distribuído. Não tem sentido estudar sistemas distribuídos
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
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
J533 - Minicurso. Helder da Rocha ([email protected]) www.argonavis.com.br
J533 - Minicurso Helder da Rocha ([email protected]) 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
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
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.
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
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
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
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
Fundamentos da Plataforma Java EE. Prof. Fellipe Aleixo ([email protected])
Fundamentos da Plataforma Java EE Prof. Fellipe Aleixo ([email protected]) Como a plataforma Java EE trata o SERVIÇO DE NOMES Serviço de Nomes Num sistema distribuído os componentes necessitam
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
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
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
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
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 ([email protected]) argonavis.com.br Introdução A camada de integração encapsula a lógica relacionada com a integração do sistema
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
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
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: [email protected] Site: www.julianacristina.com
Documentação Usando o Javadoc
Documentação Usando o Javadoc Prof. MSc. João Carlos Pinheiro [email protected] 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
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
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
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
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
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
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
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
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
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
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
JPA: Persistência padronizada em Java
JPA: Persistência padronizada em Java FLÁVIO HENRIQUE CURTE Bacharel em Engenharia de Computação [email protected] Programação Orientada a Objetos X Banco de Dados Relacionais = Paradigmas diferentes
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:
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
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
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
Leonardo Gresta Paulino Murta [email protected]
Leonardo Gresta Paulino Murta [email protected] 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
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:
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
Sistemas Distribuídos
Sistemas Distribuídos LICENCIATURA EM COMPUTAÇÃO Prof. Adriano Avelar Site: www.adrianoavelar.com Email: [email protected] Mecanismos de Comunicação Voltando ao exemplo da calculadora... Rede local
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
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
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
Manipulação de Banco de Dados com Java. Ms. Bruno Crestani Calegaro ([email protected]) Maio/ 2015
Manipulação de Banco de Dados com Java Ms. Bruno Crestani Calegaro ([email protected]) Maio/ 2015 Acesso a um SGBD Em sistemas mais simples o uso de arquivos pode ser usado mas para aplicações
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 [email protected] Aula 10 Persistência de Dados
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
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
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...
