我们正在从 EAP 6 迁移到 EAP 7,这是一个使用 Apache Camel 的项目。在这个项目中,我们使用 EAP 7 提供的 CDI 2.0 规范使用依赖注入。我们正在从使用 CDI 1.X 规范的 EAP 6.4 迁移。我们使用的 Apache Camel 版本是 2.17.6
我们已经用代码中的适当更改更新了我们的项目,但是在服务器中部署应用程序的那一刻,我们收到了这个错误,来自 Camel 依赖项:
Exception 0 :
org.jboss.weld.exceptions.DeploymentException: WELD-001408: Unsatisfied dependencies for type CdiCamelExtension with qualifiers @Default
at injection point [BackedAnnotatedParameter] Parameter 3 of [BackedAnnotatedMethod] @Produces private static org.apache.camel.cdi.CdiCamelFactory.typeConverter(InjectionPoint, @Any Instance<CamelContext>, CdiCamelExtension)
at org.apache.camel.cdi.CdiCamelFactory.typeConverter(CdiCamelFactory.java:0)
似乎是与Apache Camel相关的问题,带有签名的第3个参数,无法找到获取对象的方法将其注入此处。
骆驼库camel-cdi-2.17.6jar文件包含org.apache.camel.cdi.CdiCamelExtension类,这个jar中的服务配置指示使用这个CdiCamelExtension。
我们还可以看到,在这个库中 beans.xml 文件包含:
<beans version="1.0" bean-discovery-mode="all">
<scan>
<exclude name="org.apache.camel.cdi.Main"/>
</scan>
</beans>
有了这一切,我们看不出为什么无法获取 CdiCamelContext。
这可能是因为 EAP 7 使用的是 CDI 2.0,而 Camel 2.17.6 无法与此规范兼容吗?我们对 Camel 没有太多经验,因此我们不确定是否会遗漏一些东西。
谢谢你的帮助