2016-07-25 9 views
0

요약하면 Apache JCS를 사용하여 자체 객체를 관리하는 라이브러리를 만들었습니다. 를 사용하여 파일에서 구성을 읽고 캐시 관리자로로드하면 테스트 응용 프로그램으로 라이브러리를 테스트 할 때 모든 것이 잘 작동합니다.라이브러리에서 사용할 때 Apache JCS 캐시 confilicts 만들기

그러나 실제 응용 프로그램에서 응용 프로그램 관련 개체를 관리하기 위해 JCS도 사용하고 있는데 문제가 발생합니다.

응용 프로그램이 부팅 될 때 먼저 응용 프로그램 캐시 관리자를 인스턴스화하고 모든 구성을 성공적으로로드하고 의도 한대로 정확하게 만듭니다.

그러나 라이브러리의 캐쉬 관리 프로그램에 대해서는 구성을 전혀 사용하지 않으며 일부 기본 캐쉬 인스턴스를 인스턴스화한다고합니다. 내 라이브러리의 구성의 예를 들어 내가 가진 : 그것은 관련 구성을 사용하지 않는 보여주는 증거는

jcs.auxiliary.DCACHE=org.apache.commons.jcs.auxiliary.disk.indexed.IndexedDiskCacheFactory 
jcs.auxiliary.DCACHE.attributes=org.apache.commons.jcs.auxiliary.disk.indexed.IndexedDiskCacheAttributes 
jcs.auxiliary.DCACHE.attributes.DiskPath=LIB_DATA_DIR 
jcs.auxiliary.DCACHE.attributes.MaxPurgatorySize=10000 
jcs.auxiliary.DCACHE.attributes.MaxKeySize=10000 
jcs.auxiliary.DCACHE.attributes.OptimizeAtRemoveCount=300000 
jcs.auxiliary.DCACHE.attributes.MaxRecycleBinSize=7500 

:

jcs.region.MYREGION=DCACHE 
jcs.region.MYREGION.cacheattributes=org.apache.commons.jcs.engine.CompositeCacheAttributes 
jcs.region.MYREGION.cacheattributes.MaxObjects=1200 
jcs.region.MYREGION.cacheattributes.MemoryCacheName=org.apache.commons.jcs.engine.memory.lru.LRUMemoryCache 
jcs.region.MYREGION.cacheattributes.DiskUsagePattern=UPDATE 

가 DCHACHE 보조는 다음과 같이 정의된다 는 SWAP와 MYREGION의 DiskUsagePattern를 생성 (또한 DiskUsagePatternName을 시도했지만 어떤 차이도 만들지 않았습니다.)

DisckPath로 LIB_DATA_DIR을 사용하지 않습니다. 대신 Application 구성에 대해 이미 정의한 것을 사용합니다.

응용 프로그램의 JCS 관련 코드에 주석을 달면 라이브러리의 JCS에서 잘 작동합니다.

JCS.getInstance ("cache_name")도 시도했지만 차이는 없습니다.

혹시 들으셨습니까?

답변

0

문제를 파고 들자 JCS는 분리 된 구성 파일을 처리하는 데 어려움을 겪었습니다. JCS는 자바 가상 머신마다 설정 파일을 사용하여 한 번만 구성 할 수 있습니다.

그래서 한 파일을 사용하여 JCS를 구성했습니다. 이렇게하면 응용 프로그램이 JCS 전나무를 인스턴스화하면 라이브러리의 구성도로드되고 나중에 라이브러리 내부의 모든 것이 잘 작동합니다.