如何从另一个EJB调用EJB?

时间:2009-10-14 16:04:51

标签: java java-ee ejb

我使用jboss-IDE。所以,我在同一个项目中创建了一个包含许多EJB的项目。现在,我需要EJB B中EJB A公开的功能。因此,我需要在EJB B中调用EJB A.我该怎么做?

P.S:处理EJB 2。

3 个答案:

答案 0 :(得分:1)

问题实际上是“如何调用EJB?”?因为如果你知道如何从一个webapp或一个Swing客户端调用EJB B,那么你在技术上知道如何从EJB B调用EJB A.

现在,正如其他人指出的那样,您可能希望使用本地接口而不是远程接口来避免远程处理的开销,但不知道您的EJB是否将部署在多个VM上,因此无法为您回答此问题。

如果没有关于事务需求的更多信息,我不能说你是否可以安全地调用EJB A上的现有方法,或者是否应该使用其他事务设置公开克隆版本。

话虽如此,调用EJB 2.0的传统方法是使用Service Locator

答案 1 :(得分:0)

我在EJB上生气,但如果你想在本地2个EJB之间进行通信,你可以使用本地接口而不是远程接口。您可以查看this resource了解更多详情

答案 2 :(得分:0)

您是否绝对需要使用EJB 2.0?如果没有,我将跳转到EJB 3.从长远来看,使用注释和EJB注入将使您的生活更加轻松。

否则......如果你必须...... this page on devx.com summarizes it nicely.

实质上,您需要为bean创建本地接口,并修改部署描述符以使用本地引用而不是远程引用。这有两个目的:避免RMI调用,并避免序列化/反序列化(因为可以传递常规引用)。这也适用于EJB 3。

正确设置本地引用后,您需要执行bean的JNDI查找。请参阅文章,了解简短/甜蜜的例子。完成查找后,您就可以使用界面公开的任何方法进行摇滚和角色。

如果你需要一个更全面的例子,我可以添加一些片段,但是对EJB的基本理解和那篇文章应该很好地涵盖了这些基础。