JBoss 4: где развернуть глобальные фильтры?

Я хочу использовать «глобальные» HTTP-фильтры.

Поэтому я отредактировал deploy/jboss-web.deployer/conf/web.xml и добавил:

<filter>
    <filter-name>StatisticsFilterHitCount</filter-name>
    <filter-class>myapp.StatisticsFilterHitCount</filter-class>
</filter>

<filter-mapping>
    <filter-name>StatisticsFilterHitCount</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

Теперь, когда я запускаю сервер, ни один артефакт не может быть развернут. При каждой попытке развертывания регистрируется огромное исключение. Извините, не могу вставить его сюда. Полагаю, на момент развертывания класса фильтра еще нет.

Итак, где (и как) мне нужно развернуть такой фильтр глобально?

В настоящее время находится в applications/5apps, в упаковке .war.


person Ivivi Vavava    schedule 09.01.2012    source источник


Ответы (2)


Посмотрите на Jboss/server/default/deploy/jboss-web.deployer/conf/web.xml. Есть даже пример глобального CommonHeadersFilter.

Но вам придется поместить код в какую-нибудь банку под JBoss/server/default/lib. JBoss не может просмотреть код во время войны с процессом инициализации веб-контейнера.

person Vadzim    schedule 11.01.2012
comment
Здорово! Это сработало! В моем случае правильным местом назначения для артефакта был server/dorun/lib/. Да, и мне пришлось поменять упаковку на jar. - person Ivivi Vavava; 12.01.2012
comment
Излишне говорить, что это больше не работает в Wildfly (JBossAS 7+), поскольку они перешли с использования Tomcat на использование своего собственного веб-контейнера. - person idarwin; 30.01.2019

Если файл класса отсутствует, просто создайте его. Внутри war под пакетом myapp должен быть класс с именем StatisticsFilterHitCount, который реализует интерфейс фильтра, переопределяет

           doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws ServletException, IOException 

           init(FilterConfig filterConfig)

           public void destroy()

и делает то, для чего предназначено. Проверьте это.

person Aravind A    schedule 10.01.2012
comment
Да, этот идентификатор класса определенно есть, я его написал. Так что проблема не в этом;) Как я уже упоминал в вопросе: в то время, когда обрабатывается deploy/jboss-web.deployer/conf/web.xml, мой артефакт (содержащий этот класс) еще не загружен (я полагаю). - person Ivivi Vavava; 10.01.2012