весенние рабочие места XD и Кассандра

Я новичок в весне XD...

Я пытаюсь создать задание, которое будет читать CSV-файл и использовать spring-data-cassandra для вставки данных в базу данных Cassandra.

В моем пакетном проекте все в порядке. Я могу упаковать свой пакет и развернуть его на spring xd в /module/job/myjob (я назвал его myjob).

в каталоге myjob есть 2 папки: config (с myjob.xml) и lib (со всеми зависимостями).

Но когда я пытаюсь в оболочке spring xd создать свою работу: job create --definition myjob --name test1

Я получил эту ошибку:

Command failed org.springframework.xd.rest.client.impl.SpringXDException: 
Unexpected exception parsing XML document from URL 
file:/home/fmarchand/programs/spring-xd/spring-xd-1.0.0.RC1/xd/
modules/job/myjob/config/myjob.xml]; 
nested exception is java.lang.IllegalStateException: Unable to load schema 
mappings from location [META-INF/spring.schemas]

И в журналах spring-xd:

Caused by: java.io.FileNotFoundException: /home/fmarchand/programs/spring-xd/spring-xd-1.0.0.RC1/xd/lib/spring-cql-1.0.1.RELEASE.jar (No such file or directory)

Я попытался поместить spring-cql-1.0.1.RELEASE.jar в XD_HOME/lib (мне не нравится помещать туда банки, но он попросил меня сделать это), затем ошибка изменилась:

 Command failed org.springframework.xd.rest.client.impl.SpringXDException: Unexpected 
 exception parsing XML document from URL [file:/home/fmarchand/programs/spring-xd/spring-xd-
 1.0.0.RC1/xd/modules/job/myjob/config/myjob.xml]; nested exception is 
 org.springframework.beans.FatalBeanException: Class 
 [org.springframework.data.cassandra.config.xml.CassandraNamespaceHandler] for namespace 
 [http://www.springframework.org/schema/data/cassandra] does not implement the 
 [org.springframework.beans.factory.xml.NamespaceHandler] interface

Я что-то пропустил точно!

Обновление: если я помещу myjob.xml в $XD_HOME/modules/job и jars в $XD_HOME/lib, все заработает...

Обновление 2: теперь он работает с /modules/job/myjob/config|lib. Я тщательно выбирал все банки, которые мне нужно было поместить в каталог библиотеки модулей. У меня сейчас другая проблема, связанная с производительностью. Я опубликую еще один вопрос для этого.

Спасибо


person Franck MARCHAND    schedule 28.07.2014    source источник


Ответы (1)


Вероятно, это связано с тем, что некоторые зависимости от spring-cql появляются дважды (один раз в myjob/lib и один раз в самом Spring XD). Хотя у нас, вероятно, будет лучшая история для этих сценариев в 1.x, вы можете найти вдохновение в файле сборки модуль PMML. Посмотрите, как if вычисляет разницу между зависимостями модуля и зависимостями XD Dirt и включает только те, которые необходимы. Не всегда есть правильное решение для таких сложных схем загрузки классов, но это может помочь. Конечно, вы также можете получить ту же установку «вручную», выбрав нужные вам банки.

Кроме того, ваш комментарий об обновлении кажется странным. Независимо от того, находится ли xml-определение задания в job/myjob.xml или job/myjob/config/myjob.xml, это не должно иметь абсолютно никакого влияния и вести себя одинаково. Если вы можете поделиться своей точной настройкой, нам было бы интересно изучить ее.

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

person ebottard    schedule 29.07.2014