java - 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 模块之前,该应用程序运行良好。
如果有什么不清楚的地方请告诉我,因为这不是一个容易描述的问题。
解决方案
您需要在 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>
推荐阅读
- flutter - 颤振等待直到 AwesomeDialog 关闭
- javascript - 智能感知与电子js所需的模块和反应
- c# - 为什么 Visual Studio 2019 UWP XAML 设计器显示空白屏幕?
- discord.py - Discord.py 警告命令
- php - 是否可以将预加载器用于 cli 脚本而不是用于 php-fpm?
- python - 用于 pip 标志的 pip conda 互操作性
- asp.net-core - 嵌套循环选择最小定义值 asp.net
- python - Numpy 将位打包成 32 位 little-endian 值
- javascript - 对象数组在 React 中未完全渲染,并在控制台上显示与实际不匹配的数组长度
- android-studio - 使用 SDK 30 范围存储从文件路径读取图像