Функция в GemFire

Я создал серверную функцию в GemFire ​​и попытался развернуть ее в gfsh, я получил исключение, показанное ниже...

Member  | Deployed JAR | Deployed JAR Location
------- | ------------ | ----------------------------------------------------------------------------
server1 |              | ERROR: java.lang.NoClassDefFoundError: com/gemstone/gemfire/cache/Declarable
server2 |              | ERROR: java.lang.NoClassDefFoundError: com/gemstone/gemfire/cache/Declarable
server3 |              | ERROR: java.lang.NoClassDefFoundError: com/gemstone/gemfire/cache/Declarable

person Vigneshwaran    schedule 09.06.2017    source источник
comment
Какую версию GemFire ​​вы используете? Убедитесь, что реализация функции основана на версии GemFire, которую вы закодировали для функции, чтобы она соответствовала версии в GemFire. Кажется, ваша функция реализует интерфейс Declarable, который был бы необходим, например, если бы вы также объявляли свою функцию в cache.xml. Но я вижу, что интерфейс Declarable, на который ссылается ваша функция (?) i, использует упаковку com.gemstone.gemfire, хотя на самом деле GemFire ​​9 был перебазирован на Apache Geode. Так что Declarable на самом деле находится в org.apache.geode.Declarable...   -  person John Blum    schedule 10.06.2017
comment
См. здесь... gemfire-90-javadocs .docs.pivotal.io/org/apache/geode/cache/   -  person John Blum    schedule 10.06.2017
comment
Другими словами, если вы закодировали свою функцию для GemFire ​​8.x или более ранней версии, но используете Pivotal GemFire ​​9 на стороне сервера, это не сработает и является причиной, по которой вы получите CNFE.   -  person John Blum    schedule 10.06.2017
comment
Версия сервера — 9.0.1, а xsd, используемый для servercache.xml — 8.1.   -  person Vigneshwaran    schedule 12.06.2017
comment
Хорошо, так что смотрите мой окончательный ответ ниже...   -  person John Blum    schedule 12.06.2017


Ответы (1)


Приложение Function должно быть написано в соответствии с Pivotal GemFire ​​9.0.x API (http://gemfire-90-javadocs.docs.pivotal.io/), если вы запускаете и развертываете Functions на Pivotal GemFire ​​9.0.x (например, 9.0.1) custer на стороне сервера.

В частности, это означает, что ваш Function должен реализовать org.apache.geode.cache.Declarable интерфейс, особенно когда вы объявляете/регистрируете свое приложение Function в Pivotal GemFire ​​cache.xml.

Я действительно не думаю, что версия DTD/XSD между Pivotal GemFire ​​8.x и 9.x так уж важна, но в целом я бы предпочел >9.x XSD, если вы работаете с Pivotal GemFire ​​9, к вашему сведению.

person John Blum    schedule 12.06.2017