2010-05-03 30 views
0

即使我在我的Java EE應用程序中有不同的模塊,包括myproject-web和myproject-ejb,是否有可能從Web模塊中的託管bean調用(或注入)ejb模塊中的ejb會話bean? 當我問之前,我看到了如下聲明:通過使用ejb 3,jsf和jboss可以從Web模塊調用EJB方法嗎?

@EJB private BeanInterface yourbean 

不過,我想了解的是是否有可能或沒有,打電話給對方不同的上下文之間(它的一個在EJB環境,另一種-managed bean-在web上下文中)?

任何幫助,將不勝感激。

回答

-1

我發現它沒有現在寫你自己的解析器是不可能的..謝謝

+0

Bariscan,你能描述一下你的解決方案嗎? – 2011-12-09 13:54:01

+0

我還找不到解決方案,對不起。 – Javatar 2012-01-02 09:48:07

1

您可以在@ManagedBean類中注入@EJB,但不能相反。如果您想在EJB類中執行所需的業務邏輯,則必須將託管的bean實例作爲方法參數傳遞給您。

@Stateless 
public class EJB { 
    public void process(ManagedBean bean) { 
     // Business logic. 
    } 
} 

@ManagedBean 
public class ManagedBean { 
    @EJB private EJB ejb; 

    public void submit() { 
     ejb.process(this); 
    } 
} 
+0

+1,但我會謹慎將整個託管bean傳遞給EJB。您可以有效地傳遞代理,這在EJB上下文中可能不相關。 +它很可能是違反「德米特法」 – Bozho 2010-05-03 17:01:36

+0

首先,非常感謝您的答覆。 那麼,你的意思是說,我不需要做jndi查找來查找來自web模塊的ejb上下文中的ejb會話? 我知道ejb和託管bean是否在相同的上下文中,相同的模塊(如myProject-ejb)可以使用@EJB anno注入。但是,我無法確定是否可以從不同的環境注入...... 您對此有任何想法嗎? 非常感謝, Baris – Javatar 2010-05-07 07:36:29

0

如果你真的想這樣通過各種手段,我想你可以嘗試寫自己的財產解析器和注入由你自己(我沒有嘗試)。