2015-12-18 1 views
0

Nous utilisons Maven et Artifactory, et donc nos fichiers d'oreille ont des noms commeprépondérants noms JNDI dans JBoss EJB3.1

our-project-ear-0.0.1-20151215.151526-3.ear. 

Alors noms JNDI pour nos noms comme EJBs ont

java:global/our-project-ear/our-project-ejb/AnEjbJar!com.acme.ourproject.SomeEjb. 

Ces noms ne sont pas seulement laids et complexes, ils incorporent aussi des suffixes temporaires ajoutés par Maven/Artifactory.

Je pensais que nous pourrions simplifier les noms via l'annotation @RemoteHomeBinding spécifique à JBoss, mais je ne trouve pas cette annotation dans EAP 6.3. Y a-t-il encore un moyen de le faire? Si non, comment puis-je contrôler le nom JNDI sous lequel mes EJB sont publiés?

Répondre

1

Je l'ai trouvé moi-même. Les annotations @RemoteBinding, @LocalBinding, @RemoteHomeBinding et @LocalHomeBinding ont été annulées dans AS7.x. A version of the JBoss instructions for migrating from AS5/6 to AS7 (not the current one) états:

>In AS7 there is no possibility for custom JNDI names of EJB beans and it's not planned for 7.1. 

>Therefor the annotation @RemoteBindings and @LocalBindings are not available. 

L'approche recommandée est d'utiliser les liaisons par défaut. Cependant, les noms JNDI personnalisés peuvent également être définis par l'annotation @EJB, comme indiqué dans this Oracle blog:

Le développeur peut choisir un nom JNDI supplémentaire qui résout à une vue client particulier d'un grain de session en utilisant l'annotation @EJB . À partir de Java EE 6, la valeur de l'attribut @EJB name() peut être préfixée par l'un des trois espaces de noms Java EE portables: java: global, java: app, java: module. Cela a pour effet d'exporter la dépendance dans la portée sélectionnée.

0

Je pense que ce que vous recherchez est:

@Ejb(lookup="java:/global/somecustomPath") 

Comme cela n'affectera pas où en JNDI la fève est lié mais où trouver dans JNDI. Si j'ai raison, c'est parce que JBOSS7 est un serveur d'application JEE6 et que JEE6 a introduit le concept de noms JNDI Global Portable dans JEE6.