在同样位于 EAR 中的 JAR 中时,WildFly 无法识别 EJB 计时器(@Schedule)
EJB Timer (@Schedule) not recognized by WildFly when inside a JAR which is also inside an EAR
我有一个 EAR 文件,其中包含 3 个 WAR 和 lib/ 文件夹中的一些常见依赖项。其中一个依赖项有一个带有预定方法的 EJB,但服务器似乎无法识别它。日志中没有证据,没有执行代码。
但是当我在 WEB-INF/lib 中使用相同的 jar 部署一个简单的 war 时,它会起作用。我已经尝试使用 maven 插件将 jar 打包为 ejb-jar,但完全没有成功。
对必须进行的事情有什么想法吗?
EAR 的 lib
目录中的 Jar 不被视为 EJB jar,并且在这方面的部署时不考虑它们的内容。 lib
目录的存在只是为了更容易提供库 jar,其 类 自动对 EAR 文件中的所有模块可见。
您的 EAR 文件包含一个 META-INF/application.xml 文件,该文件列出了它包含的各种 modules
。在 Java EE 6 之前,仅考虑将 ejb 模块用于潜在的 EJB。 Java EE 6 和更新版本向该列表添加了网络模块。 web 模块的 WEB-INF/lib 目录中的所有 jar 都被认为是 web 模块的一部分,即使它们包含 ejb-jars。在 web 模块中找到的任何 ejb-jar.xml 文件都合并在一起。即使将 web 模块部署为独立 WAR 文件,这也适用。
我有一个 EAR 文件,其中包含 3 个 WAR 和 lib/ 文件夹中的一些常见依赖项。其中一个依赖项有一个带有预定方法的 EJB,但服务器似乎无法识别它。日志中没有证据,没有执行代码。
但是当我在 WEB-INF/lib 中使用相同的 jar 部署一个简单的 war 时,它会起作用。我已经尝试使用 maven 插件将 jar 打包为 ejb-jar,但完全没有成功。
对必须进行的事情有什么想法吗?
EAR 的 lib
目录中的 Jar 不被视为 EJB jar,并且在这方面的部署时不考虑它们的内容。 lib
目录的存在只是为了更容易提供库 jar,其 类 自动对 EAR 文件中的所有模块可见。
您的 EAR 文件包含一个 META-INF/application.xml 文件,该文件列出了它包含的各种 modules
。在 Java EE 6 之前,仅考虑将 ejb 模块用于潜在的 EJB。 Java EE 6 和更新版本向该列表添加了网络模块。 web 模块的 WEB-INF/lib 目录中的所有 jar 都被认为是 web 模块的一部分,即使它们包含 ejb-jars。在 web 模块中找到的任何 ejb-jar.xml 文件都合并在一起。即使将 web 模块部署为独立 WAR 文件,这也适用。