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
...
廣告
© . All rights reserved.