java - cic/unbjhcf/mybooks/itjava/slides/servlets...servlet context visão do servlet engine passada...

47
Java TM Servlets Java e Engenharia de Software Orientada a Objetos por Jorge H. C. Fernandes ([email protected]) Julho de 1999

Upload: others

Post on 27-Jul-2020

21 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Java - CIC/UnBjhcf/MyBooks/itjava/slides/Servlets...Servlet Context Visão do Servlet Engine Passada ao Servlet durante sua inicialização Acesso ao logger de eventos Obtenção de

JavaTM ServletsJava e Engenharia de Software Orientada a Objetos

por Jorge H. C. Fernandes([email protected])Julho de 1999

Page 2: Java - CIC/UnBjhcf/MyBooks/itjava/slides/Servlets...Servlet Context Visão do Servlet Engine Passada ao Servlet durante sua inicialização Acesso ao logger de eventos Obtenção de

Java e Engenharia de Software Orientada a Objetos. Copyright © 1999, Jorge H. C. Fernandes ([email protected])

Objetivos desta Aula

�Descrever o modelo computacional de Servlets�Comparar Servlets com CGI �Criar e executar pequenos servlets�Compreender a arquitetura de aplicações de

médio e grande porte usando servlets

Page 3: Java - CIC/UnBjhcf/MyBooks/itjava/slides/Servlets...Servlet Context Visão do Servlet Engine Passada ao Servlet durante sua inicialização Acesso ao logger de eventos Obtenção de

Java e Engenharia de Software Orientada a Objetos. Copyright © 1999, Jorge H. C. Fernandes ([email protected])

Referências

�Sun Microsystems�Servlet Tutorial �http://java.sun.com/products/servlet/index.html�JSDK 2.1�JSDK 2.0

�RFCs (Requests for Comments)�RFC 2616 (2068) Hypertext Transfer Protocol

(HTTP/1.1) �Repositório

⌧http://info.internet.isi.edu/7c/in-notes/rfc/.cache

Page 4: Java - CIC/UnBjhcf/MyBooks/itjava/slides/Servlets...Servlet Context Visão do Servlet Engine Passada ao Servlet durante sua inicialização Acesso ao logger de eventos Obtenção de

Java e Engenharia de Software Orientada a Objetos. Copyright © 1999, Jorge H. C. Fernandes ([email protected])

Conteúdo

�O que é e para quê [serve]2 lets?�CGI versus Servlets�O ciclo de vida de servlets�Características avançadas�Programação de servlets�Execução de servlets

Page 5: Java - CIC/UnBjhcf/MyBooks/itjava/slides/Servlets...Servlet Context Visão do Servlet Engine Passada ao Servlet durante sua inicialização Acesso ao logger de eventos Obtenção de

Java e Engenharia de Software Orientada a Objetos. Copyright © 1999, Jorge H. C. Fernandes ([email protected])

O que é um Servlet?

�Módulo de software - Orientados a Objetos - que estende servidores Web

�Vantagens na substituição de CGI scripts�Orientados a objetos�Processos persistem após atendimento do

pedido�Tratamento de sessões�API Java

⌧Independente de plataforma

Page 6: Java - CIC/UnBjhcf/MyBooks/itjava/slides/Servlets...Servlet Context Visão do Servlet Engine Passada ao Servlet durante sua inicialização Acesso ao logger de eventos Obtenção de

Java e Engenharia de Software Orientada a Objetos. Copyright © 1999, Jorge H. C. Fernandes ([email protected])

Para que [Serve]2 lets?

�Substituição de CGI Scripts�Independente de plataforma

�Repassando pedidos�Arquiteturas multi-camadas

�Colaboração entre pessoas�Uso compartilhado de um mesmo módulo

por vários clientes

Page 7: Java - CIC/UnBjhcf/MyBooks/itjava/slides/Servlets...Servlet Context Visão do Servlet Engine Passada ao Servlet durante sua inicialização Acesso ao logger de eventos Obtenção de

CGI versus Servlets

Page 8: Java - CIC/UnBjhcf/MyBooks/itjava/slides/Servlets...Servlet Context Visão do Servlet Engine Passada ao Servlet durante sua inicialização Acesso ao logger de eventos Obtenção de

Java e Engenharia de Software Orientada a Objetos. Copyright © 1999, Jorge H. C. Fernandes ([email protected])

NomeAnoMod

FormulárioNomeAnoMod

Sepia1997999.999

FormulárioCGIscript

Web ServerWWW(HTTP)

Web Browser

CGI e Formulários HTML

CGIscript

Page 9: Java - CIC/UnBjhcf/MyBooks/itjava/slides/Servlets...Servlet Context Visão do Servlet Engine Passada ao Servlet durante sua inicialização Acesso ao logger de eventos Obtenção de

Java e Engenharia de Software Orientada a Objetos. Copyright © 1999, Jorge H. C. Fernandes ([email protected])

Um CGI Script em PERL#!/usr/local/bin/perl## hello world escrito por jhcf#print "Content-Type: text/html\n";print "\n";print "<HTML>\n";print "<HEAD><TITLE>Hello World</TITLE></HEAD>\n";print "<BODY>\n";print "<H1>Hello World</H1>\n";print "</BODY>\n";print "</HTML>\n";exit;

Page 10: Java - CIC/UnBjhcf/MyBooks/itjava/slides/Servlets...Servlet Context Visão do Servlet Engine Passada ao Servlet durante sua inicialização Acesso ao logger de eventos Obtenção de

Java e Engenharia de Software Orientada a Objetos. Copyright © 1999, Jorge H. C. Fernandes ([email protected])

NomeAnoMod

FormulárioNomeAnoMod

Sepia1997999.999

Formulário

Web Server

WWW(HTTP)

Web Browser

Servlets e Formulários HTML

Servlet Engine

Page 11: Java - CIC/UnBjhcf/MyBooks/itjava/slides/Servlets...Servlet Context Visão do Servlet Engine Passada ao Servlet durante sua inicialização Acesso ao logger de eventos Obtenção de

Um Servlet Simples

Page 12: Java - CIC/UnBjhcf/MyBooks/itjava/slides/Servlets...Servlet Context Visão do Servlet Engine Passada ao Servlet durante sua inicialização Acesso ao logger de eventos Obtenção de

Java e Engenharia de Software Orientada a Objetos. Copyright © 1999, Jorge H. C. Fernandes ([email protected])

public class SimpleServlet extends HttpServlet { public void doGet (HttpServletRequest request,

HttpServletResponse response)throws ServletException, IOException {

PrintWriter out;String title = ”Hello World Servlet";

// set content type and other response header fields firstresponse.setContentType("text/html");

// then write the data of the responseout = response.getWriter();

out.println("<HTML>");out.println("<HEAD><TITLE>”+title+"</TITLE></HEAD>”);out.println("<BODY>");out.println("<H1>" + title + "</H1>");out.println("</BODY>");out.println("<HTML>");out.close();

}}

Page 13: Java - CIC/UnBjhcf/MyBooks/itjava/slides/Servlets...Servlet Context Visão do Servlet Engine Passada ao Servlet durante sua inicialização Acesso ao logger de eventos Obtenção de

O Ciclo de Vida de Servlets

Page 14: Java - CIC/UnBjhcf/MyBooks/itjava/slides/Servlets...Servlet Context Visão do Servlet Engine Passada ao Servlet durante sua inicialização Acesso ao logger de eventos Obtenção de

Java e Engenharia de Software Orientada a Objetos. Copyright © 1999, Jorge H. C. Fernandes ([email protected])

Ciclo de Vida de Servlets

MeuServlet

1 - Instanciação

newnewnew

2 - Carga3 - Inicialização4 - Serviço5 - Remoção

Servlet Engine

destroy()

init(ServletConfig config)

service(Request, Response)

MeuServlet1MeuServlet2MeuServlet3

Page 15: Java - CIC/UnBjhcf/MyBooks/itjava/slides/Servlets...Servlet Context Visão do Servlet Engine Passada ao Servlet durante sua inicialização Acesso ao logger de eventos Obtenção de

Java e Engenharia de Software Orientada a Objetos. Copyright © 1999, Jorge H. C. Fernandes ([email protected])

Instanciação e Carga

�Feita durante o startup do servidor, ou sob demanda, quando o servidor necessita do servlet

Page 16: Java - CIC/UnBjhcf/MyBooks/itjava/slides/Servlets...Servlet Context Visão do Servlet Engine Passada ao Servlet durante sua inicialização Acesso ao logger de eventos Obtenção de

Java e Engenharia de Software Orientada a Objetos. Copyright © 1999, Jorge H. C. Fernandes ([email protected])

Inicializaçãopublic void init(ServletConfig config) {..}

�Durante a inicialização o servlet deve:�Ler dados persistentes�Estabeceler conexões JDBC ou com outros recursos

�ServletConfig�Implementado pelo servlet engine (servlet runner)�contém

⌧Conjunto de pares (nome, valor) que fazem parte da configuração do servidor

⌧ServletContext

Page 17: Java - CIC/UnBjhcf/MyBooks/itjava/slides/Servlets...Servlet Context Visão do Servlet Engine Passada ao Servlet durante sua inicialização Acesso ao logger de eventos Obtenção de

Java e Engenharia de Software Orientada a Objetos. Copyright © 1999, Jorge H. C. Fernandes ([email protected])

Tratamento de Pedidospublic void service(ServletRequest, ServletResponse) {..}

�ServletRequest - parâmetros enviados pelo cliente�Método do protocolo (GET, POST, HEAD, etc)�Cabecalho do pedido�Corpo do Pedido

⌧Dados de formulário

�ServletResponse�Cabecalho da resposta

⌧status code, etc

�Corpo da resposta⌧HTML, etc

Page 18: Java - CIC/UnBjhcf/MyBooks/itjava/slides/Servlets...Servlet Context Visão do Servlet Engine Passada ao Servlet durante sua inicialização Acesso ao logger de eventos Obtenção de

Desenvolvimento de Servlets

Page 19: Java - CIC/UnBjhcf/MyBooks/itjava/slides/Servlets...Servlet Context Visão do Servlet Engine Passada ao Servlet durante sua inicialização Acesso ao logger de eventos Obtenção de

Java e Engenharia de Software Orientada a Objetos. Copyright © 1999, Jorge H. C. Fernandes ([email protected])

Multithreading e Mapping

�Por default, todos os servlets são multithreaded�SingleModelInterface - single threads servlets

Page 20: Java - CIC/UnBjhcf/MyBooks/itjava/slides/Servlets...Servlet Context Visão do Servlet Engine Passada ao Servlet durante sua inicialização Acesso ao logger de eventos Obtenção de

Java e Engenharia de Software Orientada a Objetos. Copyright © 1999, Jorge H. C. Fernandes ([email protected])

Servlets Mapping

� Um URL em um servlet/index.html -> HelloServlet

� Um servlet para atender todos URLs de um subdiretório/download/ -> DownloadServlet

� Um servlet para todos URLs com uma terminação*.thtml -> TextGeneratorServlet

� Um URL que é o nome do servlet/servlet/LocalTimeServlet

� Um URL com o nome da classe do servlet a ser carregado/servlet/br.com.cesar.TesteServlet

Page 21: Java - CIC/UnBjhcf/MyBooks/itjava/slides/Servlets...Servlet Context Visão do Servlet Engine Passada ao Servlet durante sua inicialização Acesso ao logger de eventos Obtenção de

Java e Engenharia de Software Orientada a Objetos. Copyright © 1999, Jorge H. C. Fernandes ([email protected])

Servlet Context

�Visão do Servlet Engine�Passada ao Servlet durante sua inicialização

�Acesso ao logger de eventos�Obtenção de outros recursos e objetos

�Outros servlets no mesmo host

�Cada servlet recebe um contexto , mas um mesmo servidor pode passar contextos diferentes para servlets diferentes (ex: hosts virtuais)

Page 22: Java - CIC/UnBjhcf/MyBooks/itjava/slides/Servlets...Servlet Context Visão do Servlet Engine Passada ao Servlet durante sua inicialização Acesso ao logger de eventos Obtenção de

Java e Engenharia de Software Orientada a Objetos. Copyright © 1999, Jorge H. C. Fernandes ([email protected])

Sessões HTTP

�HTTP 1.0/1.1 é um protocolo stateless�Servlets oferecem uma API simples que

permite fazer o trace de sessões

�HttpSession�Clientes podem criar novas sessões ou se

religar-se a uma sessão já existente�Ligação entre objetos e sessões

⌧Objetos ligados a sessões podem ser notificados através da interface HttpSessionBindingListener

Page 23: Java - CIC/UnBjhcf/MyBooks/itjava/slides/Servlets...Servlet Context Visão do Servlet Engine Passada ao Servlet durante sua inicialização Acesso ao logger de eventos Obtenção de

Usando o JSDK 2.1

Page 24: Java - CIC/UnBjhcf/MyBooks/itjava/slides/Servlets...Servlet Context Visão do Servlet Engine Passada ao Servlet durante sua inicialização Acesso ao logger de eventos Obtenção de

Java e Engenharia de Software Orientada a Objetos. Copyright © 1999, Jorge H. C. Fernandes ([email protected])

Exemplos Contidos no JSDK2.1

�HelloWorld�RequestInfo�RequestHeaders�RequestParameters�Cookies�Sessions

Page 25: Java - CIC/UnBjhcf/MyBooks/itjava/slides/Servlets...Servlet Context Visão do Servlet Engine Passada ao Servlet durante sua inicialização Acesso ao logger de eventos Obtenção de

Java e Engenharia de Software Orientada a Objetos. Copyright © 1999, Jorge H. C. Fernandes ([email protected])

Exercício

�Instale o JSDK 2.1 e execute os exemplos�Veja o código dos servlets�Crie e instale o seu servlet HelloWorld

Page 26: Java - CIC/UnBjhcf/MyBooks/itjava/slides/Servlets...Servlet Context Visão do Servlet Engine Passada ao Servlet durante sua inicialização Acesso ao logger de eventos Obtenção de

API Servlets 2.1

Page 27: Java - CIC/UnBjhcf/MyBooks/itjava/slides/Servlets...Servlet Context Visão do Servlet Engine Passada ao Servlet durante sua inicialização Acesso ao logger de eventos Obtenção de

Java e Engenharia de Software Orientada a Objetos. Copyright © 1999, Jorge H. C. Fernandes ([email protected])

Pacotes e Classes

�javax.servlet�RequestDispatcher�Servlet�ServletConfig�ServletContext�ServletRequest�ServletResponse�SingleThredModel�GenericServlet�ServletInputStream�ServletOutputStream�ServletException�UnavailableException

�javax.servlet.http�HttpServletRequest �HttpServletResponse �HttpSession �HttpSessionBindingListe

ner �HttpSessionContext �Cookie �HttpServlet �HttpSessionBindingEven

t �HttpUtils

Page 28: Java - CIC/UnBjhcf/MyBooks/itjava/slides/Servlets...Servlet Context Visão do Servlet Engine Passada ao Servlet durante sua inicialização Acesso ao logger de eventos Obtenção de

Java e Engenharia de Software Orientada a Objetos. Copyright © 1999, Jorge H. C. Fernandes ([email protected])

HttpServlet

Page 29: Java - CIC/UnBjhcf/MyBooks/itjava/slides/Servlets...Servlet Context Visão do Servlet Engine Passada ao Servlet durante sua inicialização Acesso ao logger de eventos Obtenção de

Java e Engenharia de Software Orientada a Objetos. Copyright © 1999, Jorge H. C. Fernandes ([email protected])

Interface javax.servlet.Servlet

void destroy() Remove o servlet após todos os threads dentro deste serviço

terem acabados, ou após um período de timeoutServletConfig getServletConfig()

Retorna um objeto (ServletConfig) que contém parâmetros de inicialização

String getServletInfo()Retorna um string com informação sobre o servlet (autor, versão

e copyright)void init(ServletConfig config)

Inicializa o servlet o o coloca em serviçovoid service(ServletRequest req, ServletResponse res)

Solicita ao servlet o atendimento de um pedido

Page 30: Java - CIC/UnBjhcf/MyBooks/itjava/slides/Servlets...Servlet Context Visão do Servlet Engine Passada ao Servlet durante sua inicialização Acesso ao logger de eventos Obtenção de

Java e Engenharia de Software Orientada a Objetos. Copyright © 1999, Jorge H. C. Fernandes ([email protected])

public abstract class GenericServletextends java.lang.Objectimplements Servlet, ServletConfig, java.io.Serializable

void destroy() {..}java.lang.String getInitParameter(java.lang.String name) {..}java.util.Enumeration getInitParameterNames() {..}ServletConfig getServletConfig() {..}ServletContext getServletContext() {..}java.lang.String getServletInfo() {..}void init() {..}void init(ServletConfig config) {..}void log(java.lang.String msg) {..}void log(java.lang.String message, java.lang.Throwable t) {..}abstract void service(ServletRequest req, ServletResponse res) {..}

Page 31: Java - CIC/UnBjhcf/MyBooks/itjava/slides/Servlets...Servlet Context Visão do Servlet Engine Passada ao Servlet durante sua inicialização Acesso ao logger de eventos Obtenção de

Java e Engenharia de Software Orientada a Objetos. Copyright © 1999, Jorge H. C. Fernandes ([email protected])

HttpServlet

Atendimento aos métodos do HTTPprotected void doDelete(HttpServletRequest req, HttpServletResponse

resp)protected void doGet(HttpServletRequest req, HttpServletResponse resp)protected void doOptions(HttpServletRequest req, HttpServletResponse

resp) protected void doPost(HttpServletRequest req, HttpServletResponse resp)protected void doPut(HttpServletRequest req, HttpServletResponse resp)protected void doTrace(HttpServletRequest req, HttpServletResponse

resp)

protected long getLastModified(HttpServletRequest req)protected void service(HttpServletRequest req, HttpServletResponse

resp)void service(ServletRequest req, ServletResponse res)

Page 32: Java - CIC/UnBjhcf/MyBooks/itjava/slides/Servlets...Servlet Context Visão do Servlet Engine Passada ao Servlet durante sua inicialização Acesso ao logger de eventos Obtenção de

Java e Engenharia de Software Orientada a Objetos. Copyright © 1999, Jorge H. C. Fernandes ([email protected])

Exemplos Contidos no Java Tutorial (JDSK 2.0)

� CatalogServlet� Busca de livros postos a

venda� CatalogServlet

� Comprar um livro colocando-o em um carrinho de compras

� Sessão, Cookies� BookDetailServlet

� Ver mais informações sobre um livro específico

�GET� Chamando um servlet de

outro servlet� BookDBServlet

�Gerenciar a base da dados de livros

� Inicialização e Destruição

� ShowCartServlet� Ver a lista de livros

selecionados para compra� ShowCartServlet

� Remover um ou mais livros do carrinho

� Lendo Cookies� CashierServlet

� Efetivamente comprar os livros no caixa

� ReceiptServlet� Receber um obrigado pela

compra� POST� SingleThreaded� Invalidar Sessão

Page 33: Java - CIC/UnBjhcf/MyBooks/itjava/slides/Servlets...Servlet Context Visão do Servlet Engine Passada ao Servlet durante sua inicialização Acesso ao logger de eventos Obtenção de

Java e Engenharia de Software Orientada a Objetos. Copyright © 1999, Jorge H. C. Fernandes ([email protected])

Exercício

�Instale o JSDK 2.0�Execute e compreenda o exemplo

bookstore

Page 34: Java - CIC/UnBjhcf/MyBooks/itjava/slides/Servlets...Servlet Context Visão do Servlet Engine Passada ao Servlet durante sua inicialização Acesso ao logger de eventos Obtenção de

Dicas do Tutorial Java

Inicializando e Destruindo Servlets

Page 35: Java - CIC/UnBjhcf/MyBooks/itjava/slides/Servlets...Servlet Context Visão do Servlet Engine Passada ao Servlet durante sua inicialização Acesso ao logger de eventos Obtenção de

Inicialização de Servlets

Page 36: Java - CIC/UnBjhcf/MyBooks/itjava/slides/Servlets...Servlet Context Visão do Servlet Engine Passada ao Servlet durante sua inicialização Acesso ao logger de eventos Obtenção de

Java e Engenharia de Software Orientada a Objetos. Copyright © 1999, Jorge H. C. Fernandes ([email protected])

Servlet initialization

�Regras na construção do método init�Se um erro de inicialização ocorrer, de modo

que o servlet fique incapacitado, levante ums UnavailableException. ⌧Ex: incapacidade de abrir conexões de rede.

�Não chamar System.exit()�Salvar o parâmetro ServletConfig de modo

que o método getServletConfig possa retornar o valor.

Page 37: Java - CIC/UnBjhcf/MyBooks/itjava/slides/Servlets...Servlet Context Visão do Servlet Engine Passada ao Servlet durante sua inicialização Acesso ao logger de eventos Obtenção de

Java e Engenharia de Software Orientada a Objetos. Copyright © 1999, Jorge H. C. Fernandes ([email protected])

public class BookDBServlet ... {

private BookstoreDB books;

public void init(ServletConfig config) throws ServletException {

// Store the ServletConfig object and log the initializationsuper.init(config);

// Load the database to prepare for requestsbooks = new BookstoreDB();

}...

}

Page 38: Java - CIC/UnBjhcf/MyBooks/itjava/slides/Servlets...Servlet Context Visão do Servlet Engine Passada ao Servlet durante sua inicialização Acesso ao logger de eventos Obtenção de

Destruindo um Servlet

Page 39: Java - CIC/UnBjhcf/MyBooks/itjava/slides/Servlets...Servlet Context Visão do Servlet Engine Passada ao Servlet durante sua inicialização Acesso ao logger de eventos Obtenção de

Java e Engenharia de Software Orientada a Objetos. Copyright © 1999, Jorge H. C. Fernandes ([email protected])

public class BookDBServlet extends GenericServlet {

private BookstoreDB books;

... // the init method

public void destroy() {// Allow the database to be garbage collectedbooks = null;

}}

Page 40: Java - CIC/UnBjhcf/MyBooks/itjava/slides/Servlets...Servlet Context Visão do Servlet Engine Passada ao Servlet durante sua inicialização Acesso ao logger de eventos Obtenção de

Aspectos Avançados do Gerenciamento de Servlets

Clean Shutdown

Page 41: Java - CIC/UnBjhcf/MyBooks/itjava/slides/Servlets...Servlet Context Visão do Servlet Engine Passada ao Servlet durante sua inicialização Acesso ao logger de eventos Obtenção de

Java e Engenharia de Software Orientada a Objetos. Copyright © 1999, Jorge H. C. Fernandes ([email protected])

Técnicas para shutdown de Servlets

�Manter controle de quantos threads estão correntemente executando método service

�Notificar serviços que demoram e aguardar um tempo para que eles acabar de forma organizada

�Serviços demorados devem periodicamente verificar se o servidor pediu para que eles sejam destruídos, de modo que eles possam parar e o servidor possa encerrar.

Page 42: Java - CIC/UnBjhcf/MyBooks/itjava/slides/Servlets...Servlet Context Visão do Servlet Engine Passada ao Servlet durante sua inicialização Acesso ao logger de eventos Obtenção de

Java e Engenharia de Software Orientada a Objetos. Copyright © 1999, Jorge H. C. Fernandes ([email protected])

Controle de Threads Ativos

public ShutdownExample extends HttpServlet {private int serviceCounter = 0;...//Access methods for serviceCounterprotected synchronized void enteringServiceMethod() {serviceCounter++;}protected synchronized void leavingServiceMethod() {

serviceCounter--;}protected synchronized int numServices() {return serviceCounter;}

}

Page 43: Java - CIC/UnBjhcf/MyBooks/itjava/slides/Servlets...Servlet Context Visão do Servlet Engine Passada ao Servlet durante sua inicialização Acesso ao logger de eventos Obtenção de

Java e Engenharia de Software Orientada a Objetos. Copyright © 1999, Jorge H. C. Fernandes ([email protected])

Controle de Threads Ativos

protected void service(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException{enteringServiceMethod();try {

super.service(req, resp);} finally {

leavingServiceMethod();}

}

Page 44: Java - CIC/UnBjhcf/MyBooks/itjava/slides/Servlets...Servlet Context Visão do Servlet Engine Passada ao Servlet durante sua inicialização Acesso ao logger de eventos Obtenção de

Java e Engenharia de Software Orientada a Objetos. Copyright © 1999, Jorge H. C. Fernandes ([email protected])

Clean Shutdown

public ShutdownExample extends HttpServlet {private boolean shuttingDown;...//Access methods for shuttingDownprotected setShuttingDown(boolean flag) {shuttingDown = flag;}protected boolean isShuttingDown() {return shuttingDown;}

}

Page 45: Java - CIC/UnBjhcf/MyBooks/itjava/slides/Servlets...Servlet Context Visão do Servlet Engine Passada ao Servlet durante sua inicialização Acesso ao logger de eventos Obtenção de

Java e Engenharia de Software Orientada a Objetos. Copyright © 1999, Jorge H. C. Fernandes ([email protected])

Verificando Clean Shutdownpublic void destroy() {

/* Check to see whether there are still service methods running,* and if there are, tell them to stop. */

if (numServices() > 0) {setShuttingDown(true);}

/* Wait for the service methods to stop. */while(numServices() > 0) {

try {Thread.sleep(interval);

} catch (InterruptedException e) {}

}}

Page 46: Java - CIC/UnBjhcf/MyBooks/itjava/slides/Servlets...Servlet Context Visão do Servlet Engine Passada ao Servlet durante sua inicialização Acesso ao logger de eventos Obtenção de

Java e Engenharia de Software Orientada a Objetos. Copyright © 1999, Jorge H. C. Fernandes ([email protected])

Exercícios

�Crie o servlet ContaBancária e o integre com o formulário HTML de manipulação de contas bancárias

Page 47: Java - CIC/UnBjhcf/MyBooks/itjava/slides/Servlets...Servlet Context Visão do Servlet Engine Passada ao Servlet durante sua inicialização Acesso ao logger de eventos Obtenção de

FIM