Jakarta ee 同一应用服务器上不同EAR之间的Websphere 8.5 EJB查找

Jakarta ee 同一应用服务器上不同EAR之间的Websphere 8.5 EJB查找,jakarta-ee,ejb,websphere,Jakarta Ee,Ejb,Websphere,我的websphereapplicationserver和同一服务器上两个不同EAR文件之间的ejb远程查找有点问题 有一个主系统(EAR文件),我想从中使用另一个系统的服务(EAR文件)。因此,我正在尝试使用远程查找来获取Bean。但不幸的是,我总是收到一个异常,这个Bean不是由调用方Bean定义的: 主系统:Main_b.ear----主Bean:XMLSessionProxyBean 元数据系统:Metadata_b.ear----元数据Bean:MetadataServiceBean

我的websphereapplicationserver和同一服务器上两个不同EAR文件之间的ejb远程查找有点问题

有一个主系统(EAR文件),我想从中使用另一个系统的服务(EAR文件)。因此,我正在尝试使用远程查找来获取Bean。但不幸的是,我总是收到一个异常,这个Bean不是由调用方Bean定义的:

主系统:Main_b.ear----主Bean:XMLSessionProxyBean

元数据系统:Metadata_b.ear----元数据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(不想创建初始上下文,因为我已经在会话中):

私有静态字符串元数据\u BEAN\u查找=
“ejb/metadata_b/metadata service.jar/MetadataServiceBean#de.metadata.service.MetadataServiceRemote”;
公共MetadataService远程getMetadataService(){
返回getLocalEJB(元数据\u BEAN\u查找);
}
@抑制警告(“未选中”)
私有T getLocalEJB(最终字符串jndiName){
T localEjb=null;
final SessionContext sContext=objContext.getSessionContext();
localEjb=(T)sContext.lookup(jndiName);
返回localEjb;
}
我没有选择使用像
@EJB
这样的注入,也没有选择不使用WAS共享库的本地查找。我想我必须使用ejb-jar.xml和ibm-ejb-jar-bnd.xml或其他类似的东西。目前还没有ejb-jar.xml或其他部署描述符。所以我只使用默认绑定

有人有线索吗


提前谢谢

使用全局名称空间jndiname完成了任务:java:global/metadata\u b/metadata service/MetadataServiceBean!de.metadata.service。‌​MetadataServiceRemote


:-)

使用全局名称空间jndiname完成了任务:java:global/metadata\u b/metadata service/MetadataServiceBean!de.metadata.service.MetadataServiceRemote实际上,默认情况下EJBContext.lookup是相对于EJB的java:comp/env命名空间的,因此除非声明EJB引用(例如,
@EJB(name=“EJB/metadata\u b…”)
),否则您需要使用java:global名称。
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;
    }