EJB - JNDI 绑定



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

  • 绑定 - 这指的是为EJB对象分配一个名称,稍后可以使用该名称。

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

在JBoss中,会话Bean默认情况下以以下格式绑定到JNDI。

  • 本地 - EJB名称/本地

  • 远程 - EJB名称/远程

如果EJB与<应用程序名称>.ear文件捆绑在一起,则默认格式如下:

  • 本地 - 应用程序名称/EJB名称/本地

  • 远程 - 应用程序名称/EJB名称/远程

默认绑定的示例

请参阅EJB - 创建应用程序章节的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: com.tutorialspoint.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-com.tutorialspoint.stateless.LibrarySessionBeanRemote - EJB3.x Remote Business Interface
...

自定义绑定

可以使用以下注解来自定义默认的JNDI绑定:

  • 本地 - org.jboss.ejb3.LocalBinding

  • 远程 - org.jboss.ejb3.RemoteBindings

更新LibrarySessionBean.java。请参阅EJB - 创建应用程序章节。

LibrarySessionBean

package com.tutorialspoint.stateless;
 
import java.util.ArrayList;
import java.util.List;
import javax.ejb.Stateless;
 
@Stateless
@LocalBinding(jndiBinding="tutorialsPoint/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 com.tutorialspoint.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: com.tutorialspoint.stateless.LibrarySessionBean ejbName: LibrarySessionBean
16:30:02,731 INFO  [JndiSessionRegistrarBase] Binding the following Entries in Global JNDI:

   tutorialsPoint/librarySession - EJB3.x Default Local Business Interface
   tutorialsPoint/librarySession-com.tutorialspoint.stateless.LibrarySessionBeanLocal - EJB3.x Local Business Interface
...
广告