Вопрос в том, какие шаги необходимы для создания пользовательского клапана и его использования. Итак, позвольте мне объяснить это шаг за шагом, чтобы кто-то еще также мог воспользоваться этим. Для моего примера я буду использовать Java Maven Project . ( Git Project )
Шаг 1 : Откройте новый или существующий проект Maven (вы также можете клонировать из вышеупомянутого репозитория).
Шаг 2 : Добавьте следующую зависимость в файл pom.xml
.
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-catalina</artifactId>
<version>7.0.85</version>
<scope>provided</scope>
</dependency>
Шаг 3 : в поле src/main/java
path создайте пакет и создайте новый класс Java: TomcatValve.java
(может быть любым именем). Расширьте этот класс на ValueBase
class.
Шаг 4 : При этом вам придется реализовать метод invoke
. Весь класс будет выглядеть примерно так:
import java.io.IOException;
import java.util.Enumeration;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.apache.catalina.connector.Request;
import org.apache.catalina.connector.Response;
import org.apache.catalina.valves.ValveBase;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
/**
* @author Keet Sugathadasa
*/
public class TomcatValve extends ValveBase {
private static final Logger logger = Logger.getLogger(TomcatValve.class.getName());
public void invoke(Request request, Response response) throws IOException, ServletException {
HttpServletRequest httpServletRequest = request.getRequest();
Enumeration<String> headerNames = httpServletRequest.getHeaderNames();
logger.info("Receiving request");
while (headerNames.hasMoreElements()) {
String header = headerNames.nextElement();
logger.log(Level.INFO, "Header --> {0} Value --> {1}", new Object[]{header, httpServletRequest.getHeader(header)});
}
getNext().invoke(request, response);
}
}
Шаг 5 : открыть терминал и запустить mvn install
. Теперь в папке target/
должен быть собран jar.
Шаг 6 : скопируйте эту банку в папку ${TOMCAT_HOME}/lib
или ${CATALINA_HOME}/lib
. Обычно это в /usr/local/apache-tomcat9/lib
.
Шаг 7 : Перейдите в папку ${TOMCAT_HOME}/conf
или ${CATALINA_HOME}/conf
и добавьте следующую строку в server.xml
:
Имя класса: TomcatValve
PackageName: com.keetmalin.tomcat
<Valve className="com.keetmalin.tomcat.TomcatValve"/>
Шаг 9 : Перейдите в папку ${TOMCAT_HOME}/bin
или ${CATALINA_HOME}/bin
и выполните следующую команду в терминале:
./catalina.sh run
Шаг 10 : Затем ваш сервер Tomcat запустится. Откройте браузер и перейдите на http://localhost:8080/
и вернитесь к терминалу. Вы увидите, что журналы печатаются. Теперь вместо печати журналов вы можете делать все, что пожелаете. Надеюсь, это поможет!