Desvendando Os Servlets 3

Embed Size (px)

Citation preview

  • 1

    DESVENDANDO OS SERVLETS 3.0

    Aluno: Bruno do Couto Rosa [email protected]

  • Os Servlets 3.0

    l Lanada em novembro de 2009 l Java EE 6 que dene a verso 3.0 dos Servlets l de fcil congurao l Aumenta a produKvidade do desenvolvedor l Ainda possvel usar a verso dos Servlets anKga

  • Servlets Antes l O desenvolvedor Knha que criar uma classe que estendia de

    HPpServlet l Tinha que congurar a classe corretamente no arquivo web.xml

  • Servlets 3.0 l UKliza-se annotaKons, em vez da congurao no web.xml que

    agora opcional l A annotaKon @WebServlet usada para congurar o Servlet l O atributo urlPaPerns indica o padro de URL que ser mapeado

  • Atributos do @WebServlet l Name dene o nome para o servlet l DescripKon dene uma descrio l AsyncSupported d suporte a servlets assncronos l InitParams parmetros do servlet que podem ser recuperados atravs

    da chamada ao getServletCong().getInitParameter() l A denio de cada parmetro feita atravs da @WebInitParam

  • Uma aplicao simples

  • Arquivo index.jsp

  • Filters e Listeners l Como so bastantes semelhantes aos Servlets, tambm sofrem mudanas

    com o lanamento do Java EE 6 l Antes o Filter era preciso implementar a interface javax.servlet.lter l E o Listener era denido no arquivo web.xml l Agora tanto os lters como os listeners so congurados atravs das

    annotaKons @WebFilter e @WebListener l Para os Filters so usados os mesmos parmetros que os Servlets, da

    mesma forma

  • Congurao Externa

    l Era muito didcil a congurao do web.xml l Agora possvel ler servlets, lters ou listeners implementados em outro

    arquivo, desde que esteja no pacote da aplicao l Podem ser feitas atravs das mesmas annotaKons ou de fragmentos do

    arquivo web.xml l Fragmentos so arquivos web-fragment.xml

  • Congurao externa usando fragmentos

    l Pedaos do arquivo web.xml l Podem ser carregadas de vrios arquivos l No usa annotaKons, mas sim um arquivo web-fragment.xml, como um

    arquivo web.xml l Os fragmentos devem ser organizados e ordenados l A tag estabelece a ordem entre os fragmentos l O lter sem annotaKons caria assim:

  • Arquivo Web-fragment.xml

    l Implementao do arquivo web-fragment.xml

  • Arquivo Web.xml

    Implementao do arquivo web.xml Ordenao dos fragmentos

  • Arquivo Web-fragment.xml

    l Ou ento indicando a sequncia dos fragmentos usando as tags ou

  • Servlets, Filters e Listeners Dinmicos

    l Integrao entre aplicaes e frameworks, atravs de carregamento dinmico em tempo de execuo

    l Para suportar o carregamento dinmico foram adicionados a interface ServletContext, os mtodos addServlet(), addFilter() e addListener()

    l S so invocados dentro do mtodo contextIniKalized() ou no mtodo onStartup()

    l Um exemplo de ServletContextListener para a aplicao

  • Servlets, Filters e Listeners Dinmicos

    l O mtodo onStartup() da interface ServletContainerIniKalizer, exclusivo da verso 3.0 dos Servlets

    l Implementar a classe IniKalizer somente com o mtodo onStartup()

  • l Depois congurar com um diretrio dentro da aplicao com chamado services

    l Criar um arquivo que deve ter o nome de javax.servlet.

    ServletContainerIni2alizer que ter o nome da classe no caso init.IniKalizer

    l Ento pode ser aproveitados frameworks externos

    Servlets, Filters e Listeners Dinmicos

  • A annotaOon @HandlesTypes

    l usada em classes que implementam a inteface ServletConKnerIniKalizer

    l Recebe como parmetro uma lista de classes e/ou interfaces l Se exisKr uma classe AppListener ela ser chamada, e ser passada

    como parmetro para o mtodo

  • Mtodo addServlet() l Recebem parmetros para congurao do Servlet l Assumem a existncia do servlet AppServlet no pacote servlet l O retorno desses mtodos um objeto do Kpo

    ServletRegistraKon.Dynamic

  • O objeto ServletRegistraOon.Dynamic

    l Este objeto uKlizado para congurar outras informaes do servlet depois que ele foi registrado

    l Parmetros iniciais, mapeamento

  • Mtodo addFilter() l Recebe parmetros para congurao do Filter l Assumem a existncia do lter AppFilter no pacote lter l O retorno desses mtodos um objeto do Kpo

    FilterRegistraKon.Dynamic

  • Mtodo addListener() l Recebe parmetros para congurao do Listener l Assumem a existncia do listener AppListener no pacote listener l No retornam nenhum dado

  • Chamadas Assncronas a Servlets

    l No era possvel na verso 2.5 l Permite que durante a espera por uma resposta, a thread que est

    atendendo requisio seja liberada l Depois quando a resposta chegar, uma nova thread uKlizada para

    dar conKnuidade ao processo

  • Chamadas Assncronas a Servlets l Atributo asyncSupported l Mtodo startAsync responsvel por disparar o processamento

    assncrono e o retorno do Kpo AsyncContext l Quando o startAsync disparado os mtodos doGet() e doPost()

    terminam de executar e no geram resposta a requisio l Para gerar a resposta necessrio que o mtodo complete() do

    objeto AsyncContext seja chamado

  • Chamadas Assncronas a Servlets

    l Quando um mudana ocorrer, o mtodo atualizar() que uKliza o objeto AsyncContext

    l Escreve os dados na stream de sada e chama o mtodo complete()

    para nalizar o processo

  • Concluso

    O Servlet 3.0 foi criado para aumentar a produKvidade do desenvolvedor, pois de fcil congurao por

    usar as annotaKons.

  • PERGUNTAS ???

    26