问题标签 [tomcat-valve]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2213 浏览

tomcat7 - 如何在 Apache Tomcat 7.x 中访问上下文容器之外的全局 JNDI 资源?

我正在为 Apache Tomcat 7开发一个自定义Valve ,该 Valve 是在 Apache Tomcat server.xml配置文件中的主机容器级别定义的。

阀门需要连接到数据库才能进行一些查询。

我正在尝试将 JNDI 资源定义为GlobalNamingResources中的全局资源。

问题是,资源只能在Context容器级别访问,因为在 context.xml 配置文件中定义了ResourceLink 。

显然,当阀门试图通过 JNDI 获取数据源时

获得 NameNotFoundException

那么,有没有办法在 Host Container 级别使用资源来连接到定义的数据库呢?

0 投票
2 回答
1500 浏览

tomcat - 为什么我的 tomcat 阀门没有被调用?

我尝试实现一个 Tomcat 阀门(当前使用 7.0.55),它应该拦截到达 Tomcat 服务的每个请求,无论连接器和诸如此类,无论是否存在具有匹配名称的主机或 servlet 上下文或其他什么。

invoke阀门的- 方法如下所示:

在开发系统上,在本地进行测试,一切正常。对我的“localhost”tomcat 上的任何 URI 路径的请求都会写入该日志行。在 中sever.xml,阀门配置在任何Host元素之外:

现在说在我系统的 hosts 文件中,域test.domain.com映射到 127.0.0.1,并且部署了一个名为some-webapp.

如上所述,当我调用时,日志行得到 printet 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.

但对于我们正在测试的服务器,情况并非如此。这里只有当 URI 的上下文名称对 tomcat 是“已知的”时才调用 Valve,即调用 .../some-webapp/ 将打印日志行,而调用 .../non-existing-webapp / 根本不会做任何事情 - 根本不调用阀门。
尽管如此,在这种情况下,tomcat 仍将该请求处理为发送到客户端的 404,其中包含“Apache-Coyote something”作为响应标头。

我不知道如何进一步调试它,尤其是tomcat“选择”管道或其他任何东西的过程 - 有什么想法吗?

谢谢!

0 投票
0 回答
244 浏览

java - 使用 AJP 时,我在哪里可以从 Tomcat Valve 中找到 Apache httpd 服务器 IP?

我正在更新 Tomcat Valve。我想添加一个检查来查看调用者是否来自 localhost/127.0.0.1,如果 Apache httpd 在同一台机器上充当前端 Web 服务器,情况就是这样。所以我添加了对 IP 地址request.getRemoteAddr()的检查。不幸的是,此方法返回客户端的 IP 地址,而不是 Apache httpd 的 IP 地址。当前的示例代码可以在这里找到

我一直在搜索请求对象org.apache.coyote.Requestorg.apache.catalina.connector.Request,但找不到任何可以返回有关原始 AJP 调用信息的方法或对象。

所以我的问题是:是否可以获得 AJP 调用的服务器的 IP 地址?

0 投票
0 回答
5122 浏览

spring-boot - 嵌入式tomcat气门弹簧靴

我正在尝试配置LogbackValve获取访问日志,以防我的基于 Spring Boot 的 Web 应用程序从嵌入式 Tomcat 运行。以下是配置代码:

但是,每次我在调试模式下使用“mvn spring-boot:run”启动应用程序时,我都会在尝试创建“tomcatEmbeddedServletContainerFactory”bean 的实例时看到日志显示“找不到 LogbackValve”。但是,另一个日志语句表明创建了这个 bean。因此,它总是初始化自动配置类“org.springframework.boot.autoconfigure.web.EmbeddedServletContainerAutoConfiguration”中定义的bean。

现在,我已将我的课程修改为:

我已经在Git上问过这个问题,并且已经解决。但是,在这里,我要提出的一点是,为什么 @ConditionalOnBean(value = LogbackValve.class) 没有检测到也已定义的 bean。

0 投票
2 回答
2842 浏览

tomcat - Tomcat HTTP 访问日志写入文件有延迟

在 tomcat http 访问日志阀需要一些时间来写入文件。请注意,我有 org.apache.catalina.valves.AccessLogValve 的默认配置。有什么办法可以改善延迟吗?造成这种延迟的主要原因是什么

0 投票
1 回答
2269 浏览

regex - 重写tomcat 8 url

我在两个不同的上下文中部署了两个 tomcat 应用程序:

我需要截取以下形式的网址:

并将它们重定向到 url:

其中“clientname”是动态的

我尝试在我的 tomcats server.xml 文件的元素中使用重写阀,但它仍然只适用于包含上下文的 url。IE:

被重写为

使用以下正则表达式:

有没有办法以不考虑上下文的​​方式全局重写 url?

0 投票
1 回答
1331 浏览

apache - 使用 Tomcat 的重写阀

我正在尝试使用 Tomcat 的重写阀来重写 URL 以不显示实际的 WebApp 名称。

当前 URL 类似于http://example.com/Thingstuff。我仍然希望 URL 指向 Thingstuff 应用程序,但我希望用户看到http://example.com/DifferentStuff

我还没有在谷歌上找到一个可以理解的解决方案,所以我很感激我能在这里得到任何帮助。

谢谢你,布兰登

0 投票
2 回答
23232 浏览

tomcat - 通过 IP 限制对 Tomcat 管理器的访问

我试图限制对我的 Tomcat 管理器的所有请求,这些请求不是来自我的 IP。

到目前为止,我发现向 server.xml 添加一个 Valve,如下所示:

将阻止所有请求,除了来自“IP”的请求到整个 Tomcat(包括 webapps)。有谁知道如何做同样的事情,但只适用于 Tomcat 管理器?

顺便说一句,我正在使用Tomcat7。

0 投票
1 回答
159 浏览

tomcat - 可以动态设置Tomcat的访问日志目录吗?

我想知道是否有可能在 Tomcat 7 中有一个每月访问日志目录。在阅读了访问日志 Valve 文档之后,它看起来不像。

理想情况下,它会类似于以下内容:

是否可以设置任何变量来实现此目的?

0 投票
0 回答
5858 浏览

java - Tomcat Valve 的“javax.xml.parsers.FactoryConfigurationError:无法创建类 javax.xml.parsers.DocumentBuilderFactory 的提供程序”

我一直致力于构建一个基于 SAML 2.0 的自定义单点登录 Apache Tomcat 阀门。在这个 Tomcat 阀门的初始化过程中,在某些服务器启动运行时(在每次服务器启动期间不经常发生),我在 Tomcat 日志中遇到了以下异常:

我浏览了几个建议使用以下依赖项的论坛:

正如建议的那样,这确实解决了以前经常发生的问题,但是我看到在服务器启动期间有时会抛出上述异常。

而且我在 Tomcat lib 文件夹中也有上面提到的 DocumentBuilderFactory.class。

我是否遗漏了我应该在我的代码中包含的东西,或者这是一个与性能相关的问题?非常感谢任何帮助。