Tomcat/jBOSS会话 - 它们通常存储在哪里?

fri*_*o80 2 java tomcat application-server

前言:我不是Java开发人员.

我有关于Tomcat/jBOSS和其他Java应用程序服务器的问题.会话(会话数据)存储在哪里?在PHP中,会话通常存储在数据库中,这意味着您可以在负载平衡环境中轻松共享会话数据.在Tomcat和其他应用程序服务器中,默认情况下会话似乎存储在内存中,这不适用于负载平衡环境.虽然PHP默认情况下会将会话存储在文件中,但需要几行才能将其连接到数据库.应用程序服务器也是如此吗?

基本上,记忆中的故事会有什么优点?这仍然是应用服务器的标准做法吗?谢谢大家!

Pas*_*ent 14

我有关于Tomcat/jBOSS和其他Java应用程序服务器的问题.会话(会话数据)存储在哪里?

默认情况下,我会在内存中说.细节实际上是......应用服务器特定的实现细节.

在PHP中,会话通常存储在数据库中,这意味着您可以在负载平衡环境中轻松共享会话数据.在Tomcat和其他应用程序服务器中,默认情况下会话似乎存储在内存中,这不适用于负载平衡环境.

好吧,不完全是.这意味着客户端请求必须被发送到集群环境中的同一节点(这被称为"会话粘性"),从负载平衡的角度来看,这不是问题.但从故障转移的角度来看,这是一个问题:如果群集中的节点发生故障,节点管理的会话状态可能会丢失.为解决此问题,几乎所有应用程序服务器提供程序都实现了会话故障转移(使用各种机制,如内存中复制,基于JDBC的持久性等).但是,实现细节再次是特定于应用程序服务器的.请参阅TomcatWebLogic如何处理该问题." 服务器端的J2EE集群 " 下的文章也非常有趣.

虽然PHP默认情况下会将会话存储在文件中,但需要几行才能将其连接到数据库.应用程序服务器也是如此吗?

正如我所说,并非所有应用程序服务器都提供基于JDBC的持久性.说完了,回答你的问题,配置一般都很简单.但是使用数据库确实不是首选解决方案(实际上,我不惜一切代价避免它).

基本上,记忆中的故事会有什么优点?这仍然是应用服务器的标准做法吗?

简单地说:表现!序列化数据,调用数据库,写入磁盘,所有这些都需要付出代价.内存中复制显然可以避免一些开销.但它也有一些限制.例如,它不允许使用WebLogic 进行WAN HTTP会话状态复制.但是,只有少数人需要这个:)