WebLogic集群环境下Session无效
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WebLogic集群环境下Session无效相关的知识,希望对你有一定的参考价值。
Machine
Name IP
machine1 192.168.157.10 port 8080
machine2 192.168.158.10 port 8080
ManagedServer
Server1 IP:192.168.157.10 port 8080
Server2 IP:192.168.158.10 port 7100
proxy_Server IP :192.168.158.10 port 8080
通过Server1访问web应用出现Session无效
Server2访问Web应用正常
proxy_Server访问Web应用正常
<?xml version="1.0" encoding="UTF-8"?>
<weblogic-web-app xmlns="http://www.bea.com/ns/weblogic/90">
<session-descriptor>
<debug-enabled>true</debug-enabled>
<persistent-store-type>replicated</persistent-store-type>
<sharing-enabled>true</sharing-enabled>
</session-descriptor>
<context-root>/WebRoot</context-root>
</weblogic-web-app>
要想实现session同步,必须满足两个条件:第一,在weblogic.xml里面增加session同步相关的代码;第二,所有放入session的类都要序列化。
还有个小tip,session中对象的变更,必须重新置入session,否则对象属性的变化不会被同步
(转) Weblogic 12c 集群部署和session复制
1、启动服务
首先在weblogic12c控制台,启动受托管服务server1、server2、server3.
2、将要部署的应用打包成war文件.
我用的是MyEclipse做的开发,可以用其自带的工具把项目应用打包成war包.
右键工程--->Export-->搜索框输入war,选择WAR file,生成对应的war
1 weblogic.xml文件内容: 2 3 <!DOCTYPE weblogic-web-app PUBLIC "-//BEA Systems, Inc.//DTD Web Application 8.1//EN" "http://www.bea.com/servers/wls810/dtd/weblogic810-web-jar.dtd"> 4 5 <weblogic-web-app> 6 7 <session-descriptor> 8 9 <session-param> 10 11 <param-name>TimeoutSecs</param-name> 12 13 <param-value>28800</param-value> 14 15 </session-param> 16 17 <session-param> 18 19 <param-name>CookieName</param-name> 20 21 <param-value>BSS_JSESSIONID</param-value> 22 23 </session-param> 24 25 <session-param> 26 27 <param-name>PersistentStoreType</param-name> 28 29 <param-value>replicated_if_clustered</param-value> 30 31 </session-param> 32 33 </session-descriptor> 34 35 <jsp-descriptor> 36 37 <jsp-param> 38 39 <param-name>encoding</param-name> 40 41 <param-value>gb2312</param-value> 42 43 </jsp-param> 44 45 <jsp-param> 46 47 <param-name>pageCheckSeconds</param-name> 48 49 <param-value>1</param-value> 50 51 </jsp-param> 52 53 </jsp-descriptor> 54 55 <container-descriptor> 56 57 <servlet-reload-check-secs>1</servlet-reload-check-secs> 58 59 </container-descriptor> 60 61 <context-root>/redis</context-root> 62 63 </weblogic-web-app>
replicated_if_clustered表示session复制,无此参数值配置,后续部署的server1-3服务应用之间的session不会复制,各位可以实践下,我这里就不演示了.
web.xml内容 1 2 <?xml version="1.0" encoding="UTF-8"?> 3 4 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> 5 6 <display-name>session_test</display-name> 7 8 <welcome-file-list> 9 10 <welcome-file>index.jsp</welcome-file> 11 12 </welcome-file-list> 13 14 </web-app>
3、部署
打开weblogic控制台,点击部署-->安装
进入你存放的打包war的目录,选择那个war文件.
点击下一步,
点击下一步
然后一直默认选择,点击完成就好了,部署成功后是如下状态.
4、访问部署的session_test应用服务
打开浏览器,访问server1部署的服务,输入http://127.0.0.1:47001/redis/
访问server2部署的服务,输入http://127.0.0.1:47002/redis/
访问server3部署的服务,输入http://127.0.0.1:47003/redis/
访问三个服务下的session_test应用之后,可以发现session_id第一个感叹号之前的值(602t6EWkiR9LkbZ1QADZr6073bjxlYfJIhEAd-U456eiI26aC5vT)是不变的,说明cluster集群下的server1、server2、server3服务的session_test应用的session是相互复制的.
以上是关于WebLogic集群环境下Session无效的主要内容,如果未能解决你的问题,请参考以下文章
(转) Weblogic 12c 集群部署和session复制