J2EE. J2EE - Surgimento



Documentos relacionados
Enterprise Java Bean. Enterprise JavaBeans

Aplicações Distribuídas Cliente/ Servidor Corporativas

Stateful Session Beans

ENTERPRISE JAVABEANS 3. Msc. Daniele Carvalho Oliveira

J2EE TM Java 2 Plataform, Enterprise Edition

Enterprise Java Beans

Sistemas Distribuídos na WEB (Plataformas para Aplicações Distribuídas) Sumário. Java 2 Enterprise Edition. J2EE (Java 2 Enterprise Edition)

Aplicação da Arquitetura Multicamadas Utilizando Java. Raquel Schlickmann Orientador: Marcel Hugo

J530 - Enterprise JavaBeans. Introdução a EJB e Stateless. Session Beans. argonavis.com.br. Helder da Rocha (helder@acm.org)

EJB. Session Beans. J2EE (C. Geyer) Introdução a SessionBean 1

Enterprise JavaBeans. Java Deployment Course. por Jorge H. C. Fernandes DI-UFPE Julho de 1999

TDC2012. EJB simples e descomplicado, na prática. Slide 1

PadrãoIX. Módulo II JAVA. Marcio de Carvalho Victorino. Servlets A,L,F,M

Sistemas Distribuídos e Tolerância a Falhas Mestrado em Engenharia Informática 1ª ano / 2ª semestre

Web Technologies. Tópicos da apresentação

UFG - Instituto de Informática

Como criar um EJB. Criando um projeto EJB com um cliente WEB no Eclipse

Fundamentos da Plataforma Java EE. Prof. Fellipe Aleixo

Sistemas Distribuídos

Arquitetura JEE Introdução à Camada de Negócios: Enterprise Java Beans (EJB) Marcos Kalinowski

Laboratório EJB e J2EE Uma aplicação completa

O caminho do inferno está pavimentado de boas intenções. Marx.

Java 2 Enterprise Edition Uma aplicação J2EE completa

Invocação de Métodos Remotos

Linguagem de Programação JAVA. Professora Michelle Nery Nomeclaturas

Java 2 Enterprise Edition

Resumo: Perguntas a fazer ao elaborar um projeto arquitetural

Orientada a serviços: JAX-WS SOAP API

Desenvolvimento WEB II. Professora: Kelly de Paula Cunha

Middleware de Aplicações Paralelas/Distribuídas

Padrão Arquitetura em Camadas

DESENVOLVIMENTO COM JAVA EE E SUAS ESPECIFICAÇÕES

J2EE. Tecnologias de Middleware. Fernando Martins - fmp.martins@gmail.com

UFG - Instituto de Informática

Entity Beans. Introdução Entity Beans BMP

Chamadas Remotas de Procedimentos (RPC) O Conceito de Procedimentos. RPC: Programa Distribuído. RPC: Modelo de Execução

Message Driven Beans. Apresentação. Introdução Implementação de MDBs Deployment no JBoss Java Messaging Service Exemplo

UFG - Instituto de Informática

SCC Técnicas de Programação para WEB. Rodrigo Fernandes de Mello

Curso de Linguagem Java

Adriano Reine Bueno Rafael Barros Silva

Framework. Marcos Paulo de Souza Brito João Paulo Raittes

Enterprise Java Beans (III)

Arquitetura de uma Webapp

Java 2 Standard Edition. Fundamentos de. Objetos Remotos. Helder da Rocha

4 Um Exemplo de Implementação

Oracle WebLogic Server 11g: Conceitos Básicos de Administração

WebSphere MQ. Bruno Miguel de Sousa Gonçalves

Grupo I [6v] Considere o seguinte extracto de um programa de definição de uma calculadora apenas com a função soma de dois valores reais

Universidade Federal de Juiz de Fora Ciência da Computação Sistemas Distribuídos Professor Ciro Barbosa

Sistemas Distribuídos

Invocação de Métodos Remotos RMI (Remote Method Invocation)

Java 2 Enterprise Edition Fundamentos básicos de Transações

Programação para a Internet. Prof. M.Sc. Sílvio Bacalá Jr sbacala@gmail.com

SISTEMAS DISTRIBUÍDOS

Associação Carioca de Ensino Superior Centro Universitário Carioca

Tecnologia Java. Daniel Destro do Carmo Softech Network Informática

Prática da Disciplina de Sistemas Distribuídos Serviços Web IFMA DAI Professor Mauro Lopes C. Silva

Web Services. (Introdução)

Curso de Aprendizado Industrial Desenvolvedor WEB

Uma Introdução à Arquitetura CORBA. O Object Request Broker (ORB)

EJB 3.1: A Community Update

Projeto Demoiselle. Para perguntas e respostas, utilizem a lista de discussões de usuários da comunidade: demoiselle-users@lists.sourceforge.

SCE-557. Técnicas de Programação para WEB. Rodrigo Fernandes de Mello

Laboratório de Computação VI JAVA IDL. Fabricio Aparecido Breve

Java para Desenvolvimento Web

UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMÁTICA CURSO DE BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO

Princípios de Sistemas Distribuídos. Tecnologias utilizadas em sistemas distribuídos Aula 5

Sistemas Distribuídos

3 Um Framework Orientado a Aspectos para Monitoramento e Análise de Processos de Negócio

Prova Específica Cargo Desenvolvimento

Um Processo para Desenvolvimento de Aplicações Web Baseado em Serviços. Autores: Fábio Zaupa, Itana Gimenes, Don Cowan, Paulo Alencar e Carlos Lucena

JPA: Persistência padronizada em Java

Um pouco do Java. Prof. Eduardo

Sistemas Distribuídos e Paralelos

UNIVERSIDADE. Sistemas Distribuídos

Tecnologias Web. Java Enterprise Edition

Prof. Fellipe Araújo Aleixo

Java II. Sérgio Luiz Ruivace Cerqueira

Objetos Distribuídos - Programação Distribuída Orientado a Objetos. Luiz Affonso Guedes

Sistemas Distribuídos

Argo Navis J931 - Padrões de Design J2EE. Introdução. Objetivos de aprender padrões J2EE. Conhecer padrões para uso na plataforma J2EE

Programação Web Aula 12 - Java Web Software

Arquiteturas de Aplicações Web. Leonardo Gresta Paulino Murta

SISTEMAS DISTRIBUIDOS

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Serviço de Transação. Transação - Conceitos

Transcrição:

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: Linguagem Java e ambiente de execução (máquina virtual) Em seguida: APIs foram definidas para vários serviços usados por aplicações JDBC, JNDI, RMI, AWT/Swing, JMS, EJB J2EE une essas APIs e serviços em um framework de componentes 1

APIs X Framework APIs provê serviços individuais Nomes, Eventos, Segurança, Transações, Persistência, etc Frameworks une esses serviços em um ambiente coeso Funcionalidade bem definida para cada serviço Componentes seguem regras do framework Exemplo: Se um componente está participando de um serviço de gerenciamento de transaçoes distribuídas, ele deve apenas começar a executar suas próprias transações em tais e tais condições J2EE é o Enterprise Java framework Requisitos para Plataformas Padronização Oferecer serviços especializados e padronizados Oferecer diferentes formas de utilização 2

Especificação X Produto J2EE: Especificação da Sun Produtos que implementam J2EE: IBM's WebSphere BEA's WebLogic Jboss (código aberto) J2EE Modelo Cliente-Servidor baseado em Componentes J2EE oferece suporte para desenvolvimento de aplicações multi-camadas (multitier) Cliente (client-tier): interface do usuário Camada do Meio (middle-tier): oferece serviços para o cliente e lógica da aplicação Camada de Dados (enterprise information system EIS -tier): gerenciamento de dados 3

Arquitetura de Aplicações com 1 camada Desktops and Mainframes Todo o software em uma única camada Apresentação (Interface) Lógica da Aplicação Lógica de Acesso a Dados DBMS Arquitetura de Aplicações com 2 camadas Computação Cliente/Servidor Software em duas camadas Apresentação (Interface) Lógica da Aplicação Lógica de Accesso a Dados DBMS Camada Cliente Camada Servidor 4

Arquitetura de Aplicações com 3 camadas Computação Distribuída Software em três camadas Apresentação (Interface) Lógica da Aplicação Lógica de Acesso a Dados DBMS Camada Cliente Camada da Applicação Camada de Informação Arquitetura de Aplicações com N camadas Cliente Apresentação Aplicação Integração Informações (Dados) Vantagens: Escalabilidade, Heterogeneidade, Distribuição Geográfica, Disponibilidade, 5

Papéis O desenvolvimento de aplicações J2EE é realizado por diversos elementos cada uma com uma função (papel) específico: Provider (Fornecedor de Componentes) Desenvolve componentes que farão parte de aplicações (incluindo descrição das interfaces home e remote e do descritor de implantação) Deployer (Instalador/Implantador): Instala e configura a aplicação em um determinado ambiente Gera classes para permitir o container gerenciar componentes EJB Administrador do Sistema Mantém a infra-estrutura de hardware e software do sistema Fornecedor do Servidor EJB Oferece ferramentas e as APIs dos serviços J2EE APIs RMI É o protocolo usando para comunicação entre duas camadas JNDI (Java Naming and Directory Interface) Serviço de nomes e de diretórios JDBC (Java DataBase Connectivity) Permite criar conexões para banco de dados JMS (Java Message Service) Envio de mensagens assíncronas 6

J2EE Interface com Usuário Lógica da Aplicação Gerenciamento de Dados Tecnologias J2EE Applet Application Midlet Servlet JSP Java Bean EJB: Session Entity JDBC JNDI JMS JTA Connector JavaMail Java IDL RMI/IIOP Vendor API s Camada do Cliente Camada de Apresentação Camada da Lógica da Aplicação Camada de Integração Camada da Informação 7

Tecnologias J2EE J2EE especifica tecnologias para dar suporte à aplicações multicamadas: Categorias: Componentes Serviços Comunicação Tecnologias J2EE Componentes Desenvolvimento de módulos que podem ser usados por múltiplas aplicações Tipos: Clientes: Applets, clientes de aplicações,... Servidores: componentes EJB, componentes Web,... Serviços Oferecem funcionalidades usadas pelos componentes (serviço de nomes, serviços de comunicação assíncrona, ) Comunicação: protocolos para comunicação remota (RMI, RMI-IIOP, HTTP) 8

J2EE Promove a diversidade arquitetural Permite uma variedade de: tipos de clientes (Programas Java, Web browsers com JSP e/ou com Java Applets...) tipos de servidores (servlets, Clientes J2EE Applets: componentes Java que executam em um browser Web e tem acesso as características da linguagem Java. Browsers baseados em clientes applets comunicam-se usando http Aplicações clientes são programas de interface com usuário que podem interagir diretamente com a camada EJB usando RMI Acessam serviços da plataforma J2EE como JNDI, JMS, etc...... 9

EJB Elemento central da plataforma J2EE J2EE complementa o EJB especificando: APIs para desenvolvimento Um ambiente distribuído onde o EJB é responsável pela lógica da aplicação JavaBean services + remote object + runtime EJB Enterprise Java Beans Bean: Componente de Software Reusável Expansão do JavaBeans incluindo suporte para componentes reusáveis do lado do servidor Promove a separação entre a implementação da solução comercial e os serviços do sistema Arquitetura de Componentes para Sistemas Distribuídos Arquitetura multi-camadas Transferência da lógica da aplicação do lado do cliente para o lado do servidor 10

Containers Conceito central da arquitetura J2EE Abrigam componentes J2EE Liberam os componentes da interação com a infraestrutura subjacente Funções: Oferecer serviços (segurança, ciclo de vida, transações, persistência) para os componentes Oferece acesso uniforme aos serviços Realiza o registro de componentes De forma transparente para o programador! EJB Papel do Desenvolvedor sem EJB -Criar processos, threads -Gerenciar o uso de serviços adicionais (segurança, etc) -Controlar a Execução Papel do Desenvolvedor com EJB - Criar: interfaces lógica da aplicação EJB é responsável por: - processos, threads -Controlar a Execução distribuída - oferecer serviços adicionais 11

Arquitetura do EJB Servidores EJB Fornece containers para abrigar componentes Gerencia e coordena a alocação de recursos (processos, threads, serviços) EJB Containers: Interface entre EJB Bean e o mundo externo Clientes nunca acessam o Bean diretamente Acesso ao Bean é feito via métodos gerados pelo Container (esses métodos invocam os métodos do Bean) Registram o componente no serviço de Nomes Oferecem contexto de execução para os componentes Arquitetura do EJB Componente EJB Composto por: Interface Home Define métodos para gerenciar o ciclo de vida de um componente (criar, remover e encontrar beans) Duas Interfaces Classe Estende javax.ejb.ejbhome Interface Remote Define os métodos que o componente oferece para o mundo externo Representa a visão que o cliente tem do componente Estende javax.ejb.ejbobject Classe do Componente Implementação dos métodos 12

Arquitetura baseada em Componente Servidor EJB Cliente EJB Invoca Métodos do Container Enterprise Java Bean EJB Container Invoca Métodos do EJB EJB - Arquitetura Servidor EJB Container EJB Cliente Métodos do componente create, find e remove Objeto EJB Visão do Cliente Home EJB Id do Bean Ambiente Componente EJB Descritores de Implantação 13

Tipos de Componentes EJB Componentes Entidades (Entity Beans) Representa uma entidade global que pode ser acessada através do bean Em geral representa conceitos da empresa expressos por nomes (nome, endereco, telefone, email, cpf, etc) Em geral tem um estado persistente Componentes Sessão (Session Beans) Age como uma extensão lógica do cliente Representa ações que uma aplicação pode realizar (cadastrar cliente, remover cliente, etc) Pode ser com estado ou sem estado (em relação ao cliente) Descritores de Implantação Armazena informações sobre o ambiente onde o componente deve ser executado Estruturais: descrevem a estrutura do componente e declaram as dependências externas De Montagem: descrevem como os componentes de um arquivo ejb-jar relacionam-se de modo a formar uma unidade Exemplo: informam se a sessão será com estado ou sem estado Desde a versao EJB 1.1 é especificado em um arquivo XML 14

Descritores de Implantação Há ambientes gráficos que permitem configurar esse arquivo sem precisar codificar na linguagem XML Permite a instalação de beans em diferentes plataformas Descritor de implantação Descreve externamente (com propriedades) como um determinado componente deverá ser utilizado: segurança transações nomeação persistência (para Entity Beans) interfaces Remote, Home e classes do Bean e da chave stateful ou stateless (para Session Beans) 15

Componentes Sessão com Estado Mantém o estado do cliente durante o tempo da vida da instânica contém dados de um cliente específico existe durante a duração da sessão cliente-bean Componentes Sessão com Estado Instância Não existe cliente chama create() newinstance(), setsessioncontext(cntx), ejbcreate() cliente ou container chama remove() ejbremove() container passivate Quando o cliente não usa o bean por um tempo O container armazena o estado cliente chama método) Existe ejbpassivate() ejbactivate() passive Cliente chamando método 16

Componentes Sessão sem Estado Não mantém estado do cliente entre as chamadas de métodos Cliente Create() Instância Não existe newinstance(), setsessioncontext(cntx), ejbcreate() ejbremove() cliente invocando método Existe Cliente EJB Para invocar métodos dos beans deve: Obter uma referência para o servidor JNDI Obter uma referência para o objeto HOME do bean desejado Obter uma referência para o objeto remoto invocando create() do objeto HOME Invocar o método do objeto 17

Interação Cliente-Servidor no J2EE Passos de uma Aplicação EJB Defina a interface remota Defina a interface home Escreva a implementação do bean Crie o descritor de implantação Empacote seu EJB Gere as classes Empacote em um arquivo EJB-jar Instale no seu servidor de aplicações 18

Passos de uma Aplicação EJB [por James Farley] javac Remote, home, bean class files Remote interface(s) Home interface(s) Bean implementation(s) Deployment tool * jar "Basic" EJB-jarfile * Deployment tool XML Deployment Descriptor * Replace with equivalent tools for your EJB container Deployable EJB-jar (with containergenerated support classes) Exemplo de Aplicação J2EE Desenvolvendo a interface remota contém os métodos que um cliente pode invocar import javax.ejb.ejbobject; import java.rmi.remoteexception; import java.math.*; public interface Conversão extends EJBObject { public BigDecimal dollartoeuro(bigdecimal dollars) throws RemoteException } 19

Exemplo de Aplicação J2EE Desenvolvendo a interface home contém os métodos para criar, remover e encontrar (por simplicidade, no exemplo abaixo ilustramos apenas o criar) import javax.io.serializable; import java.rmi.remoteexception; import javax.ejb.createexecption; import javax.ejb. EJBHOME; public interface ConversãoHome extends EJBHome { Conversão create() throws RemoteException, CreateException; } Exemplo de Aplicação J2EE Escrever a implementação do bean import java.rmi.remoteexception; Import javax.ejb.sessionbean; Import javax.ejb.sessioncontext; Import java.math.*; public class ConversãoBean implements SessionBean { BigDecimal eurorate = new BigDecimal( 0.0077 ); } public BigDecimal dollartoeuro(bigdecimal dollars) { BigDecimal result = dollars.multiply(eurorate); return result; public ConverterBean() {} Public void ejbcreate() {} public void ejbremove() {} public void ejbactivate() {} public void ejbpassivate() {} public void setsessioncontext(sessioncontext sc) {} } 20

Exemplo de Aplicação J2EE Criando o Descritor de Implantação É o arquivo xml que contém as instruções de implantação e lista os recursos necessários para o componente ser implantado. <?xml version= 1.0?>... <ejb-jar> <description> Single stateless session bean to convert dollar to euro </description> <display-name> Simple Bean </display-name> <enterprise-beans> <session> <description>... </description> <display-name>... </display-name> <home>conversaohome</home> <remote>conversao </remote> <ejb-class>conversaobean </ejb-class> <session-type> Stateless </session-type> </enterprise-beans> </ejb-jar> Exemplo de Aplicação J2EE Compilar o Conversao.java, ConversaoHome.java e ConversaoBean.java Preparar o arquivo EJB JAR que tem a seguinte estrutura: ConversaoBean/ Conversao.class ConversaoHome.class ConversaoEJB.class META-INF/ ejb-jar.xml A especificação exige que o descritor de implantação esteja nesse diretório 21

Exemplo de Aplicação J2EE Import javax.ejb.*; Import ConversaoBean.*; Import javax.naming.initialcontext;... public Class ConverterClient { public static void main(string[] args) { try { InitialContext ctx = new InitialContext(); Object objref = ctx.lookup("java:comp/env/ejb/conversao"); ConversaoHome home = (ConversaoHome)PortableRemoteObject.narrow(objref, ConversaoHome.class); Conversao currencyconversao = home.create(); BigDecimal valorconvertido= currencyconversao.dollartoeuro( 1520 ); System.out.println(amount); Acesso ao JNDI } } } catch (Exception ex) { } 22