【发布时间】: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