Mapowanie określonego serwletu na serwlet domyślny w Tomcat

Próbuję zaimplementować serwlet, który pobiera surowe żądania, i zdecydować, czy je przetworzyć, czy przekazać je do innego serwera zaplecza. Jest podobny do równoważenia obciążenia, w którym odebrane żądanie jest przekazywane do jednego z miejsc docelowych (w moim przypadku 2). Jednym z miejsc docelowych jest zdalny (na innym hoście). Ponadto żądania mogą dotrzeć do katalogu głównego (http://mycompany.com/).

Ponieważ chcę uzyskać surowe żądania, zaimplementowałem swój własny serwlet (podklasaHttpServlet), a to działa świetnie. Mój serwlet wygląda tak:

public class MyProxyServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
        throws ServletException, IOException {
        processOrForward(req, resp);
    }
    // also doGet(), doHead(), ...
}

Ponieważ usługa, którą chcę przetworzyć, może wysyłać żądania do roota, chciałbym mapować mój serwlet na domyślny serwlet, otrzymując w ten sposób każde żądanie, które nie ma jawnego mapowania serwletów. Załóżmy, że nazwa mojego serwletu to „myservlet” i działa po stronie innego serwletu „foo”, oczekuję, że wszystkie żądania w postacihttp://mycompany.com/foo/... do dostarczenia do foo i wszystkiego innego (np. /, / bar / ..., / myservlet / ...) do „myservlet”. Przeglądanie wcześniejszych postów (np. Mapowanie roottutaj itutajlub przepisywanie adresu URLtutaj), Myślałem, że to wymyśliłem, ale to nie działa.

Tutaj jest mójweb.xml:

<web-app>
  <servlet>
    <servlet-name>ProxyServlet</servlet-name>
    <servlet-class>com.mycompany.MyProxyServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>

  <servlet-mapping>
    <servlet-name>ProxyServlet</servlet-name>
    <url-pattern>/*</url-pattern>
  </servlet-mapping>
</web-app>

W powyższymweb.xml, na wzór url próbowałem

"/" and "/*" and empty (i.e., <url-pattern></url-pattern>), all behave the same -->
    Requests to root (/)goes to tomcat's default servlet
    Requests to /myservlet/... are handled by "myservlet"
    Requests to /fubar/... are always 404

Czy istnieje sposób na zmianę mojego serwletu na domyślny. To znaczy, każde żądanie, które nie jest mapowane specjalnie na serwlet, przychodzi do mnie (dopuszczalne jest nawet otrzymywanie wszystkich żądań, ponieważ mogę wdrożyć ten serwlet we własnym kontenerze). W przypadku, gdy ma to znaczenie, używam Tomcat 7.0.30 na Ubuntu 12.10.

questionAnswers(2)

yourAnswerToTheQuestion