编程语言
首页 > 编程语言> > java – Tomcat / jBOSS会话 – 它们通常存储在哪里?

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

作者:互联网

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

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

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

解决方法:

I have a question about Tomcat / jBOSS and other java application servers. Where are sessions (session data) stored?

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

In PHP, sessions are usually stored in the database which means you can easily share session data in a load balanced environment. In Tomcat and other application servers, session seem to be stored in memory by default which would not apply in a load balanced env.

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

While it is true that PHP stores sessions in files by default, it takes a few lines to hook it up to a DB. Is the same true of applications servers?

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

Basically, what’s the pros for storying sessions in memory? Is this still standard practice for application servers?

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

标签:java,tomcat,application-server
来源: https://codeday.me/bug/20191001/1839807.html