Weblogic에서는 Coherence라는 Data Grid 툴을 제공한다. 이를 통해, Weblogic에서는 Session을 caching하여 session cache를 복제 및 분산이 가능하다.
Cluster와 동작구조가 매우 비슷하나, cache data를 별도의 coherence server에 저장하여 다양한 이점을 얻을 수 있다.
기본적으로 Weblogic 설치시, Coherence는 Oracle_Home에 함께 설치된다.
[Coherence_Home]/bin 으로 이동시, .cache-server.sh 가 존재한다.
...
JAVA_OPTS="-D:Name=${COH_NAME} -Xms$MEMORY -Xmx$MEMORY
JAVA_OPTS="${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom $JMXPROPERTIES"
JAVA_OPTS="${JAVA_OPTS} -Dcoherence.cacheconfig=default-session-cache-config.xml"
JAVA_OPTS="${JAVA_OPTS} -Dcoherence.session.localstorage=true"
JAVA_OPTS="${JAVA_OPTS} -Dcoherence.cluster=my_cluster"
JAVA_OPTS="${JAVA_OPTS} -Dcoherence.clusteraddress=224.2.1.2"
JAVA_OPTS="${JAVA_OPTS} -Dcoherence.clusterport=14199"
JAVA_OPTS="${JAVA_OPTS} -Dcoherence.ttl=1"
JAVA_OPTS="${JAVA_OPTS} -Djava.net.preferIPv4Stack=true "
$JAVAEXEC -server -cp "$COH_HOME/lib/coherence-web.jar:$COH_HOME/lib/coherence.jar"\
$JAVA_OPTS com.tangosol.net.DefaultCacheServer $1
...
JAVA_OPTS="${JAVA_OPTS} -Dcoherence.cacheconfig=default-session-cache-config.xml"
JAVA_OPTS="${JAVA_OPTS} -Dcoherence.session.localstorage=false"
JAVA_OPTS="${JAVA_OPTS} -Dcoherence.cluster=my_cluster"
JAVA_OPTS="${JAVA_OPTS} -Dcoherence.clusteraddress=224.2.1.2"
JAVA_OPTS="${JAVA_OPTS} -Dcoherence.clusterport=14199"
JAVA_OPTS="${JAVA_OPTS} -Dcoherence.ttl=1"
JAVA_OPTS="${JAVA_OPTS} -Djava.net.preferIPv4Stack=true "
-Dcoherence.clusteraddress
-Dcoherence.clusterport
-Dcoherence.ttl
위 옵션 정보를 통하여 서로의 장비에서 통신이 가능한지 확인이 우선시 되어야 한다.
...
COH_NAME=mycoh
COH_NAME=/home/coh/Coherence/coherence
JAVA_OPTS="-D:Name=${COH_NAME} -Xms$MEMORY -Xmx$MEMORY"
JAVA_OPTS="${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom $JMXPROPERTIES"
JAVA_OPTS="${JAVA_OPTS} -Dcoherence.cacheconfig=default-session-cache-config.xml"
JAVA_OPTS="${JAVA_OPTS} -Dcoherence.session.localstorage=true"
JAVA_OPTS="${JAVA_OPTS} -Dcoherence.cluster=my_${COH_NAME}"
JAVA_OPTS="${JAVA_OPTS} -Dcoherence.localport=10000"
JAVA_OPTS="${JAVA_OPTS} -Dcoherence.localhost=192.168.10.184"
JAVA_OPTS="${JAVA_OPTS} -Dcoherence.localport.adjust=true"
JAVA_OPTS="${JAVA_OPTS} -Dcoherence.wka=192.168.10.0/24"
JAVA_OPTS="${JAVA_OPTS} -Djava.net.preferIPv4Stack=true "
$JAVAEXEC -server -cp "$COH_HOME/lib/coherence-web.jar:$COH_HOME/lib/coherence.jar"\
$JAVA_OPTS com.tangosol.net.DefaultCacheServer $1
...
JAVA_OPTS="${JAVA_OPTS} -Dcoherence.cacheconfig=default-session-cache-config.xml"
JAVA_OPTS="${JAVA_OPTS} -Dcoherence.session.localstorage=false"
JAVA_OPTS="${JAVA_OPTS} -Dcoherence.cluster=${COH_NAME}"
JAVA_OPTS="${JAVA_OPTS} -Dcoherence.localhost=192.168.10.10"
JAVA_OPTS="${JAVA_OPTS} -Dcoherence.localport=8091"
JAVA_OPTS="${JAVA_OPTS} -Dcoherence.localport.adjust=true"
JAVA_OPTS="${JAVA_OPTS} -Dcoherence.wka=192.168.10.0/24"
JAVA_OPTS="${JAVA_OPTS} -Djava.net.preferIPv4Stack=true "
-Dcoherence.localhost
-Dcoherence.localport
위 설정을 통해 Coherence Server와 Managed Server가 session cache를 주고받을때, 해당 인스턴스가 사용할 IP주소 및 Port를 할다한다.
-Dcoherence.localport.adjust
혹 설정중, 중복된 포트가 존재할시, +1 하여 localport를 자동으로 할당해준다
-Dcoherence.wka
well known address. 해당 설정이 되어있으면 강제로 unicast 모드를 설정한다.
wka에 적힌 네트워크 주소 및 인스턴스 주소를 향해 session cache 정보를 교환한다.
위 옵션중, localstorage라는 옵션이 존재한다. 해당 옵션은 기본적으로 cache server에는 true로, managed server에는 false로 지정한다.
해당 옵션이 하는 기능은, session cache를 해당 인스턴에서 저장할지 여부를 물어본다.
모든 localstorage 옵션을 true로 설정시, 기본적으로 in-process
모드로 동작한다. 해당 모드에서는 managed server에서 session data를 저장한다. 별도의 cache server가 필요하지 않지만, 기본적으로 운영모드에서는 권장되지 않으며, managed server에 session cache를 저장하여, Heap memory에 부하가 증가한다.
cache server만 localstorage 옵션을 true로 설정시, out-of-process
모드로 동작한다.