Java II Sérgio Luiz Ruivace Cerqueira sergioruivace@gmail.com
Java Web
Arquitetura Aplicações web são basicamente constituídas de: Requisições Respostas
Model View Controller (MVC) O que é MVC? Padrão arquitetural em três camadas para desenvolvimento de sistemas, surgido nos anos 80. Sugere a divisão de uma aplicação visual em 3 partes Model: Modelo da sua aplicação, com as regras de negócio (business logic) e todo o processamento da aplicação View: Apresenta a informação e recolhe os dados fornecidos pelo usuário Controller: Recebe as informações da entrada e as transmite para o modelo View Controller Model
Arquitetura MVC Em Java: O modelo será uma aplicação orientada a objetos. O controlador será alguma tecnologia de implementação (padrão comando) que juntamente com o Servlet redirecionará as chamadas feitas pelo cliente aos objetos no modelo. A apresentação será representada pelo JSP.
Plataformas Java Existem quatro plataformas para a programação em Java, cada uma com sua JVM e API: Java Platform, Standard Edition (Java SE) Provê a API base para o desenvolvimento em Java, essa plataforma define desde os tipos básicos e objetos até classes de alto nível usadas para segurança, rede, GUI, acesso a bases de dados... Java Platform, Enterprise Edition (Java EE) É construída a partir da Java SE. Provê uma API e um ambiente de desenvolvimento para larga escala, escalável, fidedigno, com múltiplas camadas. Java Platform, Micro Edition (Java ME) Provê uma API e um ambiente de desenvolvimento para dispositivos móveis. Java FX Provê um ambiente para desenvolvimento de aplicações escritas em Java FX Script.
JEE Java Enterprise Edition Voltado ao desenvolvimento de aplicações empresariais Foco no desenvolvimento de componentes para reduzir custos Projetado para ajudar a desenvolvedores produzirem sistemas que necessitem de: Múltiplas camadas Larga escala Escalável Fidedigno, confiável Segurança Aplicações para JEE são independentes de plataforma A própria linguagem Java é independente Assim como a máquina virtual, o ambiente JEE é totalmente especificado Qualquer um pode fazer um JEE
Composição da Plataforma JEE Modelo de desenvolvimento de aplicações Web Modelo de aplicações distribuídas em camadas A lógica da aplicação é dividida em componentes de acordo com sua função Cada camada executa em diferentes máquinas Modelo de desenvolvimento orientado a componentes reutilizáveis Modelo de segurança unificado Flexível controle de transações Troca de dados integrada baseada em XML
Componentes Um componente: É um pacote coerente de software independentemente desenvolvido É entregue como uma unidade Oferece interfaces que podem ser conectadas, inalteradas, com outros componentes para compor um sistema maior Componente JEE Um componente JEE é uma unidade funcional auto-contida, que pode ser montada em uma aplicação JEE com suas classes e arquivos relacionados, e que se comunica com outros componentes
JEE arquitetura em 3 camadas Uma camada para lidar com a interface Executa no computador cliente e no servidor JEE Em desenvolvimento Web, é implementado por JSP. Uma para lidar com a lógica da aplicação Executa no servidor JEE Em desenvolvimento Web, é implementado por servlets e classes do sistema. Uma para gerenciar acesso a banco de dados Executa no EIS (Enterprise Information System)
JEE arquitetura em 3 camadas
JEE camada de interface Aplicações JEE podem ou não podem ser baseadas em Web As primeiras executam diretamente na máquina cliente As demais usam web browser para obter páginas e applets
JEE camada de interface Clientes de aplicação São uma forma de gerenciar as aplicações ou o sistema Tipicamente aplicações gráficas java.awt javax.swing Aplicações JEE requerem uso de clientes leves (thin clients) Interfaces bem simples Delegam todas as tarefas mais complexas para o servidor JEE Acesso a bancos de dados Conexão com sistemas legados...
JEE camada de lógica Componentes Web Apóiam a geração dinâmica de conteúdo Componentes da lógica de negócio Contêm o código para solucionar as necessidades de um domínio específico
Visão geral das tecnologias JEE 5 para a Web Tecnologias para desenvolvimento de aplicações Web Java Servlet 2.5 JavaServer Pages 2.1 JavaServer Pages Standard Tag Library JavaServer Faces 1.2
JEE camada lógica (Web) Servlets JSP Classes que processam pedidos e geram respostas dinamicamente Documentos baseados em texto que executam como servlets São especializadas na geração de conteúdo dinâmico para clientes Web (browsers).
JEE contêineres e serviços Componentes são instalados em seus contêineres durante a implantação Contêineres são a interface entre o componente e o serviço específico da plataforma que ele provê
Desenvolvimento para a Web com JEE
Aplicação Web Uma aplicação Web é uma extensão dinâmica de um servidor Web ou servidor de aplicação Existem dois tipos de aplicações Web Orientada a apresentação Uma aplicação web orientada a apresentação gera páginas web interativas contendo diversos tipos de linguagens de marcação (HTML, XML,...) e conteúdo dinâmico em resposta a requisições Orientada a serviços Uma aplicação Web orientada a serviços implementa um endpoint de um Web service Aplicações orientadas a apresentação geralmente são clientes de aplicações Web orientada a serviços
Componentes Web Provêem as extensões dinâmicas de um servidor Web São Java Servlets, páginas JSP ou Web services A interação entre um cliente Web e uma aplicação Web
Servlets e JSPs Servlets são classes implementadas em Java que dinamicamente processam requisições e constroem respostas Páginas JSP são documentos baseados em texto que executam como servlets mas permitem uma forma mais natural de criar conteúdo estático Servlets e JSP são parecidos e são equivalentes
Servlets e JSPs O uso de servlets é recomendado para Controlar as funções de uma aplicação orientada a apresentação, como redirecionar requisições e tratar dados não textuais (binários) Aplicações orientadas a serviços Páginas JSP são mais apropriadas para gerar marcações baseadas em texto HTML, SVG, WML, e XML
Contêiner Web Provê um ambiente de execução de aplicações Web e seus componentes, que são implementados por Servlets e JSPs Realiza o processamento de requisições e respostas HTTP, como um servidor Web Permite configurar: serviços de segurança, concorrência e gerenciamento do ciclo de vida acesso para APIs como resolução de nomes, transações e envio de e-mails
Contêiner Web Alguns aspectos do comportamento de aplicações web podem ser configurados quando as aplicações são implantadas em um contêiner Web As informações de configuração são mantidas em um arquivo texto em formato XML chamado Web application deployment descriptor (DD) A maioria das aplicações Web utilizam o protocolo HTTP, e o suporte a HTTP é um dos maiores aspectos de componentes web
Módulo Web É a menor unidade de implantação (deployment) de recursos web Corresponde a uma aplicação Web Pode conter Componentes Web e recursos Web Classes auxiliares da parte do servidor Ex. beans de banco de dados, carros de compras Classes da parte cliente Ex. applets
Módulo Web Tem uma estrutura específica. O diretório-raiz armazena páginas JSP classes client-side e arquivos e recursos web estáticos (imagens)
Módulo Web Subdiretório <raiz>/web-inf/ contém web.xml: deployment descriptor da aplicação web lib: Arquivos JAR de bibliotecas chamadas por classes da parte do servidor classes: Classes server-side Servlets, classes utilitárias e JavaBeans tags: Arquivos de implementações de tag libraries
Servidores
Servidor de aplicação x Contêiner Web Contêiner Web Serve Servlets e JSP Provê, somente, formas de configurar/instalar serviços já disponíveis em servidores de aplicação Exemplo de contêiner: Tomcat. Servidor de aplicação: Contém contêineres Web Contém contêineres de objetos de negócio (também chamados EJB containers), podendo servir EJBs Provê serviços de gerenciamento de transações, segurança, pool de conexões com banco de dados, balanceamento de carga, etc. Exemplos de servidores de aplicação: JBoss e GlassFish.
N-Camadas Fonte:http://www.dsc.ufcg.edu.br/~jacques/cursos/j2ee/html/intro/intro.htm
Jakarta TomCat
Tomcat Servidor gratuito baseado em java Configurável de maneira simples via XML Oferece suporte a Java (Servlets e JSP) Tomcat Pode ser gratuitamente obtido em http://www.apache.org Utilizem a versão 5.x VM jdk 1.6.x
Instalando o tomcat Baixe o arquivo zip Descompacte no diretório desejado Configure a variável de ambiente CATALINA_HOME que deve apontar para o diretório onde foi descompactado o tomcat. Adicione na variável path o texto ;%CATALINA_HOME%\bin
Configurando o Tomcat Onde colocar as classes dos Servlets? Primeiro, é preciso criar uma aplicação web Cria-se um diretório em %TOMCAT_HOME%\webapps\, sem espaços no nome. Dentro do diretório do projeto, cria-se a pasta WEB-INF Dentro de WEB-INF, criam-se 2 pastas: lib e classes Dentro de WEB-INF, cria-se o arquivo web.xml (deployment descriptor web)
Configurando o Tomcat As classes são colocadas no diretório: %TOMCAT_HOME%\webapps\DIRETÓRIO_APLICAÇÃO\WEB- INF\classes A partir deste diretório devem ser colocadas em seus próprios pacotes As libs (arquivos.jar) devem ser colocadas no diretório: %TOMCAT_HOME%\webapps\DIRETÓRIO_APLICAÇÃO\WEB- INF\lib
Configurando o Tomcat Registrando os Servlets Os servlets devem ser chamados com seu nome completo (pacotes e classe) Muitas vezes o nome se torna grande demais Pode-se então dar um nome ao servlet através do qual o servidor redirecionará a chamada à classe específica
Configurando o Tomcat Registrando Servlets O arquivo web.xml localizado no diretório: %TOMCAT_HOME%\webapps\DIRETÓRIO_APLICAÇÃO\WEB- INF
JBoss
O que é o JBoss? É um servidor de aplicação. Pode ser usado para Aplicações Web de missão crítica. Aplicações Web simples feitas com Servlets e JSP. Aplicações Web que usam frameworks como Struts, Java Server Faces, Spring, etc. Aplicações mais complexas, envolvendo SEAM, Enterprise Java Beans (EJB), Java Messaging (JMS), caching etc. Middlewares usando JMS, Corba, JMX etc.
O que é o JBoss? Arquitetura
O que é o JBoss? Arquitetura Consiste, basicamente, do microcontainer e beans de inicialização, conjunto de perfis de deployment e configurações de MBeans. Microcontainer Provê estrutura para implantar e integrar serviços corporativos entre si e com contêineres web, contêineres EJB, deployers e utilitários de gerenciamento. Implementa um modelo de objetos através de POJOs. Estes são integrados via injeção de dependência para prover serviços
Configuração do JBoss Pré-requisitos para instalação JDK 1.5 ou 1.6 Instalação no Linux Baixe o JBoss (para este curso, será o JBoss 5.1) e o descompacte em um diretório de sua preferência Após o baixar e descompactar o JBoss, configure as seguintes variáveis export JAVA_HOME=/caminho/para/jsdk-xxxx export JBOSS_HOME=/caminho/para/jboss-xxxx JAVA_HOME /bin e JBOSS_HOME/bin devem estar declarados no path do sistema para executar seus scripts e programas fora dos seus diretórios
Configuração do JBoss Inicialização no Linux Execute o script run.sh para inicializar o JBoss Execute shutdown.sh pará-lo Ao final da inicialização, o prompt de comandos deve apresentar a mensagem Started at... Parâmetros de inicialização É possível inicializar o JBoss com diferentes configurações de perfis Cada configuração permite definir perfis de servidores que podem oferecer diferentes serviços e ambientes para deployment de aplicações
LOG
Configuração do JBoss Em geral, é usado este perfil
Configuração do JBoss Parâmetros de inicialização Linha de comando para escolher perfil (tipo) de deployment run.sh -c <perfil>, onde os principais valores <perfil> são: default: suporta a maior parte das APIs de J2EE (JSF e EJB, por exemplo) all: suporte a todos os recursos corporativos, como RMI, clustering e outros serviços para aplicações corporativas web: específico para suportar aplicações web, com um contêiner web. Prevê Web profile do J2EE 6. minimal: sem suporte ao J2EE (sem contêineres Web e EJB), inicializa serviços de logging, JNDI e o scanner de novos deploys somente.» Oferece possibilidade. Mais leve e útil para implementar servidores customizados com os serviços desejados. standard: configuração básica de J2EE 5. shutdown.sh: pára o JBoss
Configuração do JBoss Essas configurações se encontram abaixo de <diretório-dojboss>/server Locais com as configurações dos serviços suportados no perfil <JBoss_Home>/server/<perfil>/deployers <JBoss_Home>/server/<perfil>/deploy Parâmetros de inicialização Linha de comando para inicializar o servidor em um IP ou host no qual responderá às requisições run.sh -b <nome do host ou IP>
Configuração do JBoss Tipos de aplicações, serviços e configurações que podem ser implantados Web Application Runtime (WAR): empacotamento de aplicações Web Enterprise Application Runtime (EAR): empacotamento de aplicações corporativas que incluem aplicações Web, EJB e definições de configurações como application.xml e jbossapp.xml Service Application Runtime (SAR): serviços internos Arquivos *-ds.xml : configurações de bancos de dados
Configuração do JBoss Tipos de aplicações, serviços e configurações que podem ser implantados XML para definição de serviços MBean, os quais podem estar em arquivos JAR em JBOSS_HOME/server/<perfil>/deploy ou JBOSS_HOME/server/<perfil>/lib JAR com EJBs e outros objetos de serviço Após sua inicialização, o JBoss monitora JBOSS_HOME/server/<perfil>/deploy procurando por empacotamentos colocados pelo usuários. Caso haja um novo, ele será expandido e implantado automaticamente.
Configuração do JBoss Estrutura de diretórios Para cada configuração em <JBoss_Home>/server/<perfil>, existe a seguinte estrutura de diretórios Diretório conf data deploy Descrição Contém o bootstrap.xml, que define os componentes (beans) do núcleo do servidor, os quais estarão ativos enquanto o servidor estiver executando. Serve para persistir conteúdo no sistema de arquivos, como bancos de dados de teste. Contém as aplicações e serviços (em JARs,WARs e EARs). Estes podem ser implatandos ou reimplantados mesmo em tempo de execução quando copiados neste diretório (hot deployment).
Configuração do JBoss Estrutura de diretórios Diretório lib log tmp work Descrição Contém bibliotecas (JARs) das aplicações dentro do perfil de deployment atual. Para compartilhar bibliotecas entre todos os perfiis de deployment, os JARs devem ser colocados em <JBoss_Home>/common/lib. Contém os logs do servidor e das aplicações, os quais podem ser configurados em conf/jboss-log4j.xml. Usado para armazenamento temporário pelos serviços do Jboss como, por exemplo, o deployer, que descompacta temporariamente as aplicações e serviços neste diretório. Diretório usado pelo Tomcat para compilação de JSPs.
Eclipse
Criação de aplicação Web no Eclipse Crie um novo projeto do tipo Dynamic Web Project.
Criação de aplicação Web no Eclipse Configure um contêiner Web ou servidor de aplicação em que será executada a aplicação. Para este curso, utilizaremos o Tomcat 5.5
Criação de aplicação Web no Eclipse Coloque o nome do projeto da aplicação Web. Escolha uma configuração de contêiner ou servidor de aplicações Web.
Criação de aplicação Web no Eclipse Clique em Browse para procurar o diretório onde está instalado o container ou servidor de aplicações web
Criação de aplicação Web no Eclipse Indique o diretório do servidor de aplicações. Escolha um contêiner ou servidor de aplicações Web.
Criação de aplicação Web no Eclipse Estrutura básica de um projeto Web O Eclipse monta a aplicação no TomCat com esta estrutura de pastas e copia esta classe dentro de WEB-INF/classes dentro de seu pacote Diretório para conteúdo Web: páginas, css, bibliotecas usadas Deployment descriptor Diretório de bibliotecas
Criação de aplicação Web no Eclipse Estrutura de um Dynamic Web Project Bibliotecas em WEB-INF/lib
Criação de aplicação Web Páginas devem ser colocadas na raiz do pacote WAR No projeto gerado no Eclipse, WebContent corresponde à raiz Exemplo: página index.jsp
Criação de aplicação Web: web.xml Possíveis URLs das páginas iniciais. Identificador da servlet. Servlet que processará requisições e gerará respostas HTTP. URL que receberá as requisições para a servlet cujo nome é <servlet-name>.
Criação de aplicação Web: Servlet Responde a requisições HTTP GET para esta servlet Responde a requisições HTTP POST para esta servlet
Criação de aplicação Web no Eclipse: inicialização do TomCat Fazer debug da aplicação no servidor Iniciar o servidor Parar o servidor
Criação de aplicação Web: acesso Resposta da Servlet Resposta da página index.jsp