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>
我们有一个使用 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>