UFG - Instituto de Informática Especialização em Desenvolvimento de Aplicações Web com Interfaces Ricas EJB 3.0 Prof.: Fabrízzio A A M N Soares [email protected] Aula 5 – Servidores de Aplicação Servidor de Aplicação Um servidor de aplicação (Application Server) é um servidor/serviço que disponibiliza um ambiente para a instalação e execução de certas aplicações. Os servidores de aplicação também são conhecidos como software de middleware. O objetivo do servidor de aplicações é disponibilizar uma plataforma que abstraia do desenvolvedor de software algumas das complexidades de um sistema computacional. Servidor de Aplicação Application servers, ou servidores de aplicação, são softwares que fornecem a infraestrutura de serviços para a execução de aplicações distribuídas. Os servidores de aplicação são executados em servidores e são acessados pelos clientes através de uma conexão de rede. Servidor de Aplicação As vantagens dos servidores de aplicação em relação ao modelo cliente/servidor residem nos serviços implementados por eles e disponíveis aos desenvolveres, fazendo com que eles possam concentrar a maior parte do tempo no desenvolvimento da lógica de negócio. Características No desenvolvimento de aplicações comerciais o foco dos desenvolvedores deve ser a resolução de problemas relacionados ao negócio da empresa, e não de questões de infraestrutura da aplicação. Além das característica já citadas, outros serviços também estão disponíveis nos servidores de aplicação: Tolerância a Falhas; Balanceamento de Carga; Gerenciamento de Componentes; Gerenciamento de Transações; Console de Gerenciamento; Tolerância a Falhas Tolerância a falhas é a propriedade que permite que sistemas continuem a operar adequadamente mesmo após falhas em alguns de seus componentes. Se sua qualidade de operação diminui, a queda é proporcional à severidade da falha. Em hardware (HW), as falhas são geralmente causadas por desgaste físico. No entanto, um software (SW) não desgasta com o tempo, ele não tem propriedades físicas, sendo totalmente conceitual. Nele, as falhas são de desenvolvimento e bugs causados por erros humanos. Balanceamento de Carga O Balanceamento de Carga - Load Balance promove o aumento de performance através da distribuição da carga de forma balanceada. Distribui o tráfego das chamadas fazendo com que as diferentes máquinas que compõe o cluster funcionem como uma única. Mantém o tempo de resposta das requisições e oferece escalabilidade de serviços e recursos, ou seja, à medida em que houver aumento de demanda (novas aplicações, maior número de usuários conectados), mais máquinas podem ser incorporadas ao modelo, multiplicando assim o seu poder de resposta. Gerenciamento dos Componentes Serve para gerenciar elementos do servidor através de ferramentas para a manipulação de componentes e serviços, tais como gerenciamento de sessão, notificação, distribuição da lógica de negócios Gerenciamento de Transações Garante a integridade das transações entre os aplicativos e os diversos bancos de dados envolvidos. Console de Gerenciamento Permite o gerenciamento de vários servidores de aplicação através de um único sistema gráfico. Origem I No final da década de 1990, pensou-se que seria interessante mover as aplicações para um modelo mais centralizado, e que o desktop PC seria substituído por computador de rede (network computer). Isto seria o retorno ao velho modelo de computação utilizado na década de 1960, baseado em computadores centrais grandes e caros, que eram acessados por muitos usuários utilizando terminais burros. Origem II A diferença então, seria o uso disseminado de interfaces gráficas (GUI). Porém, esta mudança não ocorreu na escala prevista, e o trabalho de disponibilizar aplicações de interfaces gráficas em redes lentas apresentou um grande número de desafios técnicos que não foram inteiramente resolvidos. Origem III Posteriormente, as soluções baseadas na Internet, onde um navegador busca as páginas geradas dinamicamente em um servidor, deram força no movimento de centralização de aplicações. Neste contexto surgiram os servidores de aplicação para Web. Implementações Existem várias implementações de servidores de aplicação, em sua maioria implementados na plataforma Java: IBM WebSphere Application Server Oracle Oracle9i Application Server, BEA WebLogic, Red Hat Jboss Sun GlassFish Apache Gerônimo Implementações para outras plataformas: Apple WebObjects para MacOS Zope Application Server para Python. .NET Na plataforma Microsoft .NET, o servidor de aplicação não é visto como um elemento separado. O sistema operacional Windows 2003 contém a infraestrutura necessária para servir aplicações, como o IIS, COM+ e Framework .NET. Zope Muitas tarefas de administração de um servidor Zope podem ser realizadas através de uma interface web. Os objetos que o Zope publica na Web são escritos em linguagem Python, e tipicamente armazenados num banco de dados orientado a objetos, o ZODB, que é integrado ao sistema. Servidores JavaEE Devido a popularização da plataforma Java, o termo servidor de aplicação é frequentemente uma referência a “Servidor de aplicação JavaEE”. O servidor WebSphere Application Server da IBM e o WebLogic Server da BEA Systems são dois dos mais conhecidos servidores J2EE comerciais. Alguns servidores de software livre também são muito utilizados, como Glassfish, JBoss, JOnAS e Apache Geronimo. Servidores JavaEE Como mencionado, a linguagem programação destes softwares é Java. de Os módulos Web são implementados através de servlets e JSP e a lógica de negócio através de EJBs. A plataforma JavaEE disponibiliza padrões para os containers Web e EJB. O Tomcat é um exemplo de container de software livre, onde os módulos Web podem ser publicados. JavaEE ou J2EE Java EE (ou J2EE, ou Java 2 Enterprise Edition, ou em português Java Edição Empresarial) é uma plataforma de programação para servidores na linguagem de programação Java. Nomenclatura do JavaEE A plataforma inicialmente era conhecida por Java 2 Platform, Enterprise Edition ou J2EE, até ter seu nome trocada para Java EE na versão 5.0, posteriormente foi chamada de Java EE 5, até a atualidade, J2EE, que esta na versão 1.4. Descrição A Plataforma Java (Enterprise Edition) difere-se da Plataforma Java Standard Edition (Java SE) pela adição de bibliotecas que fornecem funcionalidade para implementar: Software Java distribuído Tolerante a falhas Multi-camada, baseada amplamente componentes modulares executando em servidor de aplicações. em um Descrição A plataforma Java EE é considerada um padrão de desenvolvimento já que o fornecedor de software nesta plataforma deve seguir determinadas regras se quiser declarar os seus produtos como compatíveis com Java EE. Ela contém bibliotecas desenvolvidas para o acesso a base de dados, RPC, CORBA, etc. A plataforma J2EE contém uma série de especificações e containers, cada uma com funcionalidades distintas Containers JDBC (Java Database Connectivity) Servlets Utilizado no acesso a bancos de dados; Utilizados para o desenvolvimento de aplicações Web com conteúdo d inâmico. Ele contém uma API que abstrai e disponibiliza os recursos do servidor Web de maneira simplificada para o programador. JSP (Java Server Pages) Especialização do servlet que permite que conteúdo dinâmico seja facilmente desenvolvido. Containers JTA (Java Transaction API) É uma API que padroniza o tratamento de transações dentro de uma aplicação Java. EJBs (Enterprise Java Beans) Utilizados no desenvolvimento de componentes de software. Eles permitem que o programador se concentre nas necessidades do negócio do cliente, enquanto questões de infra-estrutura, segurança, disponibilidade e escalabilidade são responsabilidade do servidor de aplicações. Containers JCA (Java Connector Architecture) JPA (Java Persistence API) É uma API que padroniza a ligação a aplicações legadas. É uma API que padroniza o acesso a banco de dados através de mapeamento Objeto/Relacional dos Enterprise Java Beans. JMS (Java Message Service) É uma API da linguagem Java para middleware orientado à mensagens. Através da API JMS duas ou mais aplicações podem se comunicar por mensagens.