如何将 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 的默认服务器?