У нас есть существующее приложение, которое использует кластер 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 как на клиент, так и на прокси, но я не вижу сообщений, которые необычны. Когда я запускаю без прокси-сервера, клиент может помещать те же объекты в кеш без каких-либо проблем.