我正在尝试在Fuse服务器中部署Talend 6.1.1 osgi bundle jar。在构建执行期间,Talend例程jar无法解析并面临布线异常。下面是我的功能和保险丝错误日志。 有什么建议吗?
<feature name="test-xxx" version="1.0.0">
<bundle>wrap:mvn:org.talend.testloader.testloader_xml/testloader_xml-bundle/0.1</bundle>
</feature>
ERROR | 6.0.1-1-thread-1 | DeploymentAgent | 86 - io.fabric8.fabric-agent - 1.2.0.redhat-621084 | Unable to update agent
org.osgi.service.resolver.ResolutionException: Unable to resolve root: missing requirement [root] osgi.identity; osgi.identity=test-xxx-feature; type=karaf.feature; filter:="(&(osgi.identity=test-xxx-feature)(type=karaf.feature))" [caused by: Unable to resolve test-xxx-feature/1.0.0: missing requirement [test-xxx-feature/1.0.0] osgi.identity; osgi.identity=test-xxx; type=karaf.feature [caused by: Unable to resolve test-xxx/1.0.0: missing requirement [test-xxx/1.0.0] osgi.identity; osgi.identity=org.talend.testloader.testloader_xml; type=osgi.bundle; version="[0.1.0,0.1.0]"; resolution:=mandatory [caused by: Unable to resolve org.talend.testloader.testloader_xml/0.1.0: missing requirement [org.talend.testloader.testloader_xml/0.1.0] osgi.wiring.package; filter:="(osgi.wiring.package=routines.system.api)"]]]
答案 0 :(得分:0)
您需要将所有必要的功能和配置从Talend ESB安装到Fuse中。理论上这是可能的,因为它们都运行在Apache Karaf上,但它需要做很多工作,我很确定你不会得到Fuse或Talend的支持。
上述错误告诉您包routines.system.api
丢失。
karaf@trun()> exports | grep routines.system.api
routines.system.api | 6.1.1 | 222 | org.talend.esb.job.api
您可以在TESB中使用上述命令来检查哪个包提供包并添加相应的包。
如果你这样做,直到你不再有这样的错误,那么至少捆绑应该解决......但这并不意味着它实际上会起作用。
答案 1 :(得分:0)
为了解决这个问题, 我们需要添加例程包作为&lt;中的第一个导入。 bundle.config.export.package&gt;标记在您的Talend作业POM.xml中。
这将确保您的例程包在容器中开发的Talend作业之前得到部署/解决。
<bundle.config.export.package>routines.system.api,testloaders.test_XML_0_1;uses:="javax.sql,routines.system,routines.system.api"</bundle.config.export.package>