在同一Application Server上的不同EAR之间进行Websphere 8.5 EJB查找

时间:2015-05-13 07:59:29

标签: java-ee ejb websphere

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

有一个主系统(EAR文件),我想从中使用另一个系统的服务(EAR文件)。所以我试图使用远程查找来获取Bean。但不幸的是,我总是收到一个异常,这个Bean没有被调用者Bean定义:

Main-System:main_b.ear ---- Main-Bean:XMLSessionProxyBean

Metadata-System: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或其他部署描述符。所以我只使用默认绑定。

有没有人有线索?

提前致谢!

1 个答案:

答案 0 :(得分:1)

使用全局命名空间jndiname完成了这项工作:java:global / metadata_b / metadata-service / MetadataServiceBean!de.metadata.service.MetadataServiceRemote

: - )