JDO 설치시 L2 캐시를 사용하려고합니다. 봄의 구성은 다음과 같습니다JDO L2 캐시 SingleFieldIdentity
<prop key="datanucleus.cache.level2.type">spymemcached</prop>
<prop key="datanucleus.cache.level2.memcached.servers">localhost:11211</prop>
그래서 접두사는 기본 "datanucleus"입니다.
문제는 SingleFieldIdentity가있는 모든 객체가 "datanucleus ###"키로 표시된다는 것입니다. ###은 해당 키에 클래스 이름이없는 ID의 문자열 표현입니다.
샘플 클래스 :
@PersistenceCapable(detachable="true", table="sites", cacheable="true")
public class Site
implements Serializable {
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
public Long id;
}
나는 예를 들어, 계정에 대한 또 다른 캐시 클래스가 있습니다. ID가 7 인 계정은 "datanucleus7"로 memecached에 저장되므로 id = 7 인 사이트를 캐시에서 가져 오면 모든 것이 엉망입니다. SingleFieldIdentity에 대한
public class SpymemcachedLevel2Cache extends AbstractLevel2Cache
{
...
public CachedPC get(Object oid)
{
return (CachedPC) client.get(cacheName + oid.toString());
}
...
}
그러나 oid.toString() (. 예컨대 LongIdentity) 더 클래스 정보와 간단한 번호는 : datanucleus 캐시 패키지에서
클래스 SpymemcachedLevel2Cache (SpymemcachedLevel2Cache.java)가있다.그래서 질문은 : 어떻게 그 행동을 바꿀 수 있습니까? SpymemcachedLevel2Cache를 다시 구현해야합니까?
if (nucleusCtx.getApiAdapter().isSingleFieldIdentity(id))
{
String targetClassName = nucleusCtx.getApiAdapter().getTargetClassNameForSingleFieldIdentity(id);
...
어떻게 spimecached에서 GAE를 사용할 수 있습니까? 찾을 수있는 유일한 문서는 javax.cache를 사용하는 것입니다. – eeeeaaii