我目前正在开发一个项目,我需要外部化HTTP Session和其他对象(如JSF状态,控制器等)。我的项目是使用Web层上的JSF(加上PrimeFaces和其他一些库)完全使用JEE。在AWS上使用Docker在Payara Server上运行。
我的控制器是完全有状态的,我需要保持这种方式。我研究了如何在不改变代码的情况下轻松地外化用户会话,我发现了Spring Session。问题是我没有使用Spring的经验,以及如何将它引入我的项目,到目前为止我所有的尝试都失败了。
我没有使用Maven,在这一点上我不太可能使用它,因为项目太大而无法移动,所以我必须手动导入所有的库。我只想导入libs(Spring + Spring Session),配置Redis访问并尽可能少地更改代码。可以这么容易吗?
我的问题是:在我的情况下使用Spring Session的最佳方法是什么?有没有人知道更好/更简单的方法将JSF会话外部化到Redis?
谢谢。
我会做什么:我不会尝试重新发明轮子,很可能在你的预算中没有足够的空余时间和金钱来找出这样的解决方案。
为什么?
你有一个基于ant的大项目,spring是基于maven的,它有一个如此庞大的依赖树,如果没有maven你就无法真正管理它(我不想尝试在没有maven的情况下建立一个没有maven的hello世界 - 开机/ MVC)。即使你可以把它们放在一起,我敢打赌jar版本的差异会有很多类路径问题。您必须注意已使用的Java版本,您必须选择spring版本,以便Spring支持您的JDK。
并且存在技术差异:你可能会使用CDI调用来自EJB的Spring bean,反之亦然(至少在Wildfly上以这种方式工作),但如果你认为这样,你就不愿意这样做了那。如果你曾经使用过Spring,那么你就会知道这个,是的,这并不容易。
最后但并非最不重要的是:您希望使用Spring替换/实现Payara Session复制...为了做到这一点,您必须非常了解Payara内部,Spring内部以及许多其他事情。
总而言之,如果我是你,我会实现标准会话复制,或者甚至更好的无状态后端。您可以拥有更多群集,这样您就不会在所有节点之间复制会话。
你应该考虑转向maven或gradle,从长远来看,它几乎只会带来好处。 Netbeans supports很好。唯一的缺点是如果你有很多自定义ant任务,但是有maven-antrun-plugin,如果没有什么对你有帮助的话,编写你自己的maven插件就不那么难了。