Weblogic 12:为 EJB 定义特定的 JNDI 名称

Weblogic 12: Define specific JNDI Name for EJB

使用 WLS 12,我有以下 EJB 定义:

@Stateless
public class MyBean implements MyInterface {  ... }

@Remote
public interface MyInterface { ... }

我还有以下weblogic-ejb-jar.xml定义:

<weblogic-enterprise-bean>
    <ejb-name>MyBean</ejb-name>
    <enable-call-by-reference>true</enable-call-by-reference>
    <jndi-binding>
        <jndi-name>/ejb/myapp/server/MyBean</jndi-name>
    </jndi-binding>
</weblogic-enterprise-bean>

ejb-jar.xml 没有针对此 bean 的特定配置。

我的目标是在以下 EJB 名称下部署 EJB:/ejb/myapp/server/MyBean

我可以使用 MyBean 上的注释 @weblogic.javaee.JNDIName("/ejb/myapp/server/MyBean") 来实现此目的,但该注释特定于 Weblogic。我试图找到一种方法来定义 JNDI 名称,而无需任何 Weblogic 特定注释。不过具体 XML 配置没问题。

JNDI 名称必须是我提到的名称,因为它是从另一个应用程序引用的,由于技术原因实际上不可能更改 JNDI 名称引用。

知道如何为此 EJB 配置全局 JNDI 名称吗?

您需要在 jndi 绑定中添加您的接口的 class 名称:

<weblogic-enterprise-bean>
    <ejb-name>MyBean</ejb-name>
    <enable-call-by-reference>true</enable-call-by-reference>
    <jndi-binding>
        <class-name>org.package.MyInterface</class-name>
        <jndi-name>/ejb/myapp/server/MyBean</jndi-name>
    </jndi-binding>
</weblogic-enterprise-bean>