我刚开始玩XD ......
我正在尝试创建一个读取csv文件的作业,并使用spring-data-cassandra在Cassandra数据库中插入数据。
我的批处理项目中的一切都很好。我可以打包我的批处理并将它部署到spring xd到“/ module / job / myjob”(我称之为myjob)。
在“myjob”目录中有2个文件夹:config(带有myjob.xml)和lib(带有所有依赖项)。
但是当我在spring xd shell中尝试创建我的工作时: 职位创建 - 定义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
我肯定错过了一些东西!
更新:如果我将myjob.xml放在$ XD_HOME / modules / job和$ XD_HOME / lib中的jars中就可以了......
更新2 :现在可以使用/ modules / job / myjob / config | lib。我做了一个樱桃挑选我必须放在模块库目录中的所有罐子。我现在有另一个问题是性能问题。我将发布另一个问题。
THX
答案 0 :(得分:2)
这可能是因为spring-cql的某些依赖性出现了两次(一次在myjob / lib中,一次在Spring XD中)。 虽然我们可能会在1.x中为这些场景提供更好的故事,但您可以做的一件事就是在the PMML module的构建文件中找到灵感。了解如何计算模块依赖关系和XD Dirt依赖关系之间的差异,并且仅包括那些必要的差异。这样的复杂类加载方案并不总是正确的解决方案,但这可能会有所帮助。当然,您也可以通过樱桃挑选您需要的罐子来获得相同的设置#34;
此外,您的更新评论感觉很奇怪。作业的xml定义是job/myjob.xml
还是job/myjob/config/myjob.xml
应该具有绝对零影响并且行为相同。如果您可以分享您的确切设置,我们有兴趣调查一下。
希望这有帮助