Weblogic 12 找不到 JNDI 绑定

Weblogic 12 Cannot find JNDI binding for

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

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

20210211:20:02:37:923|ERROR|Thread 223|-||||c.o.p.i.I.c.o.p.i.InterceptionMetadata|Cannot find JNDI binding for 'java:comp/env/be.cm.apps.evsb.datasplitter.mdb.GsBOBDataFileNotificationMDB/gsDataFileReader', While trying to look up comp/env/be.cm.apps.evsb.datasplitter.mdb.GsBOBDataFileNotificationMDB/gsDataFileReader in /app/ejb/be.cm.common.vsb-vsb-sync-client-javaee-1.3.0-SNAPSHOT.jar/#RabbitTopicConnectionImpl.

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

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

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

知道为什么会发生这种情况,或者有其他想法吗?

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

您需要在模块 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>