2015-02-18 3 views
1

У нас есть существующее приложение, которое использует кластер Oracle Coherence для размещения/получения POFable-объектов в кеш кластера. Я пытаюсь изменить его, чтобы использовать расширенный прокси-сервер, чтобы сделать то же самое. До сих пор мне удалось запустить отдельный прокси-процесс, который подключается к нашему кластеру, и я изменил конфигурацию кеша для существующего приложения, чтобы подключиться к расширенному прокси. При запуске все выглядит счастливым и связанным. Но когда я пытаюсь вставить что-то в кеш, объекты заканчиваются тем, что все поля не инициализированы.Coherence Extend Proxy, помещающий неинициализированные объекты в кеш

Я не изменил код клиентского приложения, когда дело доходит до ввода пар ключ/значение в кеш, поскольку, как я понимаю, использование расширения должно быть прозрачным для клиентов. Вот код, который помещает объекты в кэш:

// Initiliaze POF object from DB; MyObject implements EvolvablePortableObject 
MyObject o = new MyObject(); 
o.setField1(...); 
o.setField2(...); 
o.setField3(...); 

CacheFactory.getCache("cache-name").put(key, o, expireTime); 

Конечным результатом является то, что объект попадает в кэш со всеми его полями инициализируется (т.е. все нули и нули). Я использовал отладчик, чтобы подтвердить, что внутри клиента объект полностью инициализирован, и все его поля заполняются, как я ожидаю. Аналогично, я использовал отладчик, чтобы показать, что объект не инициализирован при вызове MyObject.writeExternal() внутри прокси-приложения. Так что что-то ломается между клиентом и прокси, но я не уверен, что. Оба указывают на один и тот же файл конфигурации POF и имеют один и тот же путь к классам, поэтому они должны видеть одни и те же схемы POF и объекты Java. Я перешел на уровень 9 на уровне 9 как на клиент, так и на прокси, но я не вижу сообщений, которые необычны. Когда я запускаю без прокси-сервера, клиент может помещать те же объекты в кеш без каких-либо проблем.

ответ

0

В случае, если у кого-либо еще есть эта проблема, основной причиной стало отсутствие тегов. Я уже это определено в акцепторной-конфигурации для продления службы:

 <serializer> 
      <class-name>com.tangosol.io.pof.ConfigurablePofContext</class-name> 
      <init-params> 
       <init-param> 
       <param-type>java.lang.String</param-type> 
       <param-value>pof-config.xml</param-value> 
       </init-param> 
      </init-params> 
     </serializer> 

(то же самое, что нужно для вызова службы, если вы определяете один).

Но также пришлось добавить аналогичный конфиг для клиента конфигурации, чтобы сделать вещи матч:

<defaults> 
    <serializer> 
    <class-name>com.tangosol.io.pof.ConfigurablePofContext</class-name> 
    <init-params> 
     <init-param> 
      <param-type>java.lang.String</param-type> 
      <param-value>pof-config.xml</param-value> 
     </init-param> 
    </init-params> 
    </serializer>