2016-02-04 4 views
0

Я использую аннотацию Coherence @PortableProperty для аннотирования кешированных объектов для сериализации POF. Например:Странная ошибка от когерентности: «Для свойства необходимо указать индекс POF ...»

@Portable 
public class Product implements Comparable<Product> { 

    @PortableProperty(0) 
    private String acronym; 

    // other properties and getters/setters ... 
} 

pof-config выглядит следующим образом:

<?xml version="1.0"?> 
<pof-config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns="http://xmlns.oracle.com/coherence/coherence-pof-config" 
    xsi:schemaLocation="http://xmlns.oracle.com/coherence/coherence-pof-config 
    http://xmlns.oracle.com/coherence/coherence-pof-config/1.2/coherence-pof-config.xsd"> 

    <user-type-list> 
     <!-- include all "standard" Coherence POF user types --> 
     <include>coherence-pof-config.xml</include> 

     <user-type> 
      <type-id>1001</type-id> 
      <class-name> 
       com.xyz.Product 
      </class-name> 
     </user-type> 

     <!-- More user-type definitions --> 

    </user-type-list> 
</pof-config> 

Когда администратор сервера пытается развернуть мой ГАР, он получает следующее сообщение об ошибке:

An error occurred during activation of changes, please see the log for details. (Wrapped) (Wrapped: error creating class "com.tangosol.io.pof.ConfigurablePofContext") A POF Index must be specified for the property com.xyz.Product#acronym by specifying within the annotation or enabling autoIndexing on the Portable annotation

Но acronym Недвижимость is аннотируется с индексом (0). Я даже декомпилировал файл .class из GAR, чтобы проверить, есть ли аннотация.

Любые идеи, которые могут вызывать ошибку при развертывании?

+0

Пожалуйста, поделитесь своим pof-config.xml –

+0

@ArkadiyVerman, я обновил вопрос с помощью моей pof-config –

+0

не вижу никакой проблемы с вашими определениями, она выглядит так же в моей программе. единственное, что я могу предложить, это проверить флаги конфигурации, особенно Dtangosol.pof.config. –

ответ

-1

acronym как вы определили это поле, а не свойство.

Добавить геттер и сеттер, сделать их общедоступными и поместить аннотацию на геттер.

+0

У него уже есть геттер и сеттер. Я попытаюсь переместить аннотацию, но документация Coherence (https://docs.oracle.com/middleware/1212/coherence/COHDG/api_pof.htm#COHDG5590) гласит: «@PortableProperty - маркирует переменную-член или метод accessor как атрибут сериализации POF. " –

+0

Этот ответ прост недействителен. Вам не нужны геттеры/сеттеры для сериализации POF. И даже если они у вас есть, они будут игнорироваться сериализатором, если аннотация помещается в поле, а не на геттер. –