您如何将 @Inject 与带有(一个或多个)WAR 文件的 ejb-jar 一起使用?

How do you use @Inject with an ejb-jar with (one or more) WAR files?

使用 GlassFish,为了保持整洁,我想将所有业务逻辑放入一个 EJB JAR 中。然后我有 2 WAR 个文件。

每个 WAR 文件都需要使用 app-logic-ejb JAR 中的 EJB。这个 EJB JAR 包含主要的持久性单元。但是我发现 WAR 文件中任何 Java 的任何 app-logic-ejb EJB 的 @Inject 都不起作用。

此外,我正在努力避免使用 EAR。

Java EE 7 tutorial的帮助下终于搞定了。

即使 app-logic-ejb 中的 bean 在同一个 GlassFish 上,也需要将它们注释为远程 bean。然后 WAR 文件使用 @EJB 注入(而不是 @Inject)到 WAR 文件中的正确接口。

@EJB
TestBeanInterface t;

要在 EJB JAR 和 War 文件之间共享接口,需要一个 Java 库。

所以为了让它工作,事实证明我需要:

  • 应用程序库
  • app-logic-ejb
  • 应用程序前端-war
  • 应用后端-war