我在Websphere Application Server和同一服務器上兩個不同EAR文件之間的ejb遠程查詢中遇到了一些問題。Websphere 8.5在同一應用程序服務器上的不同EAR之間進行EJB查找
有一個主要系統(EAR文件),我想從中使用另一個系統(EAR文件)的服務。所以我試圖使用遠程查找來獲取Bean。但不幸的是,我總是收到這個bean不是由主叫方的Bean定義一個例外:
主系統:main_b.ear ----主要豆:XMLSessionProxyBean
元數據的系統:metadata_b.ear - --- Metadata-Bean:MetadataServiceBean
Caused by: java.lang.IllegalArgumentException: ejb/metadata_b/metadata-service.jar/MetadataServiceBean#de.metadata.service.MetadataServiceRemote was not defined for main_b#main-ejbs.jar#XMLSessionProxyBean
at com.ibm.ws.ejbcontainer.runtime.SharedEJBRuntimeImpl.javaColonLookup(SharedEJBRuntimeImpl.java:692)
at com.ibm.ejs.container.BeanO.lookup(BeanO.java:1333)
這是我在主系統中的查找方法。蔭使用sessionContext(不希望在一個會話,因爲我'創建InitialContext的話):
private static String METADATA_BEAN_LOOKUP =
"ejb/metadata_b/metadata-service.jar/MetadataServiceBean#de.metadata.service.MetadataServiceRemote";
public MetadataServiceRemote getMetadataService() {
return getLocalEJB(METADATA_BEAN_LOOKUP);
}
@SuppressWarnings("unchecked")
private <T> T getLocalEJB(final String jndiName) {
T localEjb = null;
final SessionContext sContext = objContext.getSessionContext();
localEjb = (T) sContext.lookup(jndiName);
return localEjb;
}
這是沒有選擇對我來說,使用注射像@EJB
,也不能使用本地查找與WAS共享庫。我想我必須使用ejb-jar.xml和ibm-ejb-jar-bnd.xml。目前沒有ejb-jar.xml或其他部署描述符。所以我只使用默認綁定。
有沒有人有線索?
在此先感謝!
使用全局命名空間jndiname做作業: java:global/metadata_b/metadata-service/MetadataServiceBean!de.metadata.service.MetadataServiceRemote – Daniel