问题标签 [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.
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 级别使用资源来连接到定义的数据库呢?
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“选择”管道或其他任何东西的过程 - 有什么想法吗?
谢谢!
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.Request和org.apache.catalina.connector.Request,但找不到任何可以返回有关原始 AJP 调用信息的方法或对象。
所以我的问题是:是否可以获得 AJP 调用的服务器的 IP 地址?
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。
tomcat - Tomcat HTTP 访问日志写入文件有延迟
在 tomcat http 访问日志阀需要一些时间来写入文件。请注意,我有 org.apache.catalina.valves.AccessLogValve 的默认配置。有什么办法可以改善延迟吗?造成这种延迟的主要原因是什么
regex - 重写tomcat 8 url
我在两个不同的上下文中部署了两个 tomcat 应用程序:
我需要截取以下形式的网址:
并将它们重定向到 url:
其中“clientname”是动态的
我尝试在我的 tomcats server.xml 文件的元素中使用重写阀,但它仍然只适用于包含上下文的 url。IE:
被重写为
使用以下正则表达式:
有没有办法以不考虑上下文的方式全局重写 url?
apache - 使用 Tomcat 的重写阀
我正在尝试使用 Tomcat 的重写阀来重写 URL 以不显示实际的 WebApp 名称。
当前 URL 类似于http://example.com/Thingstuff。我仍然希望 URL 指向 Thingstuff 应用程序,但我希望用户看到http://example.com/DifferentStuff。
我还没有在谷歌上找到一个可以理解的解决方案,所以我很感激我能在这里得到任何帮助。
谢谢你,布兰登
tomcat - 通过 IP 限制对 Tomcat 管理器的访问
我试图限制对我的 Tomcat 管理器的所有请求,这些请求不是来自我的 IP。
到目前为止,我发现向 server.xml 添加一个 Valve,如下所示:
将阻止所有请求,除了来自“IP”的请求到整个 Tomcat(包括 webapps)。有谁知道如何做同样的事情,但只适用于 Tomcat 管理器?
顺便说一句,我正在使用Tomcat7。
java - Tomcat Valve 的“javax.xml.parsers.FactoryConfigurationError:无法创建类 javax.xml.parsers.DocumentBuilderFactory 的提供程序”
我一直致力于构建一个基于 SAML 2.0 的自定义单点登录 Apache Tomcat 阀门。在这个 Tomcat 阀门的初始化过程中,在某些服务器启动运行时(在每次服务器启动期间不经常发生),我在 Tomcat 日志中遇到了以下异常:
我浏览了几个建议使用以下依赖项的论坛:
正如建议的那样,这确实解决了以前经常发生的问题,但是我看到在服务器启动期间有时会抛出上述异常。
而且我在 Tomcat lib 文件夹中也有上面提到的 DocumentBuilderFactory.class。
我是否遗漏了我应该在我的代码中包含的东西,或者这是一个与性能相关的问题?非常感谢任何帮助。