Filtros globais no JBoss EAP 6
Uma funcionalidade bastante usada no JBoss 5 é a capacidade de adicionar filtros (listeners, servlets, etc.) globais. Por exemplo, para toda aplicação .war instalada, devem ter um filtro de segurança. Esse filtro é adicionado direto no JBoss, de maneira que a aplicação não tem escolha se usa ou não. No JBoss 5 é usado o arquivo deployers/jbossweb.deployer/web.xml para configuração destes parâmetros.
No JBoss EAP 6 (ou AS 7), não existe esse arquivo deployers/jbossweb.deployer/web.xml. Então veja uma solução alternativa e java puro para adicionar filtros globais.
Implementação da interface ServletContainerInitializer
public class ServletFilterConfigurator implements ServletContainerInitializer { public void onStartup(Set<Class<?>> c, ServletContext ctx) throws ServletException { System.out.println(">>>>>>>>>>>>>> registering filter for " + ctx.getContextPath()); FilterRegistration fReg = ctx.addFilter("myGlobalFilter", com.claudius.MyGlobalFilter.class); fReg.addMappingForUrlPatterns(null, true, "/*"); } }
Ativação da classe, criar um arquivo META-INF/services/javax.servlet.ServletContainerInitializer, cujo conteúdo é FQCN acima.
com.claudius.ServletFilterConfigurator
Isso serve para quando o servlet container, carregar o .jar, invocar a classe do serviço.
No lado do JBoss EAP 6, crie um módulo estático e no domain.xml declare-o como módulo global, desta maneira este módulo é automaticamente carregado para todas as aplicações.
Veja um projeto que mostra o filtro global em funcionamento.
Deixe um comentário