2009-05-07 5 views
2

Gibt es eine Möglichkeit, meinen zustandslosen EJBs-JNDI-Pfad zu erhalten? Angenommen, ich habe ein EJB wie folgt geschrieben:Wie bekomme ich einen zustandslosen EJBs-JNDI-Pfad?

@Stateless 
public class BookBean implements IBookBeanLocal { 

@Resource SessionContext sctx; 

.... 

@PostConstruct 
public void afterInit(){ 
    // sctx?? 
} 

} 

Gibt es eine Möglichkeit, die BookBeans JNDI Pfad während der Initialisierung Sie entdecken? Ich benötige dies, um bestimmte Beans während der Initialisierung automatisch einer globalen Registrierung zuzuordnen. Gibt es andere Möglichkeiten, dies zu tun?

Antwort

0

Sie könnten möglicherweise den gewünschten jndi-Pfad in @Stateless-Annotation oder XML-ejb-Konfiguration schreiben und diesen zur Laufzeit lesen.

Das Ermitteln des automatisch generierten Jndi-Pfads ist mühsam.

0

In Java EE 6 die JNDI Pfade sind genormte und dokumentiert bei https://docs.oracle.com/javaee/6/tutorial/doc/gipjf.html

Sie also unter der Annahme machen JNDI nur innerhalb einem Ohr ruft:

@Stateless 
public class BookBean implements IBookBeanLocal { 

    @Resource(lookup = "java:module/ModuleName") 
    private String moduleName; 

    @PostConstruct 
    public void afterInit() { 
     String jndi = "java:app/" + moduleName + "/" + getClass().getSimpleName(); 
    } 
} 

Oder den Namen des Moduls über lookup bekommen:

@Stateless 
public class BookBean implements IBookBeanLocal { 
    @PostConstruct 
    public void afterInit() { 
     Context ctx = new InitialContext(); 
     String jndi = "java:app/" + ctx.lookup("java:module/ModuleName") + "/" + getClass().getSimpleName(); 
    } 
}