来自分离的 Web 项目的 EJB 接口引用

EJB interface references from a separated Web Project

我正在 Eclipse 上做一些 EJB 3.1 实践。

我在 Wildfly 9 上有一个 EJB 项目和一个动态 Web 项目。

我想做的是调用 EJB 方法 (EJB 项目)来自 Servlet(在动态 Web 项目中) 在 Servlet 代码上使用 @EJB 注释:

@EJB
IBeanRemote bean; //realize the bean variable is declared as the remote EJB Interfase.

protected void doGet(HttpServletRequest request, HttpServletResponse    response) throws ServletException, IOException {    
    response.getWriter().println(bean.getMethod());
}

我的 EJB 非常简单:

@Remote
@Stateless
public interfase IBeanRemote {
   public String getMethod();
}
...
public BeanRemote extends IBeanRemote
{
    @Override
    public String getMethod() { 
        return "How to call this ejb?"; 
    }
}

这两个项目都被打包到一个 EAR 项目中,但我无法 请参阅 Web 项目中的 IBeanRemote 类型引用(因为 IBeanRemote 和 Servlet 位于不同的项目中),因此,行

@EJB
IBeanRemote bean;

无法编译。

一个常见的解决方案是在 Web 项目构建路径中添加 EJB 项目,但如果我使用在非常远程的服务器上运行的 Remote EJB 并且我认为 Web 项目不应该知道,这就没有意义了关于 EJB 实现的任何事情。

如何将 IRemoteBean 引用类型添加到我的 Web 项目中,以便制作我的 Servlet class 在eclipse中编译调用EJB方法?

为什么不将 EJB 项目分成 2 个较小的项目:EJB-API 包含接口,您可以将此项目用于您的客户端,EJB-IMPL 实现接口。您的客户和 EJB-IMPL 都将引用您的 EJB-API 项目。