1

我们正在从 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 没有太多经验,因此我们不确定是否会遗漏一些东西。

谢谢你的帮助

4

1 回答 1

0

添加<module name="org.apache.camel" annotations="true" meta-inf="true"/>到standalone.xml 的全局模块对我有用。

于 2021-04-07T10:20:12.597 回答