2015-01-10 3 views
0

키를 문자열로, List Intervals>와 같이 값을 넣으려고 시도하는 중 오류가 발생합니다. I 개체, 개체로 일반화로서 DAO에 넣어 방법이> 그래서 그것은 차 캐시Gridgain 오류가 표시되지 않습니다. org.gridgain.grid.GridException : 객체를 직렬화하지 못했습니다.

입력을 사용할 수

[MAC4, [[email protected]]] 
[MAC3, [[email protected]]] 
[MAC1, [[email protected], [email protected]]] 

MAC * 인터벌 개체 값이다의 키리스트이다. 코드 : 당신이있어 실제 오류를 부착하는 것을 잊었다처럼 griddao

public void put(String cacheName, Object key, Object value) throws GridException { 
       GridCache<Object, Object> cache = caches.get(cacheName); 

       if (cache != null) { 
        cache.put(key, value); 
       } 
       else { 
        LOG.error("Cache is null"); 
       } 

답변

1

에서

griddao.put("intervals",tuple.getValue(0),tuple.getValue(1)); 

것 같습니다. 전체 예외 추적을 제공하십시오.

지금은 Interval 클래스가 Serializable을 구현하는지 확인할 수 있습니다. 그렇지 않은 당신이 그것을 변경할 수없는 경우, 다음과 같이 Serializable 인터페이스를 필요로하지 마샬 구성 :

<bean id="grid.cfg" class="org.gridgain.grid.GridConfiguration"> 
    ... 

    <property name="marshaller"> 
     <bean class="org.gridgain.grid.marshaller.optimized.GridOptimizedMarshaller"> 
      <property name="requireSerializable" value="false"/> 
     </bean> 
    </property> 

    ... 
</bean> 
+0

감사 발렌틴 .. 내가 클래스를 간격을 직렬화 구현 후, 나는 아래의 오류가 발생했습니다 : 어떻게 노드에 클래스를 추가합니까? [05 : 15 : 27,030] [심각도] [gridgain- # 55 % sys-null %] [GridCacheIoManager] 메시지 처리 실패 [senderId = 066898ce-7223-4977-98b2-0c1b155cc616] class org.gridgain. grid.GridException : 비 정렬을 위해 주어진 클래스 로더가있는 클래스를 찾지 못했습니다 (모든 노드에서 동일한 버전의 모든 클래스를 모든 노드에서 사용 가능하게하거나 피어 클래스 로딩을 활성화하십시오). org.gridgain.grid.kernal.processors.cache.GridCacheDeploymentManager $ CacheClassLoader @ 4f543426 – user3072054

+0

또한 위에서 언급 한 바와 같이 Seializable을 필요로하지 않는 marshaller 설정을 시도했습니다.이 경우 'grid'는 NULL로 설정되어 GridCache cache = grid.cache (cacheName) 라인이 NULL 포인터로 실패합니다 예외. "requireSeializable"을 설정하지 않으면 이런 일이 발생하지 않습니다. – user3072054

+1

나는 이것을 알아낼 수 있었다. 클래스를 직렬화 할 수 있도록 ../lib/ext에 항아리를 추가해야했습니다. – user3072054