Introdução à J2EE Conceitos da arquitetura Ricardo Cavalcanti [email protected] Jobson Ronan [email protected] Visão geral EJB é um padrão baseado em componentes server-side que simplifica o processo de construir aplicações distribuídas em Java. Suporta portabilidade e reusabilidade num middleware de qualquer fabricante. 2 Motivação Vamos construir um grande sistema, com o que precisamos nos preocupar? Balanceamento de carga Transações Tolerância a falhas Gerenciamento de sistemas Message-driven middleware ... 3 Arquitetura baseada em componentes Utilizar os serviços de cada componente, independentemente. Não preciso implementar controle de transações, compro o componente que faz isso. Problema: padrões precisam ser seguidos 4 Sistemas de objetos distribuídos O Stub representa o objeto remoto para o cliente O skeleton representa o cliente para o objeto remoto Cliente Objeto Remoto Interface Remota Stub Skeleton Rede 5 Middleware explícito Transaction Service É necessário implementar cada utilização em cada método Cliente Objeto Remoto Security Service Database Service Stub Skeleton Rede public void transferir(Conta origem, Conta destino, double valor){ //Chama a API para verificar segurança //Chama a API para iniciar a transação //Chama a API para carregar dados do banco //Subtrair o valor da conta origem e somar no destino //Chama a API para guardar dados no banco //Chama a API para fechar a transação } 6 Middleware implícito Objeto Remoto Cliente Apenas a lógica de negócio Os serviços são declarados em um outro arquivo Stub Uma ferramenta vai gerar seu interceptador baseado no seu arquivo descritor Transaction Service Interceptador de requisições Security Service Database Service Skeleton Rede public void transferir(Conta origem, Conta destino, double valor){ //Subtrair o valor da conta origem e somar no destino } 7 Introduzindo os EJBs Padrão baseado em componentes Define os contratos entre componentes e servidores de aplicações Qualquer enterprise bean pode ser importado e carregado em qualquer servidor 8 Conseqüências Padrão entre a indústria Portabilidade Desenvolvimento rápido 9 EJB x JavaBeans Conceitos distintos, ambos parte de uma arquitetura de componentes EJB são componentes compostos de classes, interfaces e documentos XML de configuração, para implantar automaticamente num servidor Javabeans são classes com construtor sem argumentos e métodos getX () e setX(). 10 Java 2 Enterprise Edition Uma especificação para servidores de aplicação e componentes Um conjunto de interfaces, para os servidores e seus componentes poderem conversarem Seu objetivo é reduzir o custo e a complexidade do desenvolvimento de serviços multicamada 11 Servidores de Aplicação Responsáveis pela infra-estrutura Oferecem: Suporte à arquitetura de componentes EJB Suporte a serviços Web, servlets e JSP Suporte a serviços de middleware explícito e implícito Utilizaremos o JBoss-AS 12 Conteiners J2EE Um container é a interface entre o componente e as funções de baixo nível da plataforma onde roda Provê um ambiente para um enterprise bean rodar. Gerenciam os EJBs chamando métodos obrigatórios de gerenciamento É uma entidade abstrata, ninguém invoca explicitamente o container 13 Serviços Configuráveis Segurança Transações Nomes (JNDI lookup) Conectividade remota Não configuráveis Persistência Ciclo de vida de beans 14 Segurança Autenticação e Autorização API JAAS - Java Authentication and Authorization Service Autenticação depende da implementação do servidor Controle de acesso é definido declarativamente 15 Transações Gerenciadas pelo container ou pelo bean Suporte a transações distribuídas Vários servidores e vários bancos de dados 16 Nomes Através da API JNDI Associar um nome a recursos computacionais como endereços de memória, de rede, de serviços objetos e referências 17 Conectividade remota O modelo de conectividade permite ao cliente invocar métodos como se estivesse na mesma máquina virtual do servidor 18 Persistência Mesmo não configurável, permite sobrescrever o gerenciamento pelo container (CMP) para obter mais controle Sincronização de dados, pesquisa e remoção 19 Arquitetura em camadas Browser Aplicações CORBA Aplicativo Java Cliente de Web service Servidor J2EE Páginas HTML e applets Camada WEB Camada de Negócios Camada de Dados 20 Componentes na camada de negócio Podem ser EJbs! Formam o núcleo de uma aplicação distribuída Processam as requisições do cliente Processam os dados provenientes da camada de dados EJBs são objetos CORBA EJbs são sempre escritos em java 21 Tipos de EJB Session Beans Entity Beans Modelam processos de negócio. Podem manter ou não estado não-persistente Debitar, creditar... Modelam dados de negócio. Representam informações em bancos de dados Mantêm estado persistente Uma conta, um cliente Message-driven beans Modelam processos assíncronos. Respondem a eventos. Agem somente quando recebem uma mensagem Não mantêm estado 22 Exemplo clássico Cliente HTML Cliente JMS MOM Cliente WebService Cliente CORBA Message-driven bean Entity bean Cliente Swing Session Bean Entity bean Entity bean BD Servlet JSP Taglib Session Bean Entity bean 23 Papéis Quem faz o que em J2EE Papéis Provedor de componentes (bean provider) Provedor de ferramentas (tool provider) Desenvolvedor que cria os componentes J2EE Oferecem ferramentas para facilitar a montagem e manutenção das aplicações J2EE Ferramentas de modelagem de dados, ferramentas de montagem de componentes, etc. Montador de aplicações (application assembler) Arquiteto de aplicações que monta aplicações usando componentes desenvolvidos pelo provedor de componentes com as ferramentas do provedor de ferramentas Escreve código de integração entre componentes, lógica de relacionamentos, etc. 25 Papéis Provedor dos containers (container/server provider) Implantador de aplicações (deployer) Fabricantes que oferecem containers EJB e Web Garantem o ambiente de execução onde vivem os beans e os serviços de middleware que eles têm acesso JBoss, WebLogic, WebSphere, Tomcat (Web), IPlanet, etc. Instala e coloca para funcionar a aplicação no software fornecido pelo provedor de containers Garante a integração com sistemas e serviços, escolhe o hardware, ajusta a segurança, performance, acesso a serviços e recursos externos Administrador do sistema (system administrator) Garante a estabilidade da solução operacional 26 Por que a divisão em papéis? Poder de especialização Pode combinar alguns papéis Bean Provider Application Assembler Implanta o sistema System Administrator Deployer 27 Tool Provider Container Provider