EJB - Binding JNDI
JNDI sta per Java Naming and Directory Interface. È un insieme di API e interfacce di servizio. Le applicazioni basate su Java utilizzano JNDI per i servizi di denominazione e directory. Nel contesto di EJB, ci sono due termini.
Binding - Si riferisce all'assegnazione di un nome a un oggetto EJB, che può essere utilizzato in seguito.
Lookup - Si riferisce alla ricerca e al recupero di un oggetto di EJB.
In Jboss, i bean di sessione sono associati in JNDI nel seguente formato per impostazione predefinita.
local - Nome EJB / locale
remote - Nome EJB / telecomando
Nel caso in cui EJB sia fornito in bundle con il file <application-name> .ear, il formato predefinito è il seguente:
local - nome-applicazione / nome-ejb / local
remote - nome-applicazione / nome-ejb / remoto
Esempio di associazione predefinita
Fare riferimento a EJB - Creazione dell'output della console JBoss del capitolo Creazione dell'applicazione .
Output del registro di JBoss Application Server
...
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
...
Rilegatura personalizzata
Le seguenti annotazioni possono essere utilizzate per personalizzare i collegamenti JNDI predefiniti:
local - org.jboss.ejb3.LocalBinding
remote - org.jboss.ejb3.RemoteBindings
Aggiorna LibrarySessionBean.java. Fare riferimento al capitolo EJB - Crea applicazione .
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();
}
Compila il progetto, distribuisci l'applicazione su Jboss e verifica il seguente output nella console 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
...