Pivotal GemFire ​​9.3.0: XML-конфигурация Spring Data GemFire ​​в кластере GemFire - PullRequest
0 голосов
/ 30 мая 2018

Я переношу свой кластер GemFire ​​с 8.2.7 (с Spring Data GemFire ​​1.6.0.RELEASE) на Pivotal GemFire ​​9.3.0 (SDG 2.0.7.RELEASE).Я использовал spring-context.xml (объявленный под тегом initializer в cache.xml) для инициализации регионов при запуске серверов кэширования на каждом узле.

Когда я пытаюсь повторно использовать тот же spring-context.xml для Pivotal GemFire ​​9.3.0, мой тег Spring beans не определяется командой gfsh, и я получаю следующее исключение:

Caused by: org.xml.sax.SAXParseException; lineNumber: 9; columnNumber: 107; cvc-elt.1: Cannot find the declaration of element 'beans'.

        at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:203)

        at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:134)

spring-context.xml:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:gfe="http://www.springframework.org/schema/geode"
       xmlns:util="http://www.springframework.org/schema/util"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="
                http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/geode http://www.springframework.org/schema/gemfire/spring-geode.xsd
                http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">

    <util:properties id="gemfireProperties">
        <prop key="log-level">config</prop>
        <prop key="locators">hostA[10334],hostB[10334]</prop>
    </util:properties>

    <bean id="mappingPdxSerializer" class="org.springframework.data.gemfire.mapping.MappingPdxSerializer"/>

    <gfe:cache properties-ref="gemfireProperties" pdx-serializer-ref="mappingPdxSerializer"/>

    <gfe:replicated-region id="Product">
    </gfe:replicated-region>

    <gfe:replicated-region id="ProductCustomer">
    </gfe:replicated-region>

</beans>

Я обновил пути схемы XML с "gemfire" до "geode" на основе документации Spring для spring-data-gemfire:2.0.7.RELEASE.

Попытка с GF 9.1.1 и SDGF 2.0.7.(SDGF баночка помещается в lib)

Сценарий:

#!/bin/sh
export PATH=$PATH:/var/tmp/user/gemfire/9.1.1:/opt/jdk/1.8.0_71l64/bin/:/var/tmp/user/gemfire/9.1.1/bin/
export GEMFIRE=/var/tmp/user/gemfire/9.1.1/


for i in `ls  /var/tmp/user/gemfire/9.1.1/lib/*.jar`
do
  CLASSPATH=${CLASSPATH}:${i}
done
CLASSPATH=$CLASSPATH:/var/tmp/user/gemfire/9.1.1/config
#echo $CLASSPATH

if [ -e "/var/tmp/user/gemfire/9.1.1/config/spring-context.xml" ]; then
   echo "File exists"
else
 echo "File does not exist"
fi


gfsh start server --name=server1 --server-port=40405 --classpath=$CLASSPATH --spring-xml-location=/var/tmp/user/gemfire/9.1.1/config/spring-context.xml  --locators=hostA[10334],hostB[10334] --mcast-port=0

ОБНОВЛЕНИЕ:

FileNotFoundException брошено:

Caused by: java.io.FileNotFoundException: class path resource [var/tmp/sn17180/gemfire/9.1.1/config/spring-context.xml] cannot be opened because it does not exist

        at org.springframework.core.io.ClassPathResource.getInputStream(ClassPathResource.java:172)

        at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:330)

        ... 17 more

Я дал разрешение на все файлы, и -e "/" в моем скрипте также печатает "Файл существует".

ОБНОВЛЕНИЕ:

cache.xml

<?xml version="1.0" encoding="UTF-8"?>
<cache xmlns="http://geode.apache.org/schema/cache"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://geode.apache.org/schema/cache http://geode.apache.org/schema/cache/cache-1.0.xsd"
       version="1.0">

  <region name="Parent" refid="REPLICATE">
    <region name="Child" refid="REPLICATE"/>
  </region>

</cache>

gemfire-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:gfe="http://www.springframework.org/schema/gemfire"
       xmlns:util="http://www.springframework.org/schema/util"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="
                http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/gemfire http://www.springframework.org/schema/gemfire/spring-gemfire.xsd
                http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">

    <util:properties id="gemfireProperties">
        <prop key="locators">xyz[10334],xyx[10334]</prop>
        <prop key="mcast-port">0</prop>
    </util:properties>

    <bean id="autoSerializer" class="org.apache.geode.pdx.ReflectionBasedAutoSerializer"/>

    <gfe:cache properties-ref="gemfireProperties" cache-xml-location="cache.xml" pdx-serializer-ref="autoSerializer" pdx-read-serialized="true"/>   

</beans>

1 Ответ

0 голосов
/ 30 мая 2018

Pivotal GemFire ​​прекратил поставку с Spring Data GemFire ​​ в каталоге $GEMFIRE_HOME/lib начиная с серии выпуска 9.x.Для этого есть две основные причины.

1) Во-первых, было несколько загадкой, что Pivotal GemFire ​​зависел от SDG, что было полностью для gfsh>start server --name=SpringConfiguredServer --spring-xml-location-/path/to/spring/context.xml, когда SDG зависел от Pivotal GemFire, который явно формируеткруговая зависимость.

2) Pivotal GemFire ​​значительно отстает от текущего состояния экосистемы Spring , когда оно относится к версиям.Даже самый последний выпуск, 9.3.0, поставляется с устаревшими Spring JAR, например, core Spring Framework 4.3.13.RELEASE, когда ядро ​​ Spring Framework 4.3.17.RELEASE уже установленодоступно, а также 5.0.6.RELEASE, с 5.1 на горизонте.

Сказав это, все еще можно настроить и загрузить серверы Pivotal GemFire ​​с помощью Spring при запуске с Gfsh с использованием команды start server, опция --spring-xml-location.Вам просто нужно загрузить соответствующую версию SDG на основе используемой вами версии Pivotal GemFire ​​(например, (9.3.0)) и поместить SDG в classpath при запуске сервера.

ПРИМЕЧАНИЕ: в настоящее время SDG 2.1.0.M3 (SD Lovelace ) является единственной версией, основанной на Pivotal GemFire ​​9.3 и более поздних версиях;в настоящее время установлено на 9.5.0.

ПРИМЕЧАНИЕ: также нет, я не помню, сталкивался ли я с какими-либо API, ломающими изменения между постепенным обновлением SDG Lovelace с Pivotal GemFire ​​9.3, затем до 9.4 и, наконец, до 9.5,Если у вас есть проблемы с spring-data-gemfire:2.1.0.M3, вы также можете использовать spring-data-gemfire:2.1.0.M2, который был на основе Pivotal GemFire ​​9.3 в то время.

Так что следуя приведенному выше рецепту, вы бывыполните следующее ...

gfsh> start server --name=SpringConfiguredServer --classpath=/file/system/path/to/spring-data-gemfire22.1.0.M3.jar --spring-xml-location=/classpath/to/your/spring-context.xml

Это должно работать!

Кроме того, вам не нужно переключать схемы с "gemfire" на "geode".Когда вы используете Spring Data GemFire, используйте схему «spring-gemfire».Когда вы используете Spring Data Geode, используйте схему «spring-geode».Либо, вероятно, будет работать, но ...

Надеюсь, это поможет!

-j

...