如何将 Wildfly 9 的默认 SessionManager 替换为所有 Web 应用程序的自定义实现?

Posted

技术标签:

【中文标题】如何将 Wildfly 9 的默认 SessionManager 替换为所有 Web 应用程序的自定义实现?【英文标题】:How can I replace Wildfly 9's default SessionManager with a custom implementation for all web apps? 【发布时间】:2015-12-07 11:21:52 【问题描述】:

根据我对 Undertow 文档和 this 堆栈溢出帖子的理解,我认为我应该能够提供自己的 SessionManager 实现。

我创建了一个 jar 文件,其中包含:

一个 SessionManager 实现 SessionManagerFactory 实现 一个 ServletExtension 实现 一个 META-INF/services/io.undertow.servlet.ServletExtension 文件 包含我的班级的完全限定名称

我做对了吗?我如何让 Undertow 接手?

谢谢

【问题讨论】:

我想做类似的事情。你有一个完整的例子可以分享你是如何做到这一点的吗? 【参考方案1】:

如果你做了所有这些,你所需要的就是在你的 war/WEB-INF/lib 中拥有那个 jar 就是这样。

当战争部署时,WildFly 会寻找这个 ServletExtension 并告诉 undertow 加载它。

另见http://undertow.io/undertow-docs/undertow-docs-1.2.0/index.html#servlet-extensions

【讨论】:

谢谢它的工作,但这并不是我想要的。而不是让战争知道会话管理器,我希望在某些野蛮配置级别上对其进行管理并应用于所有 Web 应用程序部署。这可能吗? 理论上可以在wildfly中作为模块添加,然后在声明模块依赖时导入模块的meta-inf。您需要在每个 WAR 中使用 jboss-deployment-structure.xml 来表示您的应用程序中所需的依赖项。 目前无法通过 undertow 子系统配置进行配置。但可能会在未来的版本中添加。 知道了。我能够使用受 John Ament 启发的解决方案为每个部署替换会话管理器。我将我的 Jar 部署到 modules 目录,并让我的 Ear 部署通过其 Manifest 声明对我的 SessionManager 实现的依赖。换句话说,War 不包含依赖项,而是将责任委托给 Ear 部署。

以上是关于如何将 Wildfly 9 的默认 SessionManager 替换为所有 Web 应用程序的自定义实现?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 PostgreSQL 数据源添加到 WildFly 9.0?

如何将 root(/) 上下文中的 war 文件部署到 Wildfly 9.0.1 版

如何将 https-listener 添加到 WildFly 的默认服务器?

在Jboss 8 Wildfly中设置默认地址

WildFly 9.0.1 WFLYCTL0158 处理程序“控制台”未找到

在 Jboss 8 Wildfly 中设置默认地址