aja*_*jax 2 tomcat6 tomcat-valve
valve
我正在尝试在 Tomcat 中实现一个自定义,例如MyValve
extends BaseValve
。我创建了项目的 jar 并将其添加到Tomcat\lib
文件夹中。
下一步是配置server.xml
或context.xml
。我都尝试过。但我的阀门类别没有被检测到。
有人可以让我知道创建阀门并使用它的步骤吗?
谢谢
问题是创建自定义阀门并使用它所需的步骤。因此,让我一步步解释它,以便其他人也能利用它。对于我的示例,我将使用Java Maven 项目。(Git 项目)
第 1 步:打开一个新的或现有的 Maven 项目(您也可以从上面的存储库克隆)。
步骤 2:将以下依赖项添加到文件中pom.xml
。
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-catalina</artifactId>
<version>7.0.85</version>
<scope>provided</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)
步骤 3:在src/main/java
路径下,创建一个包并创建一个新的 Java 类:(TomcatValve.java
可以是任何名称)。逐个类地扩展这个类ValueBase
。
步骤 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);
}
}
Run Code Online (Sandbox Code Playgroud)
第 5 步:打开终端,然后运行mvn install
. 现在在target/
文件夹中,应该已经构建了 jar。
第 6 步:将此 jar 复制到${TOMCAT_HOME}/lib
或${CATALINA_HOME}/lib
文件夹。这通常是在/usr/local/apache-tomcat9/lib
.
步骤 7:转到${TOMCAT_HOME}/conf
或${CATALINA_HOME}/conf
文件夹并将以下行添加到server.xml
:
班级名称:TomcatValve
包裹名字:com.keetmalin.tomcat
<Valve className="com.keetmalin.tomcat.TomcatValve"/>
Run Code Online (Sandbox Code Playgroud)
步骤 9:转到${TOMCAT_HOME}/bin
或${CATALINA_HOME}/bin
文件夹并在终端中运行以下命令:
./catalina.sh run
Run Code Online (Sandbox Code Playgroud)
第 10 步:接下来,您的 Tomcat 服务器将启动。打开浏览器并转到http://localhost:8080/
并返回终端。您将看到正在打印日志。现在,您可以做任何您想做的事情,而不是打印日志。希望能帮助到你!
归档时间: |
|
查看次数: |
5526 次 |
最近记录: |