是否可以在不進行JNDI查找的情況下從同一個應用程序服務器中的另一個耳朵注入StatelessBean?作爲應用程序服務器,我們使用的是JBoss 7.2。JBoss7上的EAR之間的EJB注入
我有以下設置:
EAR1
│ services1-0.1.jar
│ web-0.1.war
│
├───lib
│ EAR2-SERVICES-api-0.1.jar
│
└───META-INF
application.xml
beans.xml
EAR2
│ EAR2-SERVICES-impl-0.1.jar
│
├───lib
│ EAR2-SERVICES-api-0.1.jar
│
└───META-INF
application.xml
beans.xml
EAR2例如包含以下服務:
@Named
@Stateless
public class ServiceBean implements Service { }
和接口:
@Remote
interface Service { }
從EAR1調用者應該只考慮API而不是實現。我該如何實現,這是保證。當我必須使用JNDI名稱時,我必須知道實現的位置。
對於注射服務成EAR1我試圖@Inject和@EJB。但是,我總是得到Caused by: org.jboss.weld.exceptions.DeploymentException: WELD-001408 Unsatisfied dependencies for type [Service] with qualifiers [@Default] at injection point [[field] @Inject package.ServiceBean.service]
的MANIFEST.MF有依賴關係deployment.EAR2.ear
類加載程序隔離兩個耳朵,使它們不會看到對方。 –