Você está na página 1de 43

Prof. Jaime Correia jcn25@yahoo.

com

Apresentar

os principais componentes, APIs e servios da plataforma JEE. de Exerccios das ltimas provas das principais bancas examinadoras.

Resoluo

WJB-310A

- Developing Applications for the J2EE Platform (Sun) The Java EE 5 Tutorial October 2008

E nos seguintes Livros:

E ainda nos seguintes Livros:

Sistema Distribudo aquele em que as informaes em fase de processamento so distribudas pra vrios computadores, em vez de ficarem confinadas em uma nica mquina. (Sommerville) Exemplo: O modelo clienteservidor ao lado. Abaixo, cada Requisio tratada em sua Prpria thread.

Sistemas Distribudos Exemplos de Aplicaes Distribudas - um sistema de bolsa de valores - uma aplicao de operaes bancrias - um sistema de call center - um sistema de atendimento da previdncia ou da receita federal Em uma aplicao distribuda teremos mltiplos clientes conectados a mltiplos servidores e banco de dados em uma rede. Para o desenvolvimento de uma aplicao distribuda, no cenrio acima, teremos que lidar com diversos fatores, como: 1-Invocaes de mtodo remoto. Precisamos de uma lgica que conecte um cliente e um servidor por meio de uma conexo de rede. Isso inclui o envio de solicitaes de mtodo, gerenciamento de parmetros, etc.

2 - Balanceamento de carga. Os clientes devem ser dirigidos para o servidor com a carga mais leve. Se um servidor estiver sobrecarregado, outro diferente dever ser escolhido. 3 - Fail-over transparente. Se um servidor ou a rede cair, os clientes podero ser redirecionados para outros servidores sem interrupo de servio? Se for possvel, com que velocidade essa troca acontecer? Em segundos? Minutos? O que aceitvel para o problema do seu negcio? 4 - Integrao de back-end. O cdigo precisa ser escrito para fazer os dados do negcio em bancos de dados persistirem, bem como para integrar-se a sistemas legados que podem j existir. 5 - Transaes. E se dois clientes acessarem a mesma linha do banco de dados simultaneamente? Ou o que acontecer se o banco de dados cair? As transaes protegem voc contra esses problemas.

6 - Clustering. E se o servidor contiver informaes de estado quando cair? Esse estado ser replicado por todos os servidores, de modo que os clientes possam utilizar um servidor diferente? 7 - Reinstalao dinmica. Como voc realiza atualizaes de software enquanto o site executado? Precisa desligar a mquina ou pode mant-la em execuo? 8 - Desligamento limpo. Se precisar desligar um servidor, voc poder faz-lo de maneira tranqila e fcil, sem interromper o servio para os clientes que atualmente esto utilizando o servidor? 9 - Registro em log e auditoria. Se algo sair errado, haver um log que possamos consultar para determinar a causa do problema? Um log nos ajudaria a depurar o problema, de modo que no acontecesse novamente.

10 - Gerenciamento de sistemas. No caso de uma falha catastrfica, quem est monitorando nosso sistema? Gostaramos de ter um software de monitorao que enviasse uma mensagem por pager a um administrador de sistema se uma catstrofe ocorresse. 11 - Threading. Agora que temos muitos clientes se conectando a um servidor, esse servidor vai precisar da capacidade de processamento de mltiplas solicitaes de cliente simultaneamente. Isso significa que o servidor deve ser codificado para ser multithreaded. 12 - Middleware baseado em mensagem. Certos tipos de solicitaes devem ser baseados em mensagem, um sistema em que os clientes e servidores esto muito fracamente acoplados. Precisamos de uma infra-estrutura para acomodar um sistema de mensagens.

13 - Ciclo de vida de objeto. Os objetos que vivem dentro do servidor precisam ser criados ou destrudos quando o trfego de clientes aumenta ou diminui, respectivamente. 14 - Pool de recursos. Se um cliente atualmente no estiver utilizando um servidor, esses recursos preciosos do servidor podero ser retornados para um pool, a fim de serem reutilizados quando outros clientes se conectarem. Isso inclui soquetes (como conexes de banco de dados), bem como objetos que vivem dentro do servidor. 15 - Segurana. Os servidores e bancos de dados precisam ser protegidos contra sabotadores. Usurios conhecidos devem ter permisso para realizar somente operaes que seus direitos permitam executar.

Middleware Ao software que se encarrega de lidar com todos esses fatores damos o nome de middleware. As empresas ao desenvolverem um sistema distribudo devem construir seu prprio middleware ou utilizar algum desenvolvido por terceiros. E onde o J2EE entre nesse cenrio ??? O Java Enterprise Edition um conjunto robusto de servios middleware que facilita muito a vida para desenvolvedores de aplicaes do lado do servidor. A plataforma J2EE define um conjunto de padres para o desenvolvimento de aplicaes corporativas multicamadas. JEE simplifica o desenvolvimento fornecendo uma arquitetura baseada em componentes e um conjunto completo de servios disponibilizados a estes componentes. Gerenciando automaticamente diversos aspectos complexos relacionados ao desenvolvimento de aplicaes corporativas.

ATENO ! O J2EE uma especificao, no um produto. O J2EE especifica as regras de compromisso com as quais as pessoas devem concordar ao escrever software corporativo. Os fornecedores ento implementam as especificaes de J2EE em seus produtos compatveis com J2EE. Isso quer dizer que as APIs e demais tecnologias que voc usa no desenvolvimento de aplicaes JEE pertencem ao produto de um fabricante que implementa as especificaes JEE. Exemplo: Jboss, OC4J, BEA, Websphere, Glassfish, Gernimo so servidores de aplicao que implementam a especificao JEE.

Nos sistemas distribudos iremos desenvolver novas aplicaes sob os sistemas chamados servidores de aplicaes. Os servidores de aplicaes fornecem servios que auxiliam no desenvolvimento de aplicaes distribudas. O Java EE um conjunto de especificaes de APIs, uma arquitetura de computao distribuda, e definies para empacotamento de componentes distribuveis para disponibilizao.

Como o J2EE uma especificao (indicada para atender s necessidades de muitas empresas) ele no est inerentemente amarrado a um fornecedor e ele tambm suporta o desenvolvimento multiplataforma. Isso encoraja os fornecedores a competir, produzindo produtos melhores, mas tambm tem sua desvantagem, que so as incompatibilidades que surgiro entre produtos de fornecedores alguns problemas devidos a ambigidades com especificaes, outros devidos natureza humana de competio.

Multicamadas - The N-tier architectural model: Na arquitetura multicamadas o software construdo atravs de componentes distribudos em vrias camadas, normalmente incluindo uma Camada Cliente, uma ou mais Camadas Intermedirias e uma Camada de Dados. Conceitualmente cada camada possui atribuies bem definidas, onde uma camada cliente da outra, existindo uma sucesso de relaes Cliente/Servidor entre as camadas.

Multicamadas O modelo arquitetural N-camadas: Separa programaticamente a funcionalidade da aplicao ao longo de 3 ou mais camadas. Possui componentes e infraestrutura prprias para uma camada e que so direcionados a realizar uma tarefa em particular. Possui interfaces que definem os limites da camada.

Arquitetura JEE Enquanto uma aplicao JEE pode consistir de trs ou mais camadas, geralmente as classificamos como sendo de trs camadas, porque elas so distribudas em 3 localizaes diferentes: nas mquinas clientes, no servidor JEE e no servidor de banco de dados. Note que a camada web e a camada de negcios residem no servidor JEE.

Perceba que em uma arquitetura n-camadas no implica que cada uma das camadas execute em uma mquina separada. plenamente possvel escrever aplicaes n-camadas que execute em uma nica mquina. Mrito ao projeto da aplicao que indica que as camadas sejam divididas e disponibilizadas em mquinas separadas ou no. Em uma arquitetura multicamadas, os componentes so agrupados em camadas. Cada camada delega trabalho camada inferior. Se optarmos pela tica da responsabilidade ao invs da localizao para classificar uma aplicao JEE passaramos a ter 4 camadas ao invs das 3 vistas na figura anterior, teramos: 1 Camada de apresentao: a interface do usurio e pode ser tanto um browser quanto uma aplicao desktop. 2 Camada de negcios: Define as regras de negcio. Contm o fluxo de trabalho e a lgica de processamento. Em outras palavras, os componentes da camada de negcios modelam aes ou processos que a aplicao pode realizar, como faturamento, buscas, pedidos, etc.

3 A camada de persistncia lida com as interaes com o banco de dados. 4 A camada de banco de dados consiste em um BD ralacional, como o Oracle, que armazena os objetos persistentes. Um dos pontos desfavorveis da arquitetura de 4 camadas que ela enfraquece a modelagem OO ideal do domnio de negcio onde os objetos encapsulam tanto os dados quanto o comportamento. Como a arquitetura tradicional se concentra na modelagem dos processos de negcio, ao invs do domnio, a camada de negcios tende a parecer mais com uma aplicao procedural dirigida por banco de dados do que com uma OO. Como os objetos da camada de persistncia so simples portadores de dados, eles se parecem muito mais com as definies de registros de banco de dados do que com objetos de primeira classe do mundo OO. Isso ficar claro ao estudarmos os EJBs de sesso e as Entidades na seo EJB 3.0.

Computao Distribuda + J2EE A plataforma J2EE oferece inmeras vantagens para a empresa: O J2EE estabelece padres para as reas da empresa que necessitam de computao, como conectividade de banco de dados, componentes de negcios da empresa, middleware orientado para mensagens (MOM, message-oriented middleware), componentes relativos Web, protocolos de comunicao e interoperabilidade. O J2EE promove as melhores implementaes baseadas em padres abertos, protegendo o investimento tecnolgico. O J2EE proporciona uma plataforma padro para a construo de componentes de software que so portveis atravs de implementaes do fornecedor, evitando depender exclusivamente de um fornecedor.

Computao Distribuda + J2EE A plataforma J2EE oferece inmeras vantagens para a empresa: O J2EE diminui o tempo necessrio para o lanamento do produto no mercado, j que grande parte da estrutura fornecida por produtos de fornecedores que so implementados de acordo com a especificao J2EE padro. As empresas de tecnologia da informao (TI) podem agora sair dos negcios de middleware e se concentrar na criao de aplicativos para seus negcios. O J2EE aumenta a produtividade do programador, pois os programadores em Java podem aprender, com relativa facilidade, a usar as tecnologias J2EE baseadas na linguagem Java. Todo o desenvolvimento de software empresarial pode ser realizado usando a plataforma J2EE e usando a Java, como a linguagem de programao. O J2EE promove a interoperabilidade em ambientes heterogneos existentes.

Computao Distribuda + J2EE O J2EE baseado em componentes. Um componente o cdigo que implementa um conjunto de interfaces bem-definidas. uma parte gerencivel, discreta de lgica. Os componentes no so aplicaes completas - no podem ser executados sozinhos. Em vez disso, so utilizados como peas de um quebra-cabea para resolver um problema maior. Exemplos de componentes: Servlets, JSPs, EJBs. possvel desenvolver aplicaes J2EE a partir da combinao de componentes, reduzindo a complexidade e aumentando a produtividade no desenvolvimento de software.

Um componente distribudo pode somente interagir com um outro componente atravs da interface desse componente

Componentes e Container Container So ambientes operacionais responsveis por executar os componentes da plataforma JEE. Os componentes so encapsulados pelos containeres que por sua vez so responsveis por: - Gerenciar os ciclos de vida dos componentes. - Isol-los de outros componentes. - Isol-los de outros ambientes de execuo. A plataforma JEE utiliza um modelo de aplicao multicamada na qual a lgica da aplicao dividida em componentes de acordo com sua funo. A localizao do componente depende de qual camada ele estar em um ambiente JEE multicamada.

Componentes e Containers A plataforma Java est organizada nos seguintes tipos de containeres: Enterprise JavaBeans (EJB) container: Gerncia os Enterprise Java Beans e tambm prove diversos servios. Nesse continer esto localizados os EJBs que contm a lgica de negcios da aplicao. Alm disso, esse continer normalmente utilizado pelos outros contineres para aceder camada EIS. Web container: Gerncia os componentes da camada web, as pginas JSP e os servlets. Esse continer prove diversos servios como gerncia do ciclo de vida de componentes e tambm fornece acesso APIs para esses componentes. Application client container: Localizado na camada cliente, gerencia as aplicaes do lado cliente. O continer pode acessar diretamente ao continer EJB .

Componentes e Containers A plataforma Java est organizada nos seguintes tipos de containeres: Applet container: Localizado no lado cliente composto por um plugin Java e um browser executados em conjunto. Ambos permitem a execuo de applets no lado do cliente.

Os containeres JEE e suas respectivas localizaes.

TRT 5 2009 / CESPE 67 Um cliente J2EE pode ser um cliente web ou uma aplicao cliente. A aplicao cliente formada por dois elementos: pginas web dinmicas, que contm vrios tipos de linguagens de markup, geradas por componentes web; e um web browser, que apresenta as pginas recebidas do servidor. TRT 8 / FCC 42. O Continer J2EE que fornece aos desenvolvedores o ambiente para rodar Java Server Pages (JSPs) e servlets (A) Applet (Applet container). (B) Enterprise Java Beans (EJB). (C) Interface (Interface container). (D) do cliente do aplicativo (Application client container). (E) Web (Web container).

TRT 5 2009 / CESPE 67 Um cliente J2EE pode ser um cliente web ou uma aplicao cliente. A aplicao cliente formada por dois elementos: pginas web dinmicas, que contm vrios tipos de linguagens de markup, geradas por componentes web; e um web browser, que apresenta as pginas recebidas do servidor. TRT 8 / FCC 42. O Continer J2EE que fornece aos desenvolvedores o ambiente para rodar Java Server Pages (JSPs) e servlets (A) Applet (Applet container). (B) Enterprise Java Beans (EJB). (C) Interface (Interface container). (D) do cliente do aplicativo (Application client container). (E) Web (Web container).

Analista TRT 1 2011 FCC 50. J2EE uma plataforma de programao para servidores na linguagem de programao Java, que integra uma srie de especificaes e containers, cada uma com funcionalidades distintas. Nesse contexto, correto afirmar que so integrantes do J2EE: (A) (B) (C) (D) (E) Servlets, Jcompanye JSP. JDBC, JSP, EJBs. EJBs, Servlets e JBoss. JDBC, Hibernate e JPA. JSP, JSFe Eclipse.

Analista TRT 1 2011 FCC 50. J2EE uma plataforma de programao para servidores na linguagem de programao Java, que integra uma srie de especificaes e containers, cada uma com funcionalidades distintas. Nesse contexto, correto afirmar que so integrantes do J2EE: (A) (B) (C) (D) (E) Servlets, Jcompanye JSP. JDBC, JSP, EJBs. EJBs, Servlets e JBoss. JDBC, Hibernate e JPA. JSP, JSFe Eclipse.

Tecnico TRT AL 2011 31 A especificao Java EE define os seguintes componentes: I. Clientes da aplicao (Application Clients) e applets. II. Java Servlet, JavaServer Faces e JavaServer Pages. III. Enterprise Javabeans (EJB). Os componentes I, II e III rodam, respectivamente, em: (A) servidor, cliente, cliente. (B) cliente, servidor, cliente. (C) cliente, cliente, servidor. (D) servidor, cliente, servidor. (E) cliente, servidor, servidor.

Tecnico TRT AL 2011 31 A especificao Java EE define os seguintes componentes: I. Clientes da aplicao (Application Clients) e applets. II. Java Servlet, JavaServer Faces e JavaServer Pages. III. Enterprise Javabeans (EJB). Os componentes I, II e III rodam, respectivamente, em: (A) servidor, cliente, cliente. (B) cliente, servidor, cliente. (C) cliente, cliente, servidor. (D) servidor, cliente, servidor. (E) cliente, servidor, servidor.

Computao Distribuda + J2EE Os containers representam um ambiente operacional, fornecendo os recursos e infra-estrutura necessria publicao e execuo de componentes, assim encapsulam a complexidade do ambiente coorporativo e fornece independncia de plataforma aos componentes. Os containeres representam a interface entre os componentes e servios de baixo nvel fornecidos pela plataforma e necessrios execuo do componente, sendo assim, os componentes devem ser implementados seguindo as especificaes do container. Para que um componente possa ser utilizado, o mesmo deve ser publicado em um container, necessitando de uma operao chamada deploy (configurao e preparao para execuo). Na referida operao, o componente ser configurado, atravs de arquivos XML e/ou da gerao de classes de servios.

Computao Distribuda + J2EE A comunicao entre componentes pode ser local, ou seja, o servidor de aplicao deve tornar os componentes disponveis entre si na mesma JVM. Mas e quando a comunicao entre os componentes for remota ??? Estamos no mundo das aplicaes distribudas, portanto precisamos saber como um componente localizado em uma mquina consegue realizar uma chamada a um componente em uma outra mquina? Exemplo: Como um servlet localizado em uma mquina sabe da existncia de um EJB que est em outra mquina e consequentemente em uma JVM diferente?

Para essa tarefa o servidor de aplicao nos fornece duas APIs: o RMIIIOP e a API JNDI RMI-IIOP (Remote Method Invocation Over the Internet Inter ORB Protocol) Possibilita que se invoque os mtodos sobre objetos de maneira remota. Permite escrever objetos distribudos em Java, possibilitando que os objetos se comuniquem estando em diferentes mqunas virtuais java (JVMs). A comunicao entre componentes distribudos tambm deve lidar com os seguintes aspectos: - Serializao e Desserializao dos valores de retorno e argumentos. - Passagem de excees distribudas. - Passagem de contexto de segurana e do contexto transacional entre os componentes.

O JNDI (Java Naming and Directory Interface) uma API da JEE que fornece uma interface padro para localizar usurios, mquinas, redes, objetos e servios. A JNDI utilizada pelo EJB, RMI-IIOP, JDBC, etc Em suma, enquanto o o RMI-IIOP se responsabiliza em como realizar a comunicao entre objetos distribudos. O JNDI se responsabiliza em localizar os objetos distribudos para que a comunicao entre os mesmos possa ser efetuada. Adiante, ns iremos nos naprofundar um pouco mais nos detalhes do RMI-IIOP e no JNDI.

Na definio da plataforma JEE vimos que alm dos componentes, so oferecidos um conjunto servios em forma de APIs para a escrita de aplicaes corporativas. Na verso do 5 do JEE, as principais APIs esto indicadas na figura abaixo.

Perceba que em todos os containeres temos a indicao das APIs inerentes ao prprio container, mas tambm uma indicao que temos acesso a todas as APIs que fazem parte do J2SE. Dessa forma, alm das APIs prprias do JEE podemos usar as APIs do J2SE, como: JDBC, JNDI, RMI, etc.

APIs JEE fornecem contratos atravs de interfaces da linguagem Java para permitir que os componentes de sua aplicao possa usar os servios disponibilizados pelo fabricante sem se preocupar com a implementao desses servios.
Segmento Neutro (Aplicao) Define a especificao JEE para a API Implementao do fabricante para a API

Computao Distribuda + J2EE O JEE torna-se uma plataforma ideal para o desenvolvimento de aplicaes distribudas pois oferece servios de middleware atravs das suas tecnologias a seguir: O suporte a rede: - O TCP est includo no pacote java.net - sockets so suportados tanto no cliente como no servidor - HTTP suportado O RMI permite aos desenvolvedores consruir servios orientados a objetos distribudos. - Server-side RMI allows multi-user access to services - RMI forms the basis of the E|B distributed protocols CORBA is built into the J2SE platform SSL (Secure Socket Layer) is supported in )2SE Connection to databases is supported by JDBC

J2EE Reviso dos principais conceitos: A Plataforma Java 2EE define um padro para o desenvolvimento de aplicaes coorporativas multicamadas, simplificando o desenvolvimento dessas aplicaes atravs de uma padronizao baseada em componentes, fornecendo um conjunto completo de servios para esses componentes, e da manipulao automtica de vrios detalhes inerentes ao ambiente coorporativo, tais como: Controle Transacional; Ajuste de Performance; Persistncia; Segurana; Escalabilidade; Gerencia de Recursos (Processos, Threads, Memria, Conexes com Banco de Dados e Sesses com Usurios). A plataforma J2EE utiliza uma arquitetura baseada em componentes e containeres; Os componentes so unidades de software, atravs das quais as aplicaes so construdas; Os containeres so ambientes operacionais, nos quais os componentes so publicados e executados;