Интеграция фильтров Guice и URLRewrite

Я постепенно переношу сервлеты нашего приложения из web.xml в модуль сервлета Guice и столкнулся с проблемой с фильтром UrlRewrite (tuckey.org/urlrewrite/‎). Он не обрабатывает сервлеты, зарегистрированные в модуле Guice. Если я регистрирую и сервлет, и фильтр в web.xml, все работает нормально, но если я пытаюсь зарегистрировать их в модуле Guice - нет. Кто-то сталкивался с подобной проблемой?

Вот некоторые выдержки из кода:

1) Модуль конфигурации Guice.

public class ServletConfigurationModule extends ServletModule {

@Override
protected void configureServlets() {

    bind(UrlRewriteFilter.class).in(Singleton.class);

    Map<String, String> urlRewriteParams = new HashMap<>();
    urlRewriteParams.put("confReloadCheckInterval", "60");
    urlRewriteParams.put("statusEnabled", "false");

    filter("/*").through(UrlRewriteFilter.class, urlRewriteParams);

    serve("/account").with(Account.class);

2) содержимое urlrewrite.xml

    <rule>
       <from>/affiliate-activation</from>
       <to>/account?do=affiliate&amp;trg=5</to>
    </rule>

Когда я пытаюсь открыть URL-адрес myhost/affiliate-activation, я получаю ошибку HTTP 404.


person S.R.    schedule 08.04.2014    source источник
comment
Я полагаю, что публикация примера кода всегда приветствуется и позволяет лучше понять проблему.   -  person Opal    schedule 08.04.2014
comment
Кажется, все в порядке. Боюсь, что этот фильтр может просто не работать с guice.   -  person Opal    schedule 09.04.2014


Ответы (1)


Надеюсь, я разобрался с этим. Здесь Вы можете найти репозиторий с примером. Клонируйте репо и выполните gradle jettyRun. Вы можете протестировать приложение в браузере. Не стесняйтесь задавать любые вопросы и делиться идеями. В основном urlrewrite.xml был изменен.

person Opal    schedule 09.04.2014
comment
Привет, спасибо за вашу помощь, решение сработало, но есть ли способ не перезаписывать исходный URL-адрес (в нашем случае партнерской активации) URL-адресом перенаправления (/account?do=affiliate&trg=5) в браузере? Другими словами, исходный URL-адрес должен оставаться прежним в окне браузера. - person S.R.; 09.04.2014