《配置基于Coherence *Web的WebLogic Server会话管理》中介绍了如何将Coherence *Web与WebLogic Server集成,当时使用的WebLogic Server 10.3.2与Coherence 3.5,由于在那时还没引入作用域的概念,所以Coherence的作用域是全局性的,也就是说不管在WebLogic Server上部署多少应用,不管你想不想,所有的应用都必须使用Coherence接管的会话管理。这种方式带来的问题也是很明显的,首先由于全局使用一个Coherence Cluster,这就会引发会话变量的命名冲突问题。其次,是管理上无法针对不同的应用配置不同的配置选项,例如:会话模型(Session Model)。
Oracle Coherence 3.6版中解决了这个问题,此版本中引入了三种作用域:
实验环境准备
配置应用服务器作用域集群节点
1. 将coherence.jar与%WL_HOME%/common/deployable-libraries/active-cache.jar加到WebLogic Server系统加路径中。
注:active-cache.jar一定要放在%WL_HOME%/common/deployable-libraries/目录下,并且加到类路径下。可以通过修改%DOMAIN_HOME%/bin/startWebLogic.cmd来更改类路径,此处不详述。
2. 将coherence-web-spi.war发布为共享库
3. 修改应用的weblogic.xml配置文件:
view plaincopy to clipboardprint?
- <?xml version="1.0" encoding="UTF-8"?>
- <WLS:WEBLOGIC-WEB-APP xsi:schemalocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd http://xmlns.oracle.com/weblogic/weblogic-web-app http://xmlns.oracle.com/weblogic/weblogic-web-app/1.0/weblogic-web-app.xsd" xmlns:wls="http://xmlns.oracle.com/weblogic/weblogic-web-app" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
- <WLS:WEBLOGIC-VERSION>10.3.2</WLS:WEBLOGIC-VERSION>
- <WLS:CONTEXT-ROOT>CoherenceWeb</WLS:CONTEXT-ROOT>
- <WLS:LIBRARY-REF>
- <WLS:LIBRARY-NAME>coherence-web-spi</WLS:LIBRARY-NAME>
- <WLS:SPECIFICATION-VERSION>1.0.0.0</WLS:SPECIFICATION-VERSION>
- <WLS:EXACT-MATCH>true</WLS:EXACT-MATCH>
- </WLS:LIBRARY-REF>
- </WLS:WEBLOGIC-WEB-APP>
<?xml version="1.0" encoding="UTF-8"?>
10.3.2
CoherenceWeb
coherence-web-spi
1.0.0.0
true
4. 测试方法
分别创建两个domain_a与domain_b,按照步骤1,2分布在两个domain上配置,将应用CoherenceWeb.war分别部署在两个domain中。访问domain_a上的应用CoherenceWeb,更新会话变量值,通过domain_b上的应用CoherenceWeb查看会话变量值的变化情况。如果两个应用中会话变量同步变化就算是成功了
5. 下载测试用应用包:CoherenceWeb.war
配置EAR作用域集群节点
1. 以共享库的方式部署active-cache.jar及coherence-web-spi.war
2. 将coherence.jar放入应用的lib目录下
3. 修改META-INF/weblogic-application.xml
view plaincopy to clipboardprint?
- <?xml version="1.0" encoding="UTF-8"?>
- <WLS:WEBLOGIC-APPLICATION xsi:schemalocation="http://www.bea.com/ns/weblogic/weblogic-application http://www.bea.com/ns/weblogic/weblogic-application.xsd http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/j2ee_1_4.xsd" xmlns:wls="http://www.bea.com/ns/weblogic/weblogic-application" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
- <WLS:LIBRARY-REF>
- <WLS:LIBRARY-NAME>coherence-web-spi</WLS:LIBRARY-NAME>
- </WLS:LIBRARY-REF>
- <WLS:COHERENCE-CLUSTER-REF>
- <WLS:COHERENCE-CLUSTER-NAME>CoherenceCluster</WLS:COHERENCE-CLUSTER-NAME>
- </WLS:COHERENCE-CLUSTER-REF>
- </WLS:WEBLOGIC-APPLICATION>
<?xml version="1.0" encoding="UTF-8"?>
coherence-web-spi
CoherenceCluster
4. 修改应用的META-INF/MANIFEST.MF
Extension-List: active-cache
active-cache-Extension-Name: active-cache
active-cache-Specification-Version: 1.0
active-cache-Implementation-Version: 1.0
6. 测试方法
分访问CoherenceTest.ear中的CoherenceWebA与CoherenceWebB,看是否访问正常。
5. 下载测试用应用包:CoherenceTest.ear
配置WAR-作用域集群节点
1. 以共享库的方式部署active-cache.jar及coherence-web-spi.war
2. 复制coherence.jar到应用的WEB-INF/lib目录下
3. 修改WEB-INF/weblogic.xml
view plaincopy to clipboardprint?- <?xml version="1.0" encoding="UTF-8"?>
- <WLS:WEBLOGIC-WEB-APP xsi:schemalocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd http://xmlns.oracle.com/weblogic/weblogic-web-app http://xmlns.oracle.com/weblogic/weblogic-web-app/1.0/weblogic-web-app.xsd" xmlns:wls="http://xmlns.oracle.com/weblogic/weblogic-web-app" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
- <WLS:WEBLOGIC-VERSION>10.3.2</WLS:WEBLOGIC-VERSION>
- <WLS:CONTEXT-ROOT>CoherenceWeb</WLS:CONTEXT-ROOT>
- <WLS:LIBRARY-REF>
- <WLS:LIBRARY-NAME>coherence-web-spi</WLS:LIBRARY-NAME>
- </WLS:LIBRARY-REF>
- <WLS:COHERENCE-CLUSTER-REF>
- <WLS:COHERENCE-CLUSTER-NAME>CoherenceCluster</WLS:COHERENCE-CLUSTER-NAME>
- </WLS:COHERENCE-CLUSTER-REF>
- </WLS:WEBLOGIC-WEB-APP>
<?xml version="1.0" encoding="UTF-8"?>
10.3.2
CoherenceWeb
coherence-web-spi
CoherenceCluster
这里的<wls:coherence-cluster-ref>元素可选,如果有多个应用使用Coherence *Web,此项必须用以避免命名冲突
4. 修改应用的META-INF/MANIFEST.MF
Extension-List: active-cache
active-cache-Extension-Name: active-cache
active-cache-Specification-Version: 1.0
active-cache-Implementation-Version: 1.0
5. 发布应用
6. 测试方法
分别部署CoherenceWebC.war与NoCoherenceWeb.war,通过应用CoherenceWebC更改会话变量值,通过应用NoCoherenceWeb查看会话变量值的变化情况,如果NoCoherenceWeb的会话变量值不随NoCoherenceWeb会话值的变化而变化,则测试成功
7. 测试代码下载:CoherenceWebC.war、NoCoherenceWeb.war