2

春のXDは初めてです...

csv ファイルを読み取り、spring-data-cassandra を使用して Cassandra データベースにデータを挿入するジョブを作成しようとしています。

私のバッチプロジェクトではすべて問題ありません。バッチをパッケージ化して、Spring xd を "/module/job/myjob" (私は myjob と呼びました) にデプロイできます。

「myjob」ディレクトリには、config (myjob.xml を含む) と lib (すべての依存関係を含む) の 2 つのフォルダーがあります。

しかし、春の 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 に配置しようとしました (そこに jar を配置するのは好きではありませんが、そうするように求められました)。その後、エラーが変更されました。

 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

私は確かに何かを逃した!

更新: $XD_HOME/modules/job に myjob.xml を配置し、$XD_HOME/lib に jar を配置すると、動作します ...

更新 2 : /modules/job/myjob/config|lib で動作するようになりました。モジュール ライブラリ ディレクトリに配置する必要のあるすべての jar ファイルを厳選しました。私は今、パフォーマンスの問題である別の問題を抱えています。そのために別の質問を投稿します。

どうも

4

1 に答える 1

2

これはおそらく、spring-cql の依存関係が 2 回 (myjob/lib で 1 回、Spring XD 自体で 1 回) 表示されるためです。これらのシナリオについては 1.x の方が適切な話になる可能性がありますが、できることの 1 つは、PMML モジュールのビルド ファイルでインスピレーションを見つけることです。if がモジュールの依存関係と XD Dirt の依存関係の間の差分を計算し、必要なものだけを含める方法を確認してください。このような複雑なクラスローディング スキームに対して常に正しい解決策があるとは限りませんが、これは役立つ可能性があります。もちろん、必要な瓶を厳選することで、「手作業で」同じセットアップに到達することもできます。

また、あなたの更新コメントは奇妙に感じます。ジョブの xml 定義が含まれているかどうかに関係job/myjob.xmlなく、job/myjob/config/myjob.xmlまったく影響がなく、同じように動作する必要があります。正確な設定を共有していただければ、調査させていただきます。

お役に立てれば

于 2014-07-29T15:02:14.660 に答える