UrlRewriteFilter run element produces 404 but to element works fine on GAE/Java

泄露秘密 提交于 2019-12-11 05:27:48

问题


I'm using the UrlRewriteFilter library in order to avoid having to write my own url filter.

I'm pretty sure that I have things set up properly, because when I have this in my url rewrite xml:

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

It seems to work fine (as in, hitting http://localhost:8080/urlIWantToMap sends me to the intended location). Note that I had to add the servlet mapping to my web.xml.

If I try this though...

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

I get an http 404. I think it is the same kind of problem described here (even though I'm suspicious on the solution/resolution the author comes to):

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

I can see this happening if there were some kind of change to web filter behavior that would inhibit UrlRewriteFilter from calling into the servlet. Either that; or I'm making a blatant mistake I'm not seeing.


回答1:


Do you see something like this when the application server starts?

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

Even if you don't, does a public method doGet exist without any parameters? In my case it was protected, and while http://localhost:8080/MyProject/rewrite-status told me everthing was fine, I still got a 404.

I had to create a wrapper method to make doGet public and configure urlrewrite.xml like this:

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


来源:https://stackoverflow.com/questions/7218909/urlrewritefilter-run-element-produces-404-but-to-element-works-fine-on-gae-java

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!