我設置了兩個獨立的應用程序,一個與@EJB的戰爭和一個擁有@Stateless bean的耳朵 - 他們是單獨的應用程序,而不是共同應用程序的模塊。我試圖讓戰爭與@EJB註釋一起工作,但是我在運行時遇到了異常。跨應用程序查找EJB失敗
我還沒有使用任何描述符,因爲我儘量保持它儘可能簡單。
這裏的戰爭:
@EJB(lookup="java:global.myear.myejb-0.0.1-SNAPSHOT.MyEjbImpl!pl.klarki.myejbclient.MyEjb")
private MyEjb ejb;
這裏的例外,我得到:
Caused By: com.bea.core.repackaged.springframework.beans.factory.NoSuchBeanDefinitionException:
No unique bean of type [pl.klarki.myejbclient.MyEjb] is defined:
No beans of type pl.klarki.myejbclient.MyEjb; owner[email protected]22c86d85:
display name [[email protected]2c86d85]; startup date [Mon Feb 23 21:50:23 CET 2015]; parent: com.bea.core.repac[email protected]43d7e0fc
at com.oracle.pitchfork.inject.Jsr250Metadata.getUniqueInstanceOfType(Jsr250Metadata.java:338)
at com.oracle.pitchfork.inject.Jsr250Metadata.resolveByType(Jsr250Metadata.java:332)
at com.oracle.pitchfork.inject.Jsr250Metadata.resolve(Jsr250Metadata.java:265)
at com.oracle.pitchfork.inject.Jsr250Metadata.applyInjections(Jsr250Metadata.java:218)
at com.oracle.pitchfork.inject.Jsr250Metadata.inject(Jsr250Metadata.java:209)
下面的方法有效,但它不是令人滿意的,因爲我想用註釋:
ejb = (MyEjb) new InitialContext().lookup("java:global.myear.myejb-0.0.1-SNAPSHOT.MyEjbImpl!pl.klarki.myejbclient.MyEjb");
當我在@EJB和@Stateless中指定mappedName時,我也可以使它工作,但我已經閱讀了mapp edName是不是很酷這裏:http://thegreyblog.blogspot.com/2010/09/introduction-to-ejb-30-injection-and.html
我用這樣的映射名稱:
戰爭:
@EJB(mappedName="someMappedName")
private MyEjb ejb;
在耳邊:
@Stateless(mappedName="someMappedName")
public class MyEjbImpl implements MyEjb {
你能給我一些建議什麼我應該怎樣才能使它與@EJB(查找)一起工作?或者,也許你能確保我mappedName不是很糟糕,它可以使用它嗎?