当前位置: 首页 > 工具软件 > JBoss EJB3 > 使用案例 >

转发JBoss EJB JNDI命名默认规则和自定义方法

喻嘉泽
2023-12-01
下面要重点说明一下 Jboss EJB JNDI 名称默认的命名规则 ,命名规则如下:
1> 如果 EJB 打包进 后缀为 *.ear J2EE 发布文件 ,默认的 JNDI 路径名称是
访问本地接口: EAR-FILE-BASE-NAME/EJB-CLASS-NAME/local
访问远程接口: EAR-FILE-BASE-NAME/EJB-CLASS-NAME/remote
例: EJB HelloWorld 打包进名为 HelloWorld.ear J2EE 应用,访问她远程接口的 JNDI 名是: HelloWorld/HelloWorldBean/remote
 
2> 如果 EJB 应用 打包成后缀为 *.jar 的发布文件 , 默认的 JNDI 路径名称是
访问本地接口: EJB-CLASS-NAME/local
访问远程接口: EJB-CLASS-NAME/remote
例: HelloWorld 应用打包成 HelloWorld.jar 文件,访问她远程接口的 JNDI 名称是: HelloWorldBean/remote
 
注意: EJB-CLASS-NAME 是不带包名的 com.foshanshop.ejb3.impl.HelloWorldBean 只需取 HelloWorldBean
 
目前网上很多教材获取 JNDI 路径名的方式不适用在 jboss 下,如:
HelloWorld helloworld = (HelloWorld) ctx.lookup(HelloWorld.class.getName());
这种方式适用于 Sun Application Server glassfish
 

 

  

自定义JNDI 命名
默认的 JNDI 命名规则上面已经介绍过,但有些情况下需要自定义名称。 Jboss 要自定义 JNDI 名称,可以使用 @LocalBinding @RemoteBinding 注释
 
关键代码(只需要在bean interface前加binding注释):
 
import org.jboss.annotation.ejb.RemoteBinding;
。。。
@Remote
@RemoteBinding (jndiBinding="testbinding/myAccount")
publicinterface MyAccount extends Serializable {
    publicint Add( int a, int b);
    publicint getResult() ;
}
 
那么在client端调用上面的EJB的代码为:
InitialContext ctx = new InitialContext(props);
MyAccount bean1 = ( MyAccount ) ctx.lookup(" testbinding/myAccount ");
 类似资料: