Spring 会话 + Redis + JSF

Spring Session + Redis + JSF

我目前正在开展一个项目,我需要将 HTTP 会话和其他对象(例如 JSF 状态、控制器等)外部化。我的项目是在 Web 层上使用 JSF 的完整 JEE(加上 PrimeFaces 和其他一些库)。 运行 在 Payara 服务器上,在 AWS 使用 Docker。

我的控制器是完全有状态的,我需要保持这种状态。我研究了如何在不更改太多代码的情况下轻松地将用户会话外部化,并且我发现了 Spring Session。问题是我对 Spring 以及如何将它引入我的项目的经验为零,到目前为止我所有的尝试都失败了。

我没有使用 Maven,目前我不太可能使用它,因为项目太大无法移动,所以我必须手动导入所有库。我只想导入库 (Spring + Spring Session),配置 Redis 访问并尽可能少地更改代码。有那么容易吗?

我的问题是:在我的情况下使用 Spring Session 的最佳方法是什么?有谁知道将 JSF 会话外部化到 Redis 的更好/更简单的方法?

谢谢。

我会做什么:我不会尝试重新发明轮子,很可能在您的预算中没有足够的业余时间和金钱来找出这样的解决方案。

为什么?

你有一个基于 ant 的大项目,spring 是基于 maven 的,它有一个如此庞大的依赖树,如果没有 maven 你将无法真正管理它(我什至不想尝试在 spring-boot/mvc 中构建一个没有 maven 的 hello world。即使你能以某种方式将它们放在一起,我敢打赌,jar 版本差异也会导致很多类路径问题。您必须注意您使用的 Java 版本,您必须 select spring 版本,以便 Spring 支持您的 JDK。

并且存在技术差异:您可能可以使用 CDI 从 EJB 调用 Spring bean,反之亦然(至少这在 Wildfly 上以这种方式起作用),但如果您认为结束了,你不想那样做。如果您曾与 Spring 合作过,您就会知道,这并不容易。

最后但同样重要的是:您想 replace/implement 使用 Spring 进行 Payara 会话复制...为此,您必须非常了解 Payara 内部结构,Spring 内部结构和很多其他的东西来做到这一点。

总而言之,如果我是你,我会实施标准会话复制,或者更好的无状态后端。你可以有更多的集群,这样你就不会在所有节点之间复制你的会话。

你真的应该考虑转向 maven 或 gradle,从长远来看,它几乎只有好处。 Netbeans supports 这很好。 唯一的缺点是如果你有很多自定义的 ant 任务,但是有 maven-antrun-plugin,而且,如果没有什么可以帮助你,那么编写你自己的 maven 插件并不难。