【问题标题】:Inject of remote EJB interface into external module将远程 EJB 接口注入外部模块
【发布时间】:2017-03-13 19:32:06
【问题描述】:

我有一个包含三个模块的 EAR 应用程序:

  • bean 在“app-ejb”模块中
  • 远程接口在“app-remote”中
  • 网络服务在“app-war”中
  • app-ejb 和 app-war 使用 app-remote 作为库。

全部打包在“app.ear”中。

这工作正常,但现在我必须在 EAR 应用程序之外使用相同的 bean,并且注入不起作用。

我在 app-ejb 中有:

@Stateless
@LocalBean
public class Services implements ServicesRemote {
  [...]
}

以及他在 app-remote 中的远程界面:

@Remote
public interface ServicesRemote {
  [...]
}

在我的 app-war 中,我可以毫无问题地注入远程 bean:

@Stateless
@LocalBean
public class UseServices {
  @EJB
  private ServicesRemote services;
  [...]
}

无论如何,在我的外部 ejb 应用程序中,作为独立部署并使用与库相同的 ejb-remote,如果我尝试像这样注入相同的 EJB:

@Stateless
@LocalBean
public class UseServicesFromAnotherApp {
  @EJB
  private ServicesRemote services;
  [...]
}

Glassfish (4.1) 给我一个错误“Class [Lcom/[...]/ServicesRemote; ] not found”。

这是预期的吗?如何正确注入远程 bean?

【问题讨论】:

  • 你能发布整个日志错误吗?
  • 没有“完整的错误日志”,我得到的唯一一行是:[2016-10-31T14:38:47.657-0300] [glassfish 4.1] [SEVERE] [] [global] [tid : _ThreadID=43 _ThreadName=admin-listener(3)] [timeMillis: 1477935527657] [levelValue: 1000] [[ Class [Lcom/..../ServicesRemote; ] 未找到。加载 [ class com....UseServicesFromAnotherApp ]]] 时出错

标签: java jakarta-ee ejb


【解决方案1】:

这个问题可能是由一些热部署产生的,使 glassfish 不稳定。 当我重新启动 glassfish 时,我的代码开始正常工作(它实际上仍在工作)。

很抱歉在没有尝试先重新启动 glassfish 的情况下在此处发布。

【讨论】:

    【解决方案2】:

    注入不适用于远程接口。 “可注入”的 Bean 存在于容器的 JVM 中,并且可用于注入到同一应用程序中的其他 Bean。这同样适用于访问同一容器中另一个应用程序中的 bean,尽管应用程序可能存在于同一个 JVM 中。由于远程方法源自另一个 JVM 或另一个应用程序,因此无法进行注入。您必须改用 JNDI 查找来获取对远程 bean 的引用。

    出于个人喜好,我会远离 EJB Remote 接口,而是使用另一种“远程处理”技术,例如 REST。

    【讨论】:

    • 我有很多 java EE 应用程序使用远程接口并且工作正常。实际上,您写的内容不正确,因为 oracle 文档说“客户端访问实现远程业务接口的企业 bean 是通过依赖注入或 JNDI 查找完成的”docs.oracle.com/javaee/6/tutorial/doc/gipjf.html#gipiu - 事实上,当我重新启动 glassfish 时,注入开始正常工作,它实际上仍然可以正常工作。
    • 不是普通的 Glashfish 用户。我对此的理解是,只要应用程序同时包含 ejb.jar 和可能是另一个战争、ejb 模块等的客户端,您就可以注入一个 Remote。当可以使用本地接口时,我看不到它的用处而是。
    • 如果您希望您的应用在需要分离 ejb 和 war 模块时准备就绪,这将非常有用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-11
    • 2011-02-12
    • 1970-01-01
    • 2012-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多