我使用jboss-IDE。所以,我在同一个项目中创建了一个包含许多EJB的项目。现在,我需要EJB B中EJB A公开的功能。因此,我需要在EJB B中调用EJB A.我该怎么做?
P.S:处理EJB 2。
答案 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的基本理解和那篇文章应该很好地涵盖了这些基础。