2009-07-23 4 views
4

Я использую Tangosol Coherence v3.2.2b371. Можно ли кэшировать объекты, которые не реализуются Serializable через NamedCache api? Или это зависит от конфигурации?Может ли Tangosol Coherence кэшировать несериализуемые объекты?


Edit: Для уточнения, я пытаюсь кэшировать скомпилирован javax.xml.xpath.XPathExpression объектов.

ответ

2

Чтобы сохранить объект в кэше он должен быть сериализации, но не должны реализовывать Serializable. В частности, он может использовать POF, который более эффективен во времени и в памяти, чем Serializable.

POF требует некоторой дополнительной конфигурации, описанной в статье I, связанной с.

+0

Привет, тангобол, вы связали состояние, в котором POF начинается с Coherence 3.2, а не 3.4. –

+0

Вы правы. POF был введен в 3.2. Я исправил свой ответ. Я работал только с 3.4 и 3.5. –

1

Я угадываю (просто догадываюсь), что ответ «нет». Однако ознакомьтесь с интерфейсом PortableObject. Предполагается, что это альтернатива java.io.Serializable, но по соображениям производительности. Вы должны проверить, может ли он использоваться для замены интерфейса Serializable.

PortableObject JavaDoc

1

Когерентность может кэшировать несериализуемые, но POF-осведомленные (либо PortableObject, либо объекты с зарегистрированным PofSerializer), начиная с 3.4.

До этого POF (или любой другой пользовательский Serializer, если на то пошло) не использовался в качестве хранилища (в пределах базовой карты) и формата транскона в кластере (по протоколу TCMP), он использовался только в качестве транспортного протокола в TCP * Extend.

1

Это зависит от конфигурации. Если вам нужно хранить объекты, которые не поддерживают сериализацию, вам необходимо реализовать реализацию com.tangosol.io.Serializer, которая может выполнять сериализацию от имени несериализуемых объектов. Вы можете обнаружить, что для обычных случаев это уже поддерживается, например, PofSerializer.