2009-05-07 5 views
2

Existe-t-il un moyen d'obtenir mon chemin JNDI d'EJB sans état? En supposant que je l'ai écrit un EJB comme ceci:Comment obtenir des chemins d'EJB sans état JNDI?

@Stateless 
public class BookBean implements IBookBeanLocal { 

@Resource SessionContext sctx; 

.... 

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

} 

Est-il possible de découvrir le chemin ne JNDI BookBeans lors de l'initialisation? J'ai besoin de cela pour auto-inscrire certains beans à un registre global lors de l'initialisation. Y a-t-il d'autres moyens de le faire?

Répondre

0

Vous pouvez éventuellement écrire le chemin jndi souhaité dans l'annotation @Stateless ou xml ejb et le lire lors de l'exécution. La découverte du chemin jndi généré automatiquement est problématique.

0

En Java EE 6 chemins JNDI standardisée et documentée à https://docs.oracle.com/javaee/6/tutorial/doc/gipjf.html

Donc, en supposant que vous faites des appels JNDI seulement à l'intérieur d'une oreille:

@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(); 
    } 
} 

Ou obtenir le nom du module via lookup:

@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(); 
    } 
}