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
Top Related