2012-08-23 2 views
3

WebLogic Server 10.3.4에서 Spring 3.0.5 웹 응용 프로그램을 실행 중입니다. EhCache 2.4.2를 캐싱으로 사용하는 Sun JVM 1.6.0_x 64 비트가있는 Solaris 라이브러리. WLS는 표준 노드 startManagedWebLogic.sh (노드 관리자/관리 콘솔을 사용하지 않음)을 통해 시작된 동일한 실제 시스템에서 실행되는 두 노드의 클러스터로 설정됩니다. 에서EhCache "ehcache.disk.store.dir"설정이 적용되지 않습니다.

우리 ehcache.xml 우리는이 같은 디스크 저장 경로를 설정 한 : the 2.4 series documentation of EhCache 이 설정에 따라

<?xml version="1.0" encoding="UTF-8"?> 
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd" 
    updateCheck="false"> 

    <!-- Location of persistent caches on disk --> 
    <diskStore path="ehcache.disk.store.dir" /> 
    .. 

는 JVM 시스템 속성은 디스크 저장 경로를 지정 하기 위해 설정할 수 있습니다.

는 시스템 속성은 표준 JAVA_OPTIONS 요소를 사용하여 startManagedWebLogic.sh에 설정됩니다 SERVER_NAME

JAVA_OPTIONS="-Dehcache.disk.store.dir=/var/tmp/EhCache-${SERVER_NAME} <other stuff>" 
export JAVA_OPTIONS 

이 옵션 전에 같은 스크립트에 정의된다. 내가 속성을 볼 수있는 클러스터 노드의 시작시

이 (더 읽기 쉽도록 두 줄로 표시)가 제대로 를 설정되는 :

/usr/jdk/jdk1.6.0_21/bin/java -d64 -server -Xms4096m -Xmx4096m 
-XX:PermSize=512m -XX:MaxPermSize=512m -XX:+UseParallelOldGC 
-verbose:gc -XX:+PrintGCTimeStamps -Dweblogic.Name=Node2 [..] 
-Dehcache.disk.store.dir=/var/tmp/EhCache-Node2 [..] 
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 
weblogic.Server 

을하지만, 다음 응용 프로그램을 사용하여, 나는 자리가 가 교체되지 않는 것을 알 수 있습니다 제대로, 따라서 실제 경로 설정 대신 자리 표시 자 이름을 사용 :

2012-08-22 11:52:59,426 DEBUG [net.sf.ehcache.CacheManager] - [Creating new CacheManager with default config] 
2012-08-22 11:52:59,429 DEBUG [net.sf.ehcache.CacheManager] - [Configuring ehcache from classpath.] 
.. 
2012-08-22 11:52:59,458 DEBUG [net.sf.ehcache.config.DiskStoreConfiguration] - [Disk Store Path: ehcache.disk.store.dir] 
.. 
2012-08-22 11:52:59,586 DEBUG [net.sf.ehcache.store.DiskStore] - [IOException reading index. Creating new index. ] 
2012-08-22 11:52:59,587 DEBUG [net.sf.ehcache.store.DiskStore] - [Index file ehcache.disk.store.dir/bookmarksCountForUserCache.index deleted.] 
2012-08-22 11:52:59,588 DEBUG [net.sf.ehcache.store.DiskStore] - [Index file ehcache.disk.store.dir/bookmarksCountForUserCache.index created successfully] 
2012-08-22 11:52:59,588 DEBUG [net.sf.ehcache.store.DiskStore] - [Index file dirty or empty. Deleting data file bookmarksCountForUserCache.data] 
2012-08-22 11:52:59,597 DEBUG [net.sf.ehcache.store.MemoryStore] - [Initialized net.sf.ehcache.store.LruMemoryStore for bookmarksCountForUserCache] 
2012-08-22 11:52:59,600 DEBUG [net.sf.ehcache.store.LruMemoryStore] - [bookmarksCountForUserCache Cache: Using SpoolingLinkedHashMap implementation] 
2012-08-22 11:52:59,601 DEBUG [net.sf.ehcache.Cache] - [Initialised cache: bookmarksCountForUserCache] 

내 WLS 도메인 내부의 파일 시스템에서, 내가 볼 수있는 새 폴더 ehcache.disk.store.dir이 생성되므로 경로는 상대 경로로 해석됩니다. 대신에 일반 문자열 ehcache.disk.store.dir를 사용

는 또한 표준 패턴 ${ehcache.disk.store.dir}를 사용하여 을 시도하지만,이 단지 은 ${..}으로 생성되는 폴더 이름을 변경했습니다.

노드속성과 모든 노드에 대해 동일한 EhCache 구성을 사용하여 노드 당 디스크 저장소 경로를 지정하는 방법이 있습니까?

우리의 ehcache.xml은 배포 된 .war 파일 안에 있으므로 모든 클러스터 노드에 대해 동일하게 이됩니다. 이 릴리스에서는 코드가 끝났기 때문에 응용 프로그램 코드를 변경할 수 없습니다. 그러나 위에서 설명한대로 시스템 속성을 설정하기 위해 서버의 시작 설정을 조정할 수 있습니다.

도움 주셔서 감사합니다.

답변

-2

불행히도이 문제의 원인을 파악하지 못했습니다.

<?xml version="1.0" encoding="UTF-8"?> 
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd" 
    updateCheck="false"> 

    <!-- Location of persistent caches on disk 
    <diskStore path="ehcache.disk.store.dir" /> 
    --> 
    .. 

을하고 모든 캐시에 대한 false에 속성을 overflowToDiskdiskPersistent 설정 :

이 문제를 해결하려면 우리는 ehcache.xmldiskStore 요소를 주석에 의해 완전히 디스크 저장소를 사용할 수있다.

4

-Dehcache.disk.store.dir 시스템 속성을 사용하면 여전히 작동해야합니다.
최대 절전 모드 구성을 통해 속성을 설정하는 데 문제가 있습니다.

+0

내 게시물에 설명되어 있듯이, 나는 이것을 이미 시도해 왔으며 나의 시나리오에서는 작동하지 않았다. 설정은 효과없이'-D' 구문을 사용하여 환경 변수 및/또는 시스템 속성으로 제공됩니다. –

1

-Djava.io.tmpdir =/var/tmp/EhCache - $ {SERVER_NAME}을 (를) 사용해 보셨습니까?

관련 문제