首页 > 解决方案 > Weblogic 12找不到JNDI绑定

问题描述

我们有一个使用 EJB 的多模块 Java EE 应用程序。

这是我们得到的错误示例:

20210211:20:02:37:923|错误|线程 223|-||||copiIcopiInterceptionMetadata|找不到“java:comp/env/be.cm.apps.evsb.datasplitter.mdb.GsBOBDataFileNotificationMDB/gsDataFileReader”的 JNDI 绑定, 尝试在 /app/ejb/be.cm.common.vsb-vsb-sync-client-javaee-1.3.0 中查找 comp/env/be.cm.apps.evsb.datasplitter.mdb.GsBOBDataFileNotificationMDB/gsDataFileReader -SNAPSHOT.jar/#RabbitTopicConnectionImpl。

我们无法在线或在文档中找到有关此错误的信息。

vsb-sync-client-javaee是一个外部依赖项,我们将其作为类型 ejb 导入到模块中,然后将其作为 ejb 类型导入到全局 ear 项目中的 pom 依赖项文件中。
RabbitTopicConnectionImpl这是该依赖项中的 EJB。

此处的示例类:是在同一 EAR中的另一个gsDataFileReader模块中使用的 EJB 。该模块既声明又注入 EJB。 对于此模块中的每个 EJB(本地),我们都会在 Weblogic 中接收到完整的错误流。 第一个模块(vsb-sync-client-javaee)依赖于第二个模块,但反之则不然。 看起来好像第二个模块试图在第一个模块中查找 EJB,这是没有意义的。 更重要的是,因为 EjB 是从该模块中声明的。



知道为什么会发生这种情况,或任何替代想法吗?

请注意,在我们添加外部 vsb-sync-client-javaee EJB 模块之前,该应用程序运行良好。
如果有什么不清楚的地方请告诉我,因为这不是一个容易描述的问题。

标签: javaweblogicjava-ee-6

解决方案


您需要在 resources/META-INF 下将 beans.xml 文件添加到您的模块,其中包含以下内容:

<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
    http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd"
       bean-discovery-mode="all"
       version="1.1">
</beans>

推荐阅读