【问题标题】:Wildfly "Lazy-Inits" Filters, can I change that?Wildfly“Lazy-Inits”过滤器,我可以改变它吗?
【发布时间】:2014-03-17 05:54:48
【问题描述】:

我想我发现了 Jetty 和 Wildfly 在过滤器初始化的实现上有所不同。

我有一个使用 Tapestry、Spring 和 Hibernate 的 Web 应用程序。我正在尝试将其从 Jetty 迁移到 Wildfly。

我的 web.xml 有两个过滤器:

首先是 OpenSessionInViewFilter(它要求在执行 doInternalFilter 时存在 WebApplicationContext)。此过滤器需要在 Tapestry 之前,以便休眠会话包含针对后端数据库的所有 Tapestry 活动。

其次是 Tapestry 框架(w/spring 集成)过滤器,它在它的 init 方法中加载 spring 的 WebApplicationContext。

我在 Jetty(也在 Tomcat 中)运行这个场景没有问题,但是当将它移动到 Wildfly 时,OpenSessionInViewFilter 抛出了一个 IllegalStateException,告诉我们没有找到 WebApplicationContext。

我尝试对此进行调试,发现 Wildfly 直到 Filter 收到第一个要处理的请求时才调用 init Filter 方法。我同意这可能会在某些情况下提高性能,但在我当前的情况下这是一个问题。

有没有办法告诉 Wildfly 在应用程序启动时初始化过滤器?

谢谢。

【问题讨论】:

  • 这看起来像是我们可以添加到 wildfly/undertow 的一个很好的增强功能,你能为此创建 jira 吗? issues.jboss.org/browse/WFLY
  • 好的,所以你说这是不可能的(除非你当然改变了源代码):D 所以我会按照你的建议添加一个 JIRA。如果你愿意,你可以添加一个答案,说“不可能,只需填写一个 JIRA”,所以我会将其标记为正确答案。谢谢!
  • 我已经填写了一个 JIRA,这是链接:issues.jboss.org/browse/WFLY-3028

标签: java spring jboss servlet-filters wildfly


【解决方案1】:

我发送了pull request,它通过 undertow 子系统中的配置选项公开了此功能。

你现在可以添加

<servlet-container name="default" eager-filter-initialization="true">

启用此功能。

【讨论】:

  • 谢谢!!您不仅提供了答案,还提供了解决方案。再次感谢你
猜你喜欢
  • 2014-06-30
  • 2021-12-31
  • 2015-07-30
  • 2020-05-19
  • 1970-01-01
  • 2014-10-01
  • 1970-01-01
  • 2013-09-04
  • 1970-01-01
相关资源
最近更新 更多