【问题标题】:Remote EJB not found未找到远程 EJB
【发布时间】:2016-06-25 13:06:43
【问题描述】:

我在 EAR 中部署了一个 EJB:

@Stateless
@Remote(ActorProvider.class)
public class ActorServiceClient implements Serializable, ActorProvider { ... }

这里是远程接口:

@Remote
public interface ActorProvider { ... }

现在,我使用以下类部署了一个单独的 WAR:

@Singleton
@Startup
public class ShiroStartup implements IShiroStartup {
    @EJB 
    ActorProvider actorProvider;
...
}

我的想法是我在 EAR 中部署我的参与者服务,并且我单独部署一个客户端项目,该项目获取 Shiro 用于授权的ActorProvider(这是辅助的,但我正在使用它)。

我在启动 ShiroStartup 时遇到错误(在我部署了包含提供程序的 EAR 之后):

找不到用于绑定领域的“consumers.ActorProvider”类型接口的 EJB。ShiroStartup/actorProvider

为什么我不能这样做?如果我将 Provider 置于与 ShiroStartup 的战争中,它可以正常工作,但它不会跨部署注入。这是为什么?这是使用 JavaEE 7 的 Wildfly 9。

【问题讨论】:

  • 您应该浏览您的 Wildfly JNDI 树以查看您的 EJB 是否已正确部署。如果是这样,则基于其 JNDI 路径,您应该像这样执行 EJB 查找:@EJB(lookup="java:global/// !")。这是related issue

标签: java jakarta-ee deployment wildfly


【解决方案1】:

1., EJB 和 WAR 模块应该在同一个 EAR 中

2. 将EJB jar 包含到WAR 的类路径中

或:)

3.,带有可移植 JNDI 名称(用于远程接口): https://docs.oracle.com/cd/E19798-01/821-1841/girgn/index.html

特别是:java:app[/module name]/enterprise bean name[/interface name]

【讨论】:

  • 那么就没有别的办法了吗?
  • 我添加了另一个(第三个)选项:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-07
  • 1970-01-01
  • 2013-11-16
  • 1970-01-01
相关资源
最近更新 更多