A Arquitetura J2EE
Componentes de Aplicação
- Aplicações J2EE são compostas de componentes
- Para nós, um componente é uma unidade autocontida de software que pode ser composta
numa aplicação em tempo de design (sem compilação)
- Componentes J2EE são escritos em Java
Componentes J2EE na Camada de Apresentação
- Os seguintes componentes podem existir na camada de apresentação:
- "Application client" (cliente não-Web)
- Tipicamente usa Swing como User Interface (UI)
- Também chamado "Console Application"
- Applets
Componentes J2EE na Camada Web
- Componentes da camada Web podem incluir vários módulos, incluindo:
- Páginas HTML/XML estáticas
- Servlets
- Programas em Java que rodam no servidor Web e que processam pedidos gerando respostas
dinâmicas
- Java Server pages (JSP)
- Templates HTML mais fáceis de criar, mas contendo "scriplets" (trechos em
Java) para a geração de conteúdo dinâmico
- São convertidas em servlets quando acessadas pela primeira vez
- JavaBeans
- Componentes tradicionais em Java que podem ser usados em servlets e JSPs
Componentes J2EE na Camada de Aplicação
- Componentes da camada de aplicação são chamados Enterprise Java Beans (EJB)
- Há vários tipos de EJBs:
- Session Beans
- Representam uma conversação transiente com um cliente
- Quando o cliente termina, a session bean some
- Entity Bean
- Representam dados persistentes gravados num banco de dados (tipicamente uma linha de uma
tabela)
- Message-Driven Bean
- Uma combinação de um session bean com um Listener de mensagem Java Message
Service (JMS)
- Permite que um componente de aplicação (o message bean) receba mensagens assíncronas
- Isso significa que podemos acoplamento muito fraco entre pedaços
da aplicação: importante quando máquinas remotas estão
envolvidas e podem nem estar no ar, ou pelo menos, poderão não
responder de forma síncrona a chamadas remotas
- Não falaremos desse tipo de Bean nesta disciplina
A camada de dados
- Observe que a camada de chamamos "de dados" pode ser um banco de dados ou
outra coisa:
- Por exemplo, pode ser um sistema ERP, CRM ou outro sistema legado
- Por esse motivo, a camada freqüentemente é chamada de "camada EIS"
A Arquitetura J2EE
Containers e Serviços
- A chave da arquitetura J2EE é que muito trabalho normalmente feito pelo programador é
poupado, já que é feito automaticamente pelo middleware
- O programador se concentra no Business Logic
- A entidade que faz essa mágica é o Container
- Um container "envolve" um componente de forma a capturar mensagens dirigidas
ao componente e fornecer serviços automáticos a este
- Portanto, antes de ser usado, um componente (seja cliente, Web ou EJB) deve:
- Ser montado numa aplicação
- Ser "deployed" (implantado) dentro de um container
- O container pode ser configurado em tempo de deployment
- Com declarative programming, isto é, mudança de atributos
- Exemplos do que se faz no deployment ao configurar um container:
- Estabelecer segurança
- Estabelecer o tratamento transacional
- Mapear nomes entre a aplicação e os recursos disponíveis
- O container também gerencia serviços não configuráveis:
- O lifecycle dos componentes (achar, criar, destruir, ...)
- Pooling de recursos (conexões de bancos de dados, por exemplo)
- Persistência de dados
Tipos de Containers
- Os seguintes tipos de containers existem e executam no servidor J2EE:
- Container EJB: um tal container para acolher algumas ou todas as Enterprise Beans (EJBs) de uma
aplicação
- Web container: um tal container para acolher algumas ou todas as JSPs e servlets de uma aplicação
- Os seguintes tipos de containers existem e executam na máquina cliente:
- Application Client Container: para executar uma aplicação "console"
- Observe que servlets e JSPs podem executar sem um "J2EE server" completo
- Podem executar num servidor Web com suporte especial sem ter suporte a EJB
- Por exemplo: Apache Tomcat
- Portanto, na figura abaixo, onde se vê "J2EE server", podemos ter, na
realidade, máquinas diferentes

As APIs do J2EE
- Java 2 Platform, Standard Edition (J2SE)
- Enterprise JavaBeans Technology
- JDBC API
- Para acessar Bancos de Dados
- Java Servlet Technology
- JavaServer Pages (JSP) Technology
- Java Message Service (JMS)
- Para comunicação assíncrona distribuída, fracamente acoplada e confiável
- Java Transaction API (JTA)
- Para a demarcação de transações
- JavaMail Technology
- Para que aplicações possam enviar mail
- Java API for XML Processing (JAXP)
- Para implementar B2B, relatório XML, etc.
- J2EE Connector Architecture
- Para se conectar de forma simples a vários sistemas de informação corporativos (ERP,
BD
- Java Authentication and Authorization Service (JAAS)
- Para prover serviços de autenticação e autorização
j2ee-1 programa