当前位置: 首页 > 文档资料 > EJB 中文教程 >

JNDI 绑定(JNDI Bindings)

优质
小牛编辑
137浏览
2023-12-01

JNDI代表Java命名和目录接口。 它是一组API和服务接口。 基于Java的应用程序使用JNDI进行命名和目录服务。 在EJB的上下文中,有两个术语。

  • Binding - 这是指为EJB对象分配名称,以后可以使用。

  • Lookup - 这是指查找并获取EJB的对象。

在Jboss中,会话bean默认以以下格式绑定在JNDI中。

  • local - EJB-name/local

  • remote - EJB-name/remote

如果EJB与 .ear文件捆绑在一起,则默认格式如下 -

  • local - application-name/ejb-name/local

  • remote - application-name/ejb-name/remote

默认绑定的示例

请参阅EJB - Create Application章节的JBoss控制台输出。

JBoss应用服务器日志输出

...
16:30:02,723 INFO  [SessionSpecContainer] Starting jboss.j2ee:jar=EjbComponent.jar,name=LibrarySessionBean,service=EJB3
16:30:02,723 INFO  [EJBContainer] STARTED EJB: cn.xnip.stateless.LibrarySessionBean ejbName: LibrarySessionBean
16:30:02,731 INFO  [JndiSessionRegistrarBase] Binding the following Entries in Global JNDI:
   LibrarySessionBean/remote - EJB3.x Default Remote Business Interface
   LibrarySessionBean/remote-cn.xnip.stateless.LibrarySessionBeanRemote - EJB3.x Remote Business Interface
...

自定义绑定

注释可用于自定义默认的JNDI绑定 -

  • local - org.jboss.ejb3.LocalBinding

  • remote - org.jboss.ejb3.RemoteBindings

更新LibrarySessionBean.java。 请参阅EJB - Create Application章节。

LibrarySessionBean

package cn.xnip.stateless;
import java.util.ArrayList;
import java.util.List;
import javax.ejb.Stateless;
@Stateless
@LocalBinding(jndiBinding="xnip/librarySession")
public class LibrarySessionBean implements LibrarySessionBeanLocal {
    List<String> bookShelf;    
    public LibrarySessionBean(){
       bookShelf = new ArrayList<String>();
    }
    public void addBook(String bookName) {
       bookShelf.add(bookName);
    }    
    public List<String> getBooks() {
        return bookShelf;
    }
}

LibrarySessionBeanLocal

package cn.xnip.stateless;
import java.util.List;
import javax.ejb.Local;
@Local
public interface LibrarySessionBeanLocal {
    void addBook(String bookName);
    List getBooks();
}

构建项目,在Jboss上部署应用程序,并在Jboss控制台中验证以下输出 -

...
16:30:02,723 INFO  [SessionSpecContainer] Starting jboss.j2ee:jar=EjbComponent.jar,name=LibrarySessionBean,service=EJB3
16:30:02,723 INFO  [EJBContainer] STARTED EJB: cn.xnip.stateless.LibrarySessionBean ejbName: LibrarySessionBean
16:30:02,731 INFO  [JndiSessionRegistrarBase] Binding the following Entries in Global JNDI:
   xnip/librarySession - EJB3.x Default Local Business Interface
   xnip/librarySession-cn.xnip.stateless.LibrarySessionBeanLocal - EJB3.x Local Business Interface
...