2011-04-02 88 views
1

guys。我有一個在Tomcat 6.0.20(webapp.war)上運行的Seam項目和一個在JBoss 4.2.3(ejbapp.ear)上運行的EJB項目。將EJB注入Seam組件

我可以使用JNDI查找[initialContext.lookup(...)]在我的Seam組件中訪問我的EJB。 我想將它們注入到我的Seam組件中。

我的Seam組件不是EJB,所以我不能使用@EJB註釋。我想在我的Tomcat(Web)應用程序中擁有類似的內容。

@Name("customerAction") 
public class CustomerAction { 

    @In // even with (autoCreate=true) or the EJB name if necessary 
    private CustomerEJB customerEJB; 

    ... 
} 

而這個在JBoss(EJB)應用程序中。

@Stateless(name="customerEJB") 
public class CustomerEJBImpl implements CustomerEJB { 
    ... 
} 

@Remote 
public interface CustomerEJB { 
    ... 
} 

在我的components.xml我有jndiPattern = ejbapp/@ jndiPattern /遠程指定的,就像我目前使用查找EJB組件(例如:ejbapp/CustomerEJB /遠程)。

我可能在配置中缺少一些東西來完成這項工作。 PS:我不想將我的EJB註釋爲@Name(Seam)組件。

有什麼建議嗎?提前致謝。


感謝您的回覆,但它沒有奏效。

當我在components.xml中聲明EJB時,它確實在我的Action(Seam組件)中注入了對象,但是卻是作爲POJO注入的。我的意思是,我在注入對象中的EntityManager和其他EJB注入不起作用。我也嘗試將EJB定義爲Seam組件,但是,一旦它們位於JAR文件中的Webproject中,它不會自動加載,並嘗試上面的場景時,我得到了同樣的錯誤。

只是一個FYI,我還在ejb-jar.xml文件中聲明瞭Seam攔截器。 我不知道爲什麼會發生這種情況,順便說一句,我認爲這對Seam來說是相當簡單的事情。

無論如何...,還有其他建議嗎,夥計們?

回答

0

將您的EJB定義爲components.xml中的Seam組件