universidade tecnológica federal do paraná - DAINF

Propaganda
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
DEPARTAMENTO ACADÊMICO DE INFORMÁTICA
CURSO DE ESPECIALIZAÇÃO EM TECNOLOGIA JAVA
EDSON VIEIRA
ESTUDO DAS TECNOLOGIAS UTILIZANDO TROCA DE
MENSAGEM E ARMAZENAMENTO EM FILA JMS COM
CONSUMIDOR MDB – MESSAGE-DRIVEN-BEAN
MONOGRAFIA DE ESPECIALIZAÇÃO
CURITIBA
2012
EDSON VIEIRA
ESTUDO DAS TECNOLOGIAS UTILIZANDO TROCA DE
MENSAGEM E ARMAZENAMENTO EM FILA JMS COM
CONSUMIDOR MDB – MESSAGE-DRIVEN-BEAN
Monografia apresentada ao Departamento Acadêmico de
Informática, Curso de Especialização em Tecnologia Java da
Universidade Tecnológica Federal do Paraná – UTFPR, como
requisito parcial para obtenção do título de Especialista em
Tecnologia Java.
Orientador: Prof. Esp. Paulo Bueno
CURITIBA
2012
RESUMO
Com surgimento de novas empresas e crescimento das tecnologias no mercado,
cresceu a necessidade da integração de sistemas em diferentes plataformas, tornando-se a
integração um fator indispensável que vem ocorrendo constantemente, existe uma grande
gama de sistemas, em cada empresa atualmente, cada um atendendo a uma determinada área,
porém, esses sistemas trabalham com características, velocidades de processamento e
linguagens de programação diferentes, influenciando diretamente na dificuldade da
comunicação entre sistemas, uma alternativa que Possibilita a comunicação entre sistemas
tecnologicamente diferentes são as filas JMS (Java Message System) para troca de
mensagens.
Desta forma, o presente trabalho apresenta o estudo das tecnologias que permitam a
troca de mensagens em um ambiente confiável e assíncrono com o consumidor MDB –
Message-Driven-Bean.
Palavras-chave: Java Message Service, Troca de Mensagens, Mensage-Driven-Bean, Web
Service, Weblogic 11g.
ABSTRACT
With the emergence of new companies and technologies in the market growth,
increased the need for systems integration across platforms, making it an indispensable factor
integration that is occurring constantly, there is a wide range of systems, each company
currently each covering a certain area, however, these systems work characteristics,
processing speeds and different programming languages, directly influencing the difficulty of
communication between systems, an alternative that enables communication between
different systems are technologically queues JMS (Java Message System ) for messaging.
Thus, this paper presents the study of technologies that allow the exchange of
messages in a reliable environment with the consumer and asynchronous MDB – MessageDriven-Bean.
Keywords: Java Message Service, Messaging, Mensage-Driven-Bean, Web Service,
Weblogic 11g.
LISTA DE FIGURAS
Figura 1 – Documento XML .................................................................................................. 11
Figura 2 – Documento XSD ................................................................................................... 11
Figura 3 – Passos processo Binding JAXB ........................................................................... 12
Figura 4 – Leitura Arquivo JAXB ........................................................................................ 13
Figura 5 – Parser arquivo JAXB........................................................................................... 13
Figura 6 – Processo API – Java Persistence API ................................................................. 14
Figura 7 – Exemplo de utilização de fila de mensagem ...................................................... 16
Figura 8 – Envio de mensagem de um sistema Java para um sistema legado .................. 17
Figura 9 – Troca de Mensagem utilizando o modelo PTP .................................................. 19
Figura 10 – Troca de Mensagem utilizando o modelo PUB/SUB ...................................... 19
Figura 11 – Modelo de arquitetura da API JMS ................................................................. 21
Figura 12 – Console Administrativo Weblogic 11g ............................................................. 27
Figura 13 – Exemplo Criando Acesso a Fila ........................................................................ 28
Figura 14 – Exemplo Enviando Mensagem para fila JMS ................................................. 28
Figura 15 – Exemplo Recebimento de Mensagem de uma fila JMS .................................. 29
Figura 16 – Tela Estrutura de Domínio. .............................................................................. 29
Figura 17 – Exemplo Projeto XSD ........................................................................................ 30
Figura 18 – Exemplo Documento XSD ................................................................................. 30
Figura 19 – Exemplo Gerar JAXB através Documento XSD ............................................. 31
Figura 20 – Exemplo Schema criado através Documento XSD ......................................... 31
Figura 21 – Exemplo Script Criação Fila JMS ..................................................................... 31
Figura 22 – Exemplo SQL Developer Criar fila JMS ........................................................... 32
Figura 23 – Exemplo MDB – Message-Drive-Bean .............................................................. 32
Figura 24 – Tela Estrutura Domínio .................................................................................... 33
Figura 25 – Tela Servidor JMS ............................................................................................. 33
Figura 26 – Configurando Servidor ...................................................................................... 34
Figura 27 – Tela Filtro JMS .................................................................................................. 34
Figura 28 – Tela Módulo JMS ............................................................................................... 34
Figura 29 – Tela Configurando Servidor Módulo JMS ...................................................... 35
Figura 30 – Filtro Módulo JMS............................................................................................. 35
Figura 31 – Tela Configura Tipo Fila JMS .......................................................................... 35
Figura 32 – Tela Configuração Recurso Módulo JMS ....................................................... 36
Figura 33 – Tela Filtro Recurso JMS ................................................................................... 36
Figura 34 – Tela Configuração de Armazenamento e Envio.............................................. 37
Figura 35 – Tela Configuração Agente de Armazenamento .............................................. 37
Figura 36 – Tela Filtro Agente de Armazenamento ............................................................ 37
LISTA DE ABREVIATURAS E SIGLAS
API
Application Programming Interface (Interface de Programação de Aplicativos)
EJB
Enterprise JavaBeans
HTTP
HyperText Transfer Protocol
HTTPS
HyperText Transfer Protocol Secure
JAXB
Java Architecture For XML Binding
JPA
Java Persistence API
JTA
Java Transaction API
J2EE
Java Platform Enterprise Edition
JVM
Java Virtual Machine
JMS
Java Message Service
POJO
Plain Old Java Object
PTP
Ponto – a – Ponto
PUB/SUB
Publicação / Assinatura
SOAP
Single Object Access Protocol
MDB
Message-Drive-Bean
MOM
Message Oriented Middleware
IDE
Integrated
Development
Environment
(Ambiente
Integrado
Desenvolvimento)
XSD
XML Schema Definition
XML
eXtensible Markup Language (Linguagem Extensível de Marcação)
para
SUMÁRIO
1. INTRODUÇÃO .................................................................................................................. 7
1.1
TEMA .......................................................................................................................... 7
1.2
JUSTIFICATIVA ........................................................................................................ 7
1.3
OBJETIVO GERAL .................................................................................................... 7
1.4
OBJETIVOS ESPECÍFICOS ...................................................................................... 8
2. PROPOSTA DA PESQUISA ............................................................................................. 9
2.1
JAVA ........................................................................................................................... 9
2.2
WEB SERVICE ........................................................................................................... 9
2.3
XML: DEFINIÇÃO DOS DADOS ........................................................................... 10
2.4
JAXB (JAVA ARCHITECTURE FOR XML BINDING) ........................................ 12
2.5
JPA (JAVA PERSISTENCE API) ............................................................................ 13
2.6
JMS (JAVA MESSAGE SERVICE) ......................................................................... 14
2.7
MIDDLEWARE ........................................................................................................ 15
2.8
MOM – MESSAGE ORIENTED MIDDLEWARE ..................................................... 15
2.9
CLIENTE E PROVEDOR JMS ................................................................................ 17
2.10
TROCA DE MENSAGENS ...................................................................................... 18
2.11
PERSISTÊNCIA DE MENSAGENS ........................................................................ 19
2.12
TRANSAÇÃO ........................................................................................................... 20
2.13
CONHECENDO API JMS ........................................................................................ 20
2.14
TIPOS DE MENSAGENS......................................................................................... 24
2.15
MDB – MESSAGE-DRIVEN-BEAN ....................................................................... 24
2.16
SERVLETS & JAVA SERVER PAGES (JSP) ......................................................... 25
2.16.1
SERVLETS ........................................................................................................ 25
2.16.2
JAVA SERVER PAGES (JSP) .......................................................................... 26
3. ABORDAGEM PRÁTICA .............................................................................................. 27
3.1
ENVIO DE MENSAGEM PARA FILA JMS ........................................................... 28
3.2
RECEBIMENTO DE MENSAGEM DE UMA FILA JMS ...................................... 29
3.3
ARQUITETURA DO PROTÓTIPO ......................................................................... 29
3.4
CONFIGURAÇÃO FILA JMS WEBLOGIC 11G SERVER ................................... 33
4. CONCLUSÃO .................................................................................................................. 38
5. TRABALHOS FUTUROS ............................................................................................... 39
6. REFERÊNCIAS BIBLIOGRÁFICAS ............................................................................. 40
7
1.
INTRODUÇÃO
1.1
TEMA
Este trabalho apresenta um estudo sobre troca de mensagens e armazenamento em fila
JMS, com consumidor MDB e WebService articulados a componentes nativos do WebLogic
11g, permitindo que os componentes do aplicativo baseado em J2EE possam criar enviar,
receber e ler mensagens, onde há necessidade de atender a requisitos de performance,
permitindo uma comunicação flexível, confiável e assíncrona.
1.2
JUSTIFICATIVA
Atualmente as empresas estão cada vez mais investindo em novas tecnologias, pois a
concorrências impõem que sejam informatizadas e inovadoras com maior capacitação na sua
agilidade de resposta a mudança. Além de mais eficiente e ágil, as empresas de maior
conteúdo tecnológico, permitem margens de rentabilidade mais elevadas, mas em
contrapartida crescem as exigências em investimentos associadas às inovações tecnológicas
no mercado.
O estudo visa mostrar o interesse em novas tecnologias e o uso da fila JMS, para uma
facilidade na sincronização e confiabilidade das informações ao serem consumidas pelo MDB
– Message-Driven-Bean.
1.3
OBJETIVO GERAL
Estudar as tecnologias, fazendo o uso dos conceitos técnicos de troca de mensagens e
a utilização da fila JMS entre processos assincronamente com consumidor MDB e
WebService a componentes nativos do WebLogic 11g.
8
1.4
OBJETIVOS ESPECÍFICOS
-
Estudo das tecnologias disponíveis e como estão sendo utilizadas para a troca de
mensagens.
-
Explorar ferramentas disponíveis e como estão sendo utilizadas durante o
desenvolvimento.
-
Trabalhar com a plataforma de desenvolvimento Weblogic 11g, com a utilização
da IDE Eclipse.
-
Estudar os objetos da especificação JMS.
9
2.
PROPOSTA DA PESQUISA
Após uma análise nas tecnologias de mercado disponíveis, optou-se pelas tecnologias
abaixo indicadas, considerando fatores com custo, segurança, conhecimento prévio,
aplicabilidade comercial, estabilidade no mercado, dentre outras.
2.1
JAVA
Segundo Serson (2007), Java é uma linguagem de programação versátil e segura,
desenvolvida para ser multiplataforma, pois executa em uma máquina virtual que interpreta o
código compilado e permite que qualquer programa seja executado em qualquer sistema
operacional que contenha uma máquina virtual instalada. Hoje se podem encontrar
tecnologias Java em celulares, eletrônicos (INDRUSKIAK, 1996).
No ano de 1995, a empresa Sun Microsystems que já se destacava no mercado desde
a década de 80 pela fabricação de computadores e condutores que lança sua plataforma de
desenvolvimento de software a partir de tecnologias utilizadas na internet e em rede
corporativas (SILVA, 2006).
2.2
WEB SERVICE
Com o crescimento de novas funcionalidades e tecnologias e serviços
disponibilizados na internet surgiram as necessidades de aplicativos que permitem uma ampla
integração entre plataforma de software e serviço e uma padronização de protocolos para
troca de informação (NETO e LINS, 2006). Portanto, hoje é possível realizar troca de
informações em redes através de aplicações distribuídas e tarefas complexas, com um
gerenciamento de transações de serviços distribuídos utilizando-se interfaces de acesso
simples e bem definidas.
Para agilizar uma comunicação entre as aplicações existente no mercado, utiliza-se
das tecnologias Web Service e XML, onde quaisquer que sejam as tecnologias envolvidas a
comunicação poderá ser feita em forma XML (CUNHA, 2002).
A tecnologia Web Service são serviços distribuídos e utilizados na integração entre
diferentes plataformas, permitindo que novas aplicações possam se comunicar com aquelas já
10
existentes, realizando-se uma comunicação de forma direta com outras aplicações fazendo o
uso da Internet (RECKZIEGEL, 2006).
 CARACTERÍSTICA WEB SERVICE
 Alto
desempenho
onde as
aplicações
podem
distribuir carga
de
processamento em diversos servidores.
 Baixo custo com alto grau de reutilização de componentes, permitindo o
acesso através de redes e reduções nos custos de desenvolvimento.
 Comunicação entre os sistemas e a utilização de diferentes tecnologias
envolvidas.
2.3
XML: DEFINIÇÃO DOS DADOS
A linguagem XML significa eXtensible Markup Language, ou seja, linguagem
extensível de marcação em formato de texto, tornando-se uma linguagem padrão para troca de
dados entre aplicações através da Web, o uso da tecnologia XML é semelhante ao HTML
proporcionando uma flexibilidade na qual usuário pode definir suas próprias tags (ENDREI,
2004).
As definições de tags devem ser parametrizadas nas normas das especificações da
W3C, que obriga o fechamento de todas as tags no corpo documento, documentos XML
trafegam pela rede através dos protocolos HTTP (ou HTTPS para uma conexão mais segura).
Um arquivo XML é valido por um documento DTD (Document Type Definition), ou
seja, XSD (XML Schema Definition) responsável em determinar a estrutura do arquivo XML
correspondente, assim como as tags que podem ser utilizadas, a validação visa certificar que o
documento XML mantém as estrutura definida pelo DTD (ou XSD) e possui apenas tags
válidas (SINGH ET al., 2004).
O objetivo da tecnologia XML é suprir a carência do HTML, permitindo que os
desenvolvedores criem e manipulem suas próprias estruturas para armazenar a informação,
sendo seus formatos baseado em texto, tornando mais fácil manuseá-los conforme mostram as
Figuras 1e 2.
11
Figura 1 – Documento XML
Figura 2 – Documento XSD
Abaixo estão descritas algumas destas vantagens na utilização da tecnologia XML,
no que diz a respeito à apresentação e manipulação das informações (MINK CARLO, 2000).
 Facilidade para alterar a visualização dos documentos escritos em XML de
forma rápida e automática por serem documentos estruturados.
 Possibilidade de reaproveitar documentos escritos: um dos principais
problemas atualmente é reaproveitar um mesmo material em diversas
aplicações. Com a XML é possível reaproveitar a informação de forma lógica
e prática.
 Facilidade na identificação das informações: esta vantagem é bem nítida, pois
a linguagem permite a criação das tags pelo próprio autor, o que resulta em
facilidade para identificar as informações.
12
2.4
JAXB (JAVA ARCHITECTURE FOR XML BINDING)
JAXB (Java Architecture for XML Binding) é uma API responsável por proporcionar
uma maneira de realizar o binding entre os esquemas XML com suas representações em Java,
com objetivo de tornar uma agilidade e facilidade para os desenvolvedores Java incorporarem
os dados XML e funções em aplicações Java.
A API JAXB fornece métodos de marshalling que transforma classes e métodos Java
para conteúdo XML e unmarshalling de documentos XML para conteúdo em Java (The Java
Web Services Tutorial, 2006).
JAXB
SCHEMA
Bind
Instance of
Follows
Unmarshal
(validate)
OBJECTS
DOCUMENT
marshal
(validate)
Figura 3 – Passos processo Binding JAXB
Fonte: The Java Web Service Tutorial (2006).
Portanto JAXB facilita o uso do XML compilando um esquema XML em uma ou
mais classes Java, ou seja, elimina a necessidade de codificar classes para manipular XML,
onde permite que os desenvolvedores Java realizem o mapeamento entre XML e código Java
de forma eficiente e padronizada. Utilizando API JAXB o desenvolvedor não necessita
conhecer a fundo todos os conceitos do padrão XML para poder desenvolver aplicações
baseadas em XML.
Destacam-se APIs como: JAXP (Java API for XML Processing), para leitura,
criação, manipulação e transformação de XML, e JAXB (Java API for XML Binding), que
mapeia classes Java a documentos XML.
13
 CARACTERÍSTICA JAXB
 Leitura arquivo XML: Define a responsabilidade para transportar objeto
em XML e vice-versa. API do JAXB é quem será responsabilizada por
essas transformações.
 Transformando Objetos XML: responsável em transportar um objeto
XML chamado Marshal, com isso JAXB transforma um objeto em XML
fazendo o uso de um JAXBContext onde fornecerá o Marshaller que vai
transformar um objeto (JAXBElement) em XML.
Figura 4 – Leitura Arquivo JAXB
 Parse XML: tem a função de realizar o caminho contrário, ou seja,
popular um objeto Java com dados de um XML com a necessidade de um
JAXBContext comunicando com Unmarshaller recebendo um arquivo
XML e devolve um JAXBElement contendo um objeto manipulado e
preenchido.
Figura 5 – Parser arquivo JAXB
O JAXB caracteriza um desempenho eficiente para os programadores Java, para
realizar o consumo e criação do XML. API também fornece outros recursos como, validação,
geração de schema(a partir de classes Java, criar um XSD), com a opção de trabalhar com
Namespace.
2.5
JPA (JAVA PERSISTENCE API)
O JPA é uma API que permite criar uma arquitetura de objetos distribuídos na
internet, com intuito de oferecer uma infraestrutura para o desenvolvimento de aplicações
14
distribuídas.
A tecnologia EJB disponibiliza para o desenvolvedor os serviços mais aptos aos
ambientes distribuídos como:
 gerenciamento de transações para tratamento de acessos simultâneos de
usuários diferentes em um mesmo registro de uma tabela.
 Segurança no controle de acesso de usuários sobre os dados. As
especificações de EJB faz com que o desenvolvedor defina as regras de
negócios, otimizando e facilitando o desenvolvimento de aplicações
distribuídas.
 Persistência está acoplada na especificação de EJB com vantagens da
orientação a objetos, enquanto persistem os dados de forma automática,
implicitamente.
A Figura 6 ilustra o mapeamento objeto-relacional da API JPA, especificando as
entidades POJO (Plain Old Java Objects), que simplificam bastante o processo de
desenvolvimento (SANTANA et al, 2007).
CAMADA DE APRESENTAÇÃO
CAMADA DE NEGÓCIO
UTILIDADE DE
CLASSE
CAMADA DE PERSISTÊNCIA
BANCO DE
DADOS
Figura 6 – Processo API – Java Persistence API
Fonte: Santana (2007).
2.6
JMS (JAVA MESSAGE SERVICE)
No ano 1998 a Suns Microsystems em conjunto com alguns associados tiveram a
ideia de desenvolver uma API JMS na utilizacão em aplicativos Java para definir funções
15
como: criar, enviar, receber e ler mensagens, bem como se comunicar
com outras
implementações de envio de mensagens. (WAENEY e NUMAZAKI, 2004).
A tecnologia JMS oferece uma comunição fracamente acoplada, onde o remetente e
o destinatário necessariamente não precisam conhecer nenhuma informação um do outro.
Na arquitetura J2EE, o JMS é considerado um recurso de gerenciador de contêiner,
onde clientes de aplicativos EJB e componentes da Web, fazem o uso da API JMS para
gerenciar no envio e receber mensagens (BOND et al., 2003)
2.7
MIDDLEWARE
Segundo Juric (2001), Middleware tem como definição, camada de software que
realiza a mediação entre um sistema operacional e uma aplicação local do sistema, podendo
um software ser usado para mover informação de um programa para um ou mais programas
em um ambiente distribuído.
Atualmente os sistemas legados possuem interfaces específicas, e o custo de
mudança de interface para realizar uma comunicação entre sistemas torna-se um fator
negativo, assim sendo, o uso de um objeto Middleware, pode-se resolver a integração de
sistemas legado para novos sistemas com diferentes interfaces.
A JMS pode ser considerada um middleware conforme visto no tópico 2.6, porém ela
é orientada a mensagens, assim como veremos no próximo tópico.
2.8
MOM – MESSAGE ORIENTED MIDDLEWARE
O Message Oriented Middleware é uma implementação do middleware com objetivo
de solucionar problemas de troca de mensagens, o que é fundamental na computação
distribuída, e permite uma troca de mensagens utilizando fila, alocando mensagens em filas e
obtendo mensagens da fila.
O MOM permite que os produtores e consumidores se comuniquem por uma rede
sem a necessidade de estarem conectados no mesmo instante. Portanto desta forma se um dos
sistemas estiver ocupado, tera a opção de recuperar a mensagem mais tarde, sem restrições de
tempo (ORFALI et al, 1996). A Figura 7 ilustra um exemplo de utilização de mensagens.
16
Varias
horas
mais tarde
Figura 7 – Exemplo de utilização de fila de mensagem
Fonte: Waeney e Numazaki (2004).
As filas utilizadas são criadas na memória virtual do sistema operacional, cada uma
com seu nome próprio, podendo existir várias filas sendo utilizadas no mesmo instante.
Segundo Orfali et al, (1996), as mensagens seguem a seguinte ordem de envio e
recebimento utilizando fila. A primeira mensagem ao entrar na fila será a primeira a sair, e a
última a entrar será a última a sair, podendo uma fila de mensagens ser acessada
simultaneamente.
Pode-se definir filas de mensagens persistentes e não persistentes, onde as
persistentes são consideradas mais lentas, porém podem ser recuperadas em caso de queda de
energia ou após a reinicialização do sistema. O MOM deve ser usado também, quando um
componente não depende da interface do outro (JURIC, 2001).
Segundo Barbieri (2001), cita algumas características do MOM são:
 Garantia de Entrega: as mensagens enviadas têm a entrega garantida, independente
se houver ou não distúrbios na rede.
 Garantia de Integridade: as mensagens são tratadas de forma que somente uma vez
serão enviadas, garantindo fundamentos essenciais em transações eletrônicas,
como por exemplo: enviar um pedido de compra duas vezes, ou até mesmo, que
dois pagamentos sejam enviados pelo mesmo evento.
 Disparo de triggers: com a chegada de uma nova mensagem na fila, poderá se
disparar uma trigger que realizará certo processamento, isso vale para qualquer
acontecimento no sistema MOM, tanto na alocação de mensagens, no envio, no
recebimento, ou na sua leitura.
 Tipos de leitura de mensagem: um sistema MOM disponibilizará mecanismo de
integração entre os programas e os gerenciadores de fila, garantindo a chegada da
mensagem na fila.
17
 O mecanismo Síncrono: o programa receptor aguarda a chegada da
mensagem.
 Mecanismo de Loop Contínuo: o programa receptor executa um loop
contínuo, perguntando a todo tempo: “Tem mensagem pra mim?”.
 Mecanismo Assíncrono: o programa receptor registra um pedido no
sistema, de modo que quando chegar uma mensagem ele será avisado.
2.9
CLIENTE E PROVEDOR JMS
Os aplicativos Java que utilizam a API JMS são chamados de clientes JMS, e os
sistemas responsáveis pelo gerenciamento de envio de mensagens são chamados de
provedores JMS. Portanto O objetivo dos clientes JMS é alterar ou obter dados de uma
máquina destino. Um cliente que tem a responsabilidade de enviar mensagens é chamado de
produtor, e os clientes que recebem mensagens são chamados de consumidor, sendo que um
cliente pode assumir os dois papéis tanto produtores quanto consumidor. Assim sendo um
aplicativo JMS pode conter muitos clientes JMS ou muitos provedores JMS (KURNIAWAN,
2000).
A utilização de um provedor é que o sistema JMS pode ser integrado a um ambiente
heterogêneo, ou seja, sistemas legados podem fazer parte de um componente Java e utilizar a
sua linguagem nativa para atualização da base de dados.
A Figura 8 ilustra o exemplo de um sistema Java trocando mensagens com um
sistema legado, onde um provedor de mensagens JMS se comunica com o provedor de
mensagens assíncronas da IBM (WAENEY e NUMAZAKI, 2004).
Envia Mensagem
Fila de Pergunta
Há Mensagem?
Envia Respostas
Sistema Java
JMS
Fila de Respostas
MQ Series
Sistema Legado
Figura 8 – Envio de mensagem de um sistema Java para um sistema legado
Fonte: Waeney e Numazaki (2004).
18
Vantagens da utilização de provedores JMS.
 Facilita a integração com sistemas incompatíveis.
 Uma comunicação de um para muitos
 Realizar uma Troca de Mensagens Transacional
2.10
TROCA DE MENSAGENS
Segundo Temple (2004) a troca de mensagens é um serviço que tem objetivo de
realizar uma comunicação entre aplicativos ou componentes de software. No serviço de troca
de mensagens que a JMS implementa é possível o remetente enviar uma mensagem para um
destino sem precisar saber quem a consumirá, após o envio da mensagem o consumidor
receberá
uma notificação avisando que chegou uma nova mensagem para ser consumida, ele
tem a responsabilidade de recuperar a mensagem a qualquer momento após o envio da
mensagem e retornará uma confirmação para o remetente avisando que a mensagem foi
consumida com sucesso.
Kurniawan (2000) define que mensagem JMS são objetos serializáveis, onde através
de um conjunto de provedores JMS trocam informações ou executam procedimentos em dois
ou mais clientes JMS. Provedores JMS são sistemas que gerenciam o envio de troca de
mensagens e os clientes JMS são os aplicativos que usam JMS. Um cliente que envia
mensagem é chamado de produtor, e um cliente que recebe mensagens é chamado de
consumidor sendo que um cliente pode assumir vários papéis.
A JMS é responsável em implementar dois modelos de envio de troca de mensagens,
que serão apresentados a seguir.
 TROCA DE MENSAGEM UTILIZANDO PONTO-A-PONTO (PTP)
Remetente e o destinatário seguem um destino da mensagem conhecida como fila. O
remetente tem responsabilidade de enviar mensagem para a fila e o destinatário a consome a
qualquer momento após o envio, permanecendo na fila até ser removida pelo consumidor
(HAASE, 2002). Neste modelo haverá somente um consumidor de mensagens, assim como
na Figura 9:
19
Fila
4
Cliente 1
3
2
Consome
1
Cliente 2
Envia
Confirma
Mensagens
Figura 9 – Troca de Mensagem utilizando o modelo PTP
Fonte: Waeney e Numazaki (2004)
 TROCA DE MENSAGEM UTILIZANDO PUBLICAÇÃO/ASSINATURA
(PUB/SUB)
Troca de mensagens utilizando publicação pode ser chamada de publicador, que
por sua vez passa ter a função de enviar uma mensagem para um tópico, conhecido como fila
do tipo PTP, podendo existir vários destinatário, chamados de assinantes. As Mensagens são
distribuídas para todos os assinantes correntes e são excluídas quando todos já tiverem
consumidos, como na Figura 10 (HAEFEL e CHAPPELL, 2001).
Tópico
Consome
Cliente 2
4
Cliente 1
Confirma
1
Publica
5
Consome
Cliente 3
2
3
Confirma
Figura 10 – Troca de Mensagem utilizando o modelo PUB/SUB
Fonte: Waeney e Numazaki (2004)
2.11
PERSISTÊNCIA DE MENSAGENS
As mensagens JMS por padrão são persistentes, com isso garante que a mensagem
seja distribuída mesmo que o provedor JMS falhe, ou seja, desligado. Um segundo modo são
as mensagens não persistentes, que podem ser usadas onde não há exigência de garantia de
entrega. Estas mensagens possuem menor sobrecarga, pois não precisam acessar a base de
dados (BOND et al., 2003).
Será apresentado durante o tópico 2.13 “Conhecendo a API JMS”, e como enviar
mensagens persistentes.
20
2.12
TRANSAÇÃO
A API JMS garante que uma mensagem seja entregue com segurança, pois quando o
destinatário recebê-la ele enviará uma confirmação, porém esta confirmação nem sempre é
suficiente para garantir a integridade de um aplicativo.
Em uma aplicação empresarial normalmente é necessário agrupar uma série de
operações em uma única transação, se acontecerem de uma das operações falharem, a
transação pode ser cancelada, e todas as operações devem ser desfeitas e reiniciadas
novamente, caso todas as operações ocorrerem com sucesso, a transação pode ser confirmada.
Um cliente JMS tem a permissão de agrupar um conjunto de mensagens para que
sejam enviadas, caso alguma mensagem não seja entregue, esta transação será cancelada e
todas as mensagens descartadas, caso contrário à transação poderá ser confirmada (HAASE,
2002).
Considere o seguinte exemplo: Em uma transação bancária são enviadas duas
mensagens para debitar um valor de uma conta e creditar o mesmo valor em outra conta. Se
apenas uma das mensagens for entregue haverá um problema. Na JMS, pode ser especificado
que uma seção suporta transação na criação da fila, e assim como em banco de dados, existe o
método commit para confirmar uma transação e rollback para descartar a transação (BOND et
al, 2003).
No tópico 2.13 “Conhecendo a API JMS”, será apresentado como enviar mensagens
transientes.
2.13
CONHECENDO API JMS
Na utilização da API JMS é necessária conhecer a arquitetura da API, e qual o fluxo
de acesso entre os objetos e como se utilizam os componentes para enviar e receber
mensagens. Conforme Kurniawan (2000), nos próximos tópicos serão apresentados os
principais objetos que fazem parte das especificações JMS no pacote javax.jms.
Para facilitar o entendimento dos objetos dentro da arquitetura JMS, é apresentado na
Figura 11 um exemplo de como os componentes interagem.
21
Gerador de Mensagem
JMS
JNDI
Connection Factory
Pesquisa fila
de Conexão
(Destination)
Cria
Conexão
(Connection)
Cria Sessão
(Session)
Pesquisa
Fila/Tópico
(Destination)
Cria
Remetente/Publicador
(MessageProducer)
Cria Mensagem
(TextMessage)
Mais nenhuma
Mensagem
Cria Sessão
(Session)
Fim
Mais Mensagem
Figura 11 – Modelo de arquitetura da API JMS
Fonte: baseado em Bond et al. (2003).
Os exemplos apresentados a partir daqui, foram utilizados com base em
(KURNIAWAN, 2000).
 CONNECTION FACTORY (FÁBRICA DE CONEXÃO)
Connection Factory tem como objetivo de criar uma conexão entre o cliente JMS e o
provedor JMS com objetivo de ser uma fábrica de conexões e encapsular as configurações da
conexão. A fábrica de conexão do provedor de mensagens JBossMQ é o ConnectionFactory,
22
que é implementado sobre o protocolo de comunicação bilateral baseado em soquetes
(HAEFEL e CHAPPELL, 2001).
 DESTINATION (DESTINO)
Destination encapsula um endereço específico de provedor, ou seja, é um objeto
usado por clientes para especificar o destino para o qual a mensagem deve ser enviada ou de
onde receberá a mensagem.
No domínio PUB/SUB o destino é chamado de tópico, e no domínio, e no destino
PTP o destino onde é considerado é uma fila, para isso são disponibilizadas duas interfaces
diretas: Topic (Tópico) e Queue (Fila), ou seja, com um ConnectionFactory obtém-se um
objeto destination, Topic ou Queue (HAASE, 2002). Assim quando se estiver conectado com
uma fila ou um tópico é necessário criar uma conexão com um provedor JMS, que será
apresentado na sequência.
 CONNECTION (CONEXÃO)
Connection representa uma conexão ativa do cliente JMS, onde aloca recursos do
provedor fora da máquina virtual Java (WAENEY e NUMAZAKI, 2004). Para estar com um
provedor JMS é preciso criar uma sessão que poderão ser feitas algumas configurações como
se vê a seguir.
 SESSION (SESSÃO)
Session JMS é um contexto de threads simples que serve para clientes produzirem e
consumirem mensagens (WAENEY e NUMAZAKI, 2004).
Segundo Giotta (2000) a sessão utiliza de diversos propósitos, entre elas:
 prover um método alternativo para criar destinos;
 criar destinos temporários;
 como fábrica de criação de diferentes tipos de implementação de provedores
automatizados de mensagens JMS;
 criação de produtores e consumidores de mensagens;
23
 recebimento
de
mensagens
associada
a
consumidores
de
mensagens
assincronamente.
Allen
e
Bambara
(2003),
definem
os
métodos
createTopicSession
e
createQueueSession:
 transacted: indica que a sessão suporta transação;
 acknowledgeMode: parâmetro que indica se os consumidores reconheceram as
mensagens quando receberem. Os valores podem ser um dos três campos da
interface Session;
 AUTO_ACKNOWLEDGE: automaticamente a sessão acusa o recebimento
do cliente de uma mensagem.
 CLIENT_ACKNOWLEDGE: o cliente acusa o recebimento de uma
mensagem consumida chamando o método acknowledge da mensagem.
 DUPS_OK_ACKNOWLEDGE: neste modo a sessão acusará o recebimento a
cada dez mensagens recebidas.
Um Session tem como responsabilidade administrar os consumidores e produtores de
mensagens:
 MESSAGEPRODUCER (PRODUTOR DE MENSAGENS)
MessageProducer é usado por um cliente JMS para enviar mensagens a um destino
(Destination), quando o produtor de mensagens é criado é necessário passar o destino do
envio da mensagem por parâmetro no método de criação (WAENEY e NUMAZAKI, 2004).
 MESSAGECONSUMER (CONSUMIDOR DE MENSAGENS)
MessageConsumer é um objetivo criado por uma sessão e usado pelo cliente JMS
para receber mensagens de um destino. Um consumidor de mensagens permite um cliente
JMS registrar um destino como um provedor JMS, assim quando o provedor receber as
mensagens ele direciona a todos os registrados a aquele destino (ALLEN e BAMBARA,
2003).
Ao criar o produtor e o consumidor de mensagem é preciso conhecer as mensagens
que serão trafegadas por eles.
24
2.14
TIPOS DE MENSAGENS
As mensagens podem ser associadas a domínios diferentes onde podem existir
diferentes tipos, de modo a satisfazer as necessidades dos sistemas. Allen e Bambara (2003)
definem alguns tipos de mensagens JMS:
 TextMessage: mensagem que contém apenas caracteres, ou seja, é uma string.
 MapMessage: mensagem que contém um objeto string e um valor primitivo Java.
Exemplo: Texto/Valor.
 BytesMessage: mensagem que contém uma corrente de bytes não interpretados.
 StreamMessage: mensagem que contém uma corrente de valores primitivos Java.
 ObjectMessage: mensagem que contém um objeto que pode ser em série
2.15
MDB – MESSAGE-DRIVEN-BEAN
Dentro da arquitetura J2EE a JMS pode ser considerado um recurso gerenciado pelo
contêiner, semelhante a uma conexão JDBC, onde clientes de aplicativos, EJB´s e
componentes da Web onde todos podem utilizar a API JMS para enviar e receber mensagens
(BOND et al., 2003).
Antes da especificação EJB 2.0, uma aplicação só podia suportar passagem de
mensagens assíncronas escrevendo um programa Java que atuasse como receptor. As
mensagens eram recebidas fora do servidor, sendo impossível de fazer parte de uma
transação. Para este fim foi desenvolvido o MDB (Message-Driven-Bean), uma combinação
das funcionalidades da JMS com o EJB, assim as mensagens são recebidas dentro do servidor
e podem utilizar todos os serviços que o contêiner EJB implementa (HAASE, 2002).
Allen e Bambara (2003) afirmam que o objetivo do MDB é fazer com que os
desenvolvedores de sistemas priorizem a maior parte de seu tempo se preocupando com
regras de negócio do projeto, deixando que o MDB se responsabilize com todo o tratamento
de fluxo de mensagens, ou seja, os MDB´s foram criados para enviar e receberem mensagens
assumindo todos os serviços do contêiner.
Segundo Bonde (2003) na criação de um MDB é necessário associá-lo a um destino,
seja ele uma fila ou um tópico, portanto quando uma mensagem chega a este destino eles são
invocados pelo contêiner, ou seja, ele é implementado como um ouvinte de mensagens. O
cliente não precisa saber que o consumidor é um Message-Driven-Bean, ele apenas envia sua
25
mensagem para um destino, seja ele fila ou tópico e o bean manipula a mensagem quando ela
chega.
A codificação de produtores de mensagens utilizando MDB é exatamente igual a
qualquer aplicativo JMS, ou seja, a mensagem deve obedecer à especificação JMS e o destino
deve ser um nome JNDI registrado (HAEFEL, 2001).
2.16
SERVLETS & JAVA SERVER PAGES (JSP)
Servlets e JSP são tecnologias desenvolvidas pela empresa Sun com objetivo de
proporcionar um desenvolvimento de aplicações Web acoplado componentes Java que
executem do lado de um servidor (Server Side). Servlets e JSP fazem parte da plataforma Java
que fornece um conjunto de tecnologias para o desenvolvimento de soluções robustas e
confiáveis para a Web (OLIVEIRA, 2001).
2.16.1 SERVLETS
Segundo Oliveira, (2001) Servlets são classes Java que são executadas e instanciadas
em associação com servidores WEB, atendendo requisições realizadas por meio do protocolo
HTTP. Ao serem acionados, os objetos servlets são responsáveis por enviar a resposta na
forma de uma página HTML ou qualquer outro conteúdo MIME. Portanto Servlets podem ser
definidos como uma API para construção de componentes do lado servidor com o objetivo de
fornecer um padrão para comunicação entre clientes e servidores (FIELDS e KOLB, 2000).
Servlets utiliza instáncias que são executadas dentro de um ambiente Java
denominado container, onde o contâiner tem como objetivo gerenciar as instâncias dos
servlets e prover os serviços de rede necessários para as requisições e respostas. O contâiner
realiza suas ações em associação com servidores WEB recebendo e tratando as requisições
enviadas por eles. Tipicamente, existe apenas uma instância de cada servlet, mas o container
pode criar várias threads para permitir que uma única instância servlet atenda mais de uma
requisição simultaneamente.
26
2.16.2 JAVA SERVER PAGES (JSP)
Java Server Pages (JSP) é uma tecnologia adotada na utilização no desenvolvimento
de aplicações para Web, onde tem a semelhança à tecnologia Active Server Pages (ASP) da
Microsoft.
JSP por ser tratar de uma linguagem de programação Java ele tem vantagem de uma
portabilidade de plataforma, que permite o usuário executar em outros sistemas operacionais.
A vantagem que a tecnologia JSP permite ao desenvolvedor de páginas para Internet produzir
aplicações que, acessam o banco de dados, manipulam arquivos no formato texto, captam
informações a partir de formulários e captam informações sobre o visitante e sobre o
servidor.
Uma página utilizando uma tecnologia JSP, depois de instalada em um servidor de
aplicação compatível com a tecnologia Java EE, é transformada em um servlet. Sendo assim
quando uma página JSP é carrega pelo container JSP pela primeira vez, é gerado código Java,
que é compilado, gerando um servlet que, ao ser executado, gera uma página HTML que é
enviada ao navegador (OLIVEIRA, 2001).
27
3.
ABORDAGEM PRÁTICA
Com o estudo apresentando no decorrer do trabalho foi possível conhecer as
características básicas de utilização das tecnologias fila JMS e MDB como consumidor das
mensagens colocadas nas filas. O objetivo deste capítulo é apresentar uma implementação de
exemplo com base nos conhecimentos apresentados.
Primeiro passo para realizar esse estudo prático foi a escolha de um servidor de
aplicação que suportasse os serviços da plataforma J2EE, ou seja, um servidor que suporte a
execução da fila JMS, que por si é executado no contêiner WEB e EJB.
O servidor escolhido para o desenvolvimento da fila foi o Oracle Weblogic na versão
11g disponível em http://www.oracle.com/technetwork/middleware/ias/downloads/wls-main097127.html.
O segundo passo foi realizar o download a IDE de desenvolvimento do Eclipse que
suporte a implementação utilizando o Servidor Weblogic que está disponível no site do
fabricante. Para configuração do ambiente Weblogic na IDE Eclipse, foi utilizado o tutorial de
configuração do seguinte endereço, http://blog.erkobridee.com/2010/03/08/webservice-oracleweblogic-server-11g/.
Já com Weblogic Server instalado e configurado juntamente com o servidor, é
possível
iniciar
o
mesmo,
podendo
em
seguida
acessá-lo
(http://localhost:7001/console), como apresentado na Figura 12.
Figura 12 – Console Administrativo Weblogic 11g
via
browser
28
3.1
ENVIO DE MENSAGEM PARA FILA JMS
A Figura 13, linha 8 é utilizado para criar uma URL de acesso a fila QueueTeste e na
linha 11 acesso a Factory da fila QueueConnectionFactory.
A Figura 14 apresenta o código utilizado para enviar uma mensagem de texto JMS
para uma fila. Ainda na Figura 14 as linhas 1, 2, 3 e 4 são utilizadas para criar um contexto
com a árvore JNDI e obter a referência com uma fila JMS. Em seguida nas linhas 7 e 8 é
criada uma conexão ativa que se conecta na tabela da fila e na linha 11 inicia-se uma sessão
com a fila.
Na linha 14 é criado um Produtor de mensagens (MessageProducer - QueueSender),
objeto utilizado para produzir e enviar mensagens, consequentemente as linhas 16 e 17 criam
uma mensagem do tipo texto e atribuem um valor a ela, e a linha 20 envia a mensagem. As
linhas 21, 22 e 23 liberam os recursos.
Figura 13 – Exemplo Criando Acesso a Fila
Figura 14 – Exemplo Enviando Mensagem para fila JMS
29
3.2
RECEBIMENTO DE MENSAGEM DE UMA FILA JMS
A Figura 15 apresenta o código utilizado para receber a mensagens, porém a diferença
no código está entre as linhas 13 e 20. A linha 13 cria um consumidor de mensagens
(MessageConsumer - QueueReceiver), que irá eliminar as mensagens, na linha 14 inicia-se o
ciclo de consumo que é executado dentro de uma estrutura de repetição While. Dentro desta
estrutura o código da linha 17 consome a mensagem e a linha 19 imprime. Neste exemplo a
mensagem é do tipo texto, porém ela poderia estar utilizando todos os tipos de mensagens que
a JMS estende.
Figura 15 – Exemplo Recebimento de Mensagem de uma fila JMS
3.3
ARQUITETURA DO PROTÓTIPO
Na Figura 16, ilustra arquitetura utilizada durante o estudo das tecnologias para o
desenvolvimento do protótipo:
Figura 16 – Tela Estrutura de Domínio.
30
 JSP e SERVLET: é uma camada de apresentação usada na comunicação visual ao
usuário.
 WEB SERVICE: responsável em identificar o tipo da ação enviada através da página
Web JSP e SERVLET, via formulário com dados de entrada, criando um objeto
comum denominado ConsultaEvent, utilizando o conceito da tecnologia JAXB para
realizar o Parser no qual o objeto é criado automaticamente de acordo com as
convenções estabelecidas via XSD, realizando a conversão do Bean respectivo para
XML, formato adotado para realizar o POST na fila inserindo esta informação na fila
correspondente.
As Figuras 17, 18 ilustram uma classe Java ConsultaEvent fazendo uso da
tecnologia JAXB.
Figura 17 – Exemplo Projeto XSD
Figura 18 – Exemplo Documento XSD
Após mapear todos os campos no arquivo XSD é possível gerar
automaticamente as classes conforme mostram as Figuras 19 e 20 no pacote Schema
definido pelo usuário, onde cada classe tem sua função específica criada pelo JAXB e
uma comunicação com a tecnologia MDB.
31
Figura 19 – Exemplo Gerar JAXB através Documento XSD







Figura 20 – Exemplo Schema criado através Documento XSD
 BD QUEUE: é uma configuração do ambiente WebLogic 11g Server e banco de
dados Oracle SQLDeveloper, usado para criar a Fila e a tabela que irá armazenar os
dados manipulados pela mesma.
o Script para Criar a estrutura da Fila JMS
Figura 21 – Exemplo Script Criação Fila JMS
A Figura 22 apresenta o resultado após a execução do Script com os procedimentos
para criar a fila propriamente dita e a tabela que vai ser responsável em armazenar a
informação.
32
Figura 22 – Exemplo SQL Developer Criar fila JMS
MDB – Consumidor da Fila tem a função contrária do WebService, pois também
faz o uso da tecnologia JAXB, recebendo o bean e o convertendo em XML para realizar ação,
monitorando as requisições que a fila recebe e dispara via stubs a execução da ação que foi
passada pelo formulário JSP. A Figura 23 ilustra o estudo executado durante o protótipo na
utilização do MDB – Message-Driven-Bean, para executar a leitura a fila JMS.
Figura 23 – Exemplo MDB – Message-Drive-Bean
33
 PERSISTE DADOS: após o MDB ler a fila JMS e processar as informações passadas
via JSP e SERVLET para uma fila, dispara “ação” correspondente via Stubs que vai
persistir no banco de dados armazenando a informações na base de dados Oracle.
3.4
CONFIGURAÇÃO FILA JMS WEBLOGIC 11G SERVER
A tecnologia Oracle Weblogic 11g Server é um servidor baseado no Java EE 5, que
visam facilitar o desenvolvimento e o gerenciamento dos serviços fornecendo um acesso em
um único ponto às informações que estão distribuídas pela rede externa ou interna de uma
empresa, oferecendo compromisso de disponibilizar aos desenvolvedores empresariais uma
implementação mais eficiente e produtiva na sua performance, para sua produção e utilização
das API aprimoradas. Abaixo serão apresentadas configurações necessárias para criar filas
JMS fazendo o uso WebLogic 11g.
Figura 24 – Tela Estrutura Domínio
 Servidores JMS: necessário criar um nome para o servidor JMS e um
Novo Armazenamento para realizar a comunicação com fila, conforme
apresentados nas Figuras 25 e 26:
Figura 25 – Tela Servidor JMS
34
Figura 26 – Configurando Servidor
A Figura 27 indica que a lista de Servidores JMS foi criada com sucesso.
Figura 27 – Tela Filtro JMS
 Criar um Módulo JMS: é responsável por definir filas e tópicos, conforme
apresentado nas Figuras 28, 29, 30, 31, 32 e 33:
Figura 28 – Tela Módulo JMS
35
Figura 29 – Tela Configurando Servidor Módulo JMS
Figura 30 – Filtro Módulo JMS
Figura 31 – Tela Configura Tipo Fila JMS
36
Figura 32 – Tela Configuração Recurso Módulo JMS
Figura 33 – Tela Filtro Recurso JMS
 Agente de Armazenamento e Envio: são responsáveis por armazenar e
encaminhar mensagens entre esses pontos finais locais e remotos. Um agente
pode ser configurado para ter somente recursos de envio, recursos de
recebimento ou ambos, conforme as Figuras 34, 35 e 36:
37
Figura 34 – Tela Configuração de Armazenamento e Envio
Figura 35 – Tela Configuração Agente de Armazenamento
Figura 36 – Tela Filtro Agente de Armazenamento
Durante e o estudo foram utilizadas figuras ilustradas acima para descrever os
principais passos para configurações e entendimento de Filas JMS no Weblogic 11 g Server.
38
4.
CONCLUSÃO
Com o estudo desenvolvido neste trabalho, foi apresentada a utilização da tecnologia
JMS articulada a um MDB (Message-Driven-Bean), de forma a atender a necessidade do
desenvolvimento de soluções rápidas e eficientes, no que diz respeito a utilização de filas de
comunicação em ambientes de desenvolvimento que possuem uma arquitetura distinta e
necessidades de funcionamento integrado entre tecnologias que suportem esta implementação.
Para somar ao processo, também foi desenvolvido web services, seguindo o mesmo conceito
de articulação entre sistemas distintos.
Durante o trabalho foi possível levantar alguns pontos importantes como, a
necessidade da integração de aplicativos de software dentro das empresas, evidenciando a
necessidade, ou, até mesmo exigência, de tornar o ambiente mais confiável, gerando uma
sincronização dos dados na comunicação destas soluções.
Tratando-se da abordagem prática realizada durante o estudo, foi possível aplicar os
componentes da API e entender suas funcionalidade, demonstrando um ambiente de
desenvolvimento mais viável na implementação de troca de mensagens, tanto no quesito de
implementação como de suporte posterior e com isso, sendo possível perceber a grande
importância na implementação de aplicativos de grande porte na utilização das tecnologias
JMS e Web Service para se obter performance e escalabilidade na integração de sistemas de
grande porte.
39
5.
TRABALHOS FUTUROS
Como sugestão para trabalhos futuros, sugere-se a implementação da JMS na
integração de aplicativos na área comercial, com objetivo de explorar todo conhecimento que
foi adquirido neste trabalho.
Também estudar outras tecnologias de troca de mensagens assíncronas. E ao longo
prazo seria o desenvolvimento de um protótipo de um Framework que encapsule toda a regra
de negócio de integração utilizando os códigos.
40
6.
REFERÊNCIAS BIBLIOGRÁFICAS
ALBINADER NETO, Jorge; LINS, Rafael Dueire. Web Services em Java. Rio de
Janeiro: Brasport, 2006.
Arquiteturas
de
Middleware:
Orientado
a
Mesagem
(JMS)
http://www.cin.ufpe.br/~redis/courses/plataformas-distribuicao/intranet/in1118-notaul08.pdf: Disponível em: 03, Maio, 2012.
ALLEN, Paul e BAMBARA Joseph. Sun Certified Enterprise Architect for J2EE:
Guia Oficial de Certificação. Rio de Janeiro: Campus, 2003.
BARBIERI, Carlos. BI – Business Intelligence. Rio de Janeiro: Axcel Books, 2001.
BODOFF, Stephanie e GREEN, Dale. Tutorial do J2EE. Rio de Janeiro: Elsevier
Editora Ltda, 2002.
BOND, Martin et al. Aprenda J2EE em 21 Dias. São Paulo: Pearson Education, 2003.
FIELDS, Duane K. e KOLB, Mark Desenvolvendo na Web com JavaServer Pages.
Editora Ciência Moderna, 2000.
GIOTTA P., et all. Professional JMS Programming. United States: Wrox Press, 2000.
HAASE, Kim. Java Message Service API – Tutorial. Califórnia: Sun Microsystems,
Inc, 2002.
HAEFEL, Richard Monson e CHAPPELL, David A. Java Message Service. O’Reilly,
2001.
JURIC, M. B., et all. Professional J2EE EAI. Wrox Press. United States, 2001.
41
KURNIAWAN, Budi. Java Para Web com Servlets, JSP e EJB. Rio de Janeiro:
Editora Ciência Moderna, 2002.
MARK ENDREI, JENNY Ang, ALI Arsanjani, Sook Chua, Philippe Comte, Pål
Krogdahl, Min Luo e Tony Newling (2004, Abril). Patterns: Service-Oriented
Architecture
and
Web
Services
(1ed.).
IBM
Redbooks.
NETO, Kanji Hara. Desenvolvimento de sistemas web utilizando arquitetura em três
camadas e applets. Cornélio Procópio: Centro Federal de Coordenação Tecnológica do
Paraná - CEFET-PR, 2002.
ORFALI, Robert. Cliente/Servidor. Guia essencial de sobrevivência. Rio de Janeiro:
Info book, 1996.
Oliveira, A. P. Apostila Servlet/JSP. Universidade Federal de Viçosa. Departamento
de Informática, 2001.
RECKZIEGEL, M. Gerenciamento de infra-estruturas de medição usando Web
Service, 2006.
ROMAN, Ed e AMBLER, Scott e JEWELL, Tyler. Mastering Enterprise JavaBeans.
Segunda Edição. John Wiley and Sons, Inc., 2002.
SERSON, Roberto Rubinstein. Programação Orientada a Objetos com Java 6. Rio de
Janeiro: Brasport, 2007.
SILVA, Luiz Augusto Matos. Plataforma Java J2EE. A atual pedida no cenário
corporativo.
Manaus.União
Nacional
do
Norte
(UNINORTE),
2006.
Sun Microsystems. Java 2 Platform, Enterprise Edition (J2EE) disponível em.:
http://java.sun.com/j2ee/. Acesso em: 03/05/2012.
The Java Web Services Tutorial: For Java Web Services Developer’s Pack, v2.0. Sun
Microsystems. 2006, disponível em:
42
http://www.oracle.com/technetwork/articles/javase/index-140168.html
Acesso em 03/05/2012
TITTEL, E. (2003), Coleção Schaum – XML, Bookman, 2003.
ORACLE disponível em: http://www.oracle.com/technetwork/pt/middleware/oracleweblogic-server-technical-wh-134365-ptb.pdf.
Download