Элемент запуска UrlRewriteFilter выдает 404, но элемент работает нормально на GAE / Java - PullRequest
1 голос
/ 28 августа 2011

Я использую библиотеку UrlRewriteFilter, чтобы избежать необходимости писать свой собственный URL-фильтр.

Я почти уверен, что у меня все настроено правильно, потому что, когда у меня есть это в моем URL, переписать xml:

    <rule>
      <from>^/urlIWantToMap</from>
      <to type="redirect">/WhereIWouldLikeItToGo</to>
    </rule>

Кажется, все работает нормально (например, нажатие http://localhost:8080/urlIWantToMap отправляет меня в нужное место). Обратите внимание, что мне пришлось добавить отображение сервлета в мой файл web.xml.

Если я попробую это, хотя ...

    <rule>
      <from>^/urlIWantToMap</from>
      <run class="mypackage.MyServletClass" method="doGet"/>
    </rule>

Я получаю http 404. Я думаю, что это та же самая проблема, описанная здесь (хотя я с подозрением отношусь к решению / решению, к которому приходит автор):

http://greatwebguy.com/programming/java/urlrewritefilter-servlet-filter-problem-in-websphere-6105-and-greater/

Я вижу, как это происходит, если произошли какие-то изменения в поведении веб-фильтра, которые не позволили бы UrlRewriteFilter вызывать сервлет. Либо, что; или я совершаю вопиющую ошибку, которую не вижу.

1 Ответ

1 голос
/ 09 октября 2011

Видите ли вы что-то подобное при запуске сервера приложений?

INFO: org.tuckey.web.filters.urlrewrite.Run ERROR: could not find method with the name doGet on mypackage.MyServletClass

Даже если вы этого не сделаете, существует ли метод public doGet без каких-либо параметров? В моем случае он был защищен, и хотя http://localhost:8080/MyProject/rewrite-status сказал мне, что все в порядке, я все равно получил 404.

Мне пришлось создать метод-обертку, чтобы сделать doGet общедоступным, и настроить urlrewrite.xml следующим образом:

<run class="my.wrappers.WrapperServlet" method="doGet(HttpServletRequest, HttpServletResponse)" />
...