Я пытаюсь реализовать клапан Tomcat (в настоящее время использующий 7.0.55), который должен перехватывать каждый запрос, который достигает Sercce Tomcat, независимо от Коннектора и еще чего-то, независимо от того, есть ли хост с соответствующим именем или контекстом сервлета или что-то еще.Почему мой котел tomcat не используется?
invoke
-метод клапана выглядит следующим образом:
public class MyValve extends ValveBase {
public void invoke(Request request, Response response) throws IOException,
ServletException {
LOG.trace("Valve is being invoked");
getNext().invoke(request, response);
}
}
О системе Дев, тестирование локально, работать все, как освобожденный. Запрос на любой путь URI на моем «localhost» tomcat пишет эту строку журнала. В sever.xml
, клапан настроен вне любого Host
элемента:
<Server port="8005" shutdown="SHUTDOWN">
...
<Service name="Catalina">
...
<Engine defaultHost="localhost" name="Catalina">
...
<Realm ... />
<Valve className="a.b.c.MyValve" />
...
<Host ...>
</Host>
</Engine>
</Service>
</Server>
Теперь говорят в хостах моей системы файл, домен test.domain.com
отображается на 127.0.0.1, и есть один контекст развертывается по имени some-webapp
.
Как было сказано выше, строка журнала получает распечатку, когда я звоню http://localhost:8080/some-webapp/
, который, как и ожидалось, также печатается, когда я звоню http://localhost:8080/non-existing-webapp/
, что также ожидается.
То же самое касается домена (который не настроен в server.xml) test.domain.com, поэтому http://test.domain.com/some-webapp/
печатает строку журнала, а также http://test.domain.com/non-existing-webapp
.
Но это не относится к серверу, на котором мы тестируем. Здесь Valve вызывается только в том случае, если имя контекста URI «известно» для tomcat, то есть вызов .../some-webapp/будет печатать строку журнала во время вызова .../not-existing-webapp/просто ничего не делал - клапан вообще не вызывался.
Тем не менее tomcat обрабатывает этот запрос, поскольку 404, который отправляется клиенту, в этом случае содержит «Apache-Coyote something» в качестве заголовка ответа.
У меня нет идей о том, как отлаживать это дальше, особенно процесс «отбора» Кокта или любого другого - любые мысли там?
Спасибо!