我在本地运行WebLogic10.3,并有一个关于它生成的sessionId的问题。当我打印session.getId()时,我看到类似这样的东西:
BBp9TAACMTglQ2TDFAKR4tpyXg73LZDQJ2PtT9x8htG1tWY122aa!869187422!1308677666322
这些感叹号是什么?下面是什么,特别是第二对:!1308677666322?看起来,服务器有时会追加,有时不会。我相信,如果我第二次使用同一个浏览器登录到我的应用程序,那么weblogic就会追加它。这饼干有什么关系吗?
发布于 2011-06-22 10:36:58
查看从我自己的应用程序中随机生成的Weblogic
BrYx4hyPZ4VSP9Wo4eU0OrqmhXMLFONbRHnpLFwRKZ9MSaf6wvYj!-314662473和
BrYiFED29itaC4EBpWYM8RKVQQauHkvnTsA2OAKUPZXVc9oUD5fB!-784323496.现在,如果您注意到会话id 在第一个!之后的部分,即314662473和784323496。
这个数字是Weblogic提供给正在运行的JVM的唯一标识符,即运行中的Weblogic服务器。
如果您的应用程序中有多个服务器,Weblogic知道如何使用会话ID中的9位JVM编号将会话路由回正确的服务器。
每次重新启动weblogic服务器时,只要weblogic服务器运行,它都会生成一个新的JVM id并使用它。因此,对该服务器的任何点击都将在会话ID的末尾具有相同的ID。
format of the session ID是:
JSESSIONID=SESSION_ID!PRIMARY_JVMID_HASH!SECONDARY_JVM_HASH!CREATION_TIME
因此,如果主服务器不可用,它将尝试跳转到辅助服务器,如果启用了会话复制,则可以恢复会话数据。如果您只在本地上运行一台服务器,则格式很简单
JSESSIONID=SESSION_ID!PRIMARY_JVMID_HASH!CREATION_TIME
对于某些时候它没有出现,我已经看到它通常取决于浏览器是否在地址栏中显示了sessionid。
发布于 2014-06-18 15:15:59
WebLogic服务器使用这些in来维护WebLogic集群内存中复制模型中的HTTP会话亲和性。
对于那些启用了HTTP复制(在weblogic.xml部署描述符中默认禁用)的Web应用程序,WebLogic将在集群中保留HTTP会话的主副本和备份副本。
为了避免集群开销,WebLogic代理插件(部署在Web层中)解析会话cookie,并将每个请求重定向到承载主副本的WLS。如果托管主会话的托管服务器出现故障或开销,代理插件将请求重定向到HTTP会话所在的实例。
代理插件将跟踪所有WebLogic集群成员的动态列表作为对(JVM ID/IP:端口),以适当地重定向每个请求。
如果您的应用程序不启用内存中的复制功能,那么cookie将只包含您的HTTP Sesion所在的JVM ID (主副本和唯一副本)。
https://stackoverflow.com/questions/6429990
复制相似问题