Не забывайте, что компилятор делает большую работу для оптимизации всего при разрабатывании проекта. Используя это используется в большом количестве места, или 1 не должен делать различного, когда-то скомпилированного.
Он должен находиться внутри вашего элемента
в server.xml:
<Context
path="/tcadmin"
docBase="${catalina.home}/server/webapps/admin"
privileged="true"
>
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.0\.0\.1"
/>
</Context>
Просто помните, что строковые значения являются шаблонами регулярных выражений, поэтому специальные символы регулярных выражений (например, точка (.)) должна быть экранирована обратной косой чертой.
EDIT : в ответ на комментарий OP.
Я думаю, вам нужно реализовать ФИЛЬТР в своем веб-приложении и настроить его для приема или отклонения запросов на основе их удаленных IP-адресов. Удаленный адрес можно получить из объекта ServletRequest
, переданного в метод doFilter
.
Вы объявляете фильтр в своем файле web.xml:
<filter>
<filter-name>GatekeeperFilter</filter-name>
<filter-class>your.package.GatekeeperFilter</filter-class>
<init-param>
<param-name>allowedNetwork</param-name>
<param-value>192\.168\.2\.*</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>GatekeeperFilter</filter-name>
<url-pattern>/path/to/protected/folder</url-pattern>
</filter-mapping>
Прочтите связанную статью о том, что необходимо быть сделано, чтобы принять параметры инициализации. Думаю, для принятия решения вы можете без зазрения совести скопировать код из RequestDumperValve.
Вам необходимо поместить его в элемент
, который определяет рассматриваемое веб-приложение.
Для Tomcat это может быть несколько мест, под каждым веб-приложением- специфический (и управляемый веб-приложением) /META-INF/context.xml
или специфичный для сервера (и управляемый сервером) / conf / [enginename] / [hostname] /context.xml
или зависящий от сервера глобальный /conf/context.xml
или зависящий от хоста /conf/server.xml
. См. Также документацию по контексту Tomcat .
Tomcat Valve может применяться ко всему движку, хосту или конкретному контексту (веб-приложение). Вы должны использовать его для всего приложения, а не для конкретного пути или каталогов.
Вы должны установить его в вашем META-INF / context.xml или во фрагменте контекста в каталоге conf / Catalina / [host]. Например,
<Context path="/myapp" ...>
...
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="10.1.2.*"/>
</Context>
На прошлой неделе возникла такая же потребность, что и у вас (но по другим причинам), и был создан клапан для блокировки запросов по пути. Он основан на org.apache.catalina.valves.RequestFilterValve
.
Использование:
Клапан может использоваться в Engine, Host или Context так же, как любой клапан, и доступен на GitHub . http://github.com/xlson/tomcat-valves
Я бы предложил использовать в вашем приложении клапаны tomcat по умолчанию или фильтры сервлетов, если это решит вашу проблему. части приложения управления tomcat Psi-Probe «просочились», даже если мы использовали RemoteAddrValve
в элементе
приложения.