Можете ли вы упаковать WebFilter в библиотеку - PullRequest
3 голосов
/ 09 февраля 2011

А если так, то как ты это делаешь?

Да звучит как мой последний вопрос. И это по сути та же проблема. У меня есть @javax.servlet.annotation.WebFilter, который прекрасно работает, когда он упакован в войну. Теперь я хотел бы переместить фильтр в библиотеку. Но если я сделаю это, он больше не будет называться.

Какие-нибудь подводные камни, на которые я должен обратить внимание, или это просто невозможно?

Ответы [ 2 ]

3 голосов
/ 09 февраля 2011

Набор <web-app metadata-complete="false">.

Это означает, что метаданные для этого веб-приложения не ограничиваются этим конкретным XML (и классами веб-приложения), но могут использовать метаданные сторонними библиотеками.

Также взгляните на "веб-фрагменты". Вы можете определить web-fragment.xml в META-INF вашего фляги и отобразить там все сервлеты и фильтры.

Взгляните на эту демонстрацию .

1 голос
/ 10 февраля 2011

Просто поместите пустой файл web.xml, совместимый с Servlet 3.0, в папку /META-INF вашего проекта JAR.

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    id="yourProjectId" version="3.0">
</web-app>

Контейнер Servlet 3.0 будет по умолчанию сканировать JAR на наличие файла /META-INF/web.xml икогда присутствует, просканируйте все классы в JAR на наличие аннотаций Servlet 3.0.Никаких других настроек не требуется.

JSF 2.0, кстати, имеет аналогичную технику с /META-INF/faces-config.xml.

...