Servidor de Aplicação - INF

Propaganda
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.
Download