2010-03-02 3 views
2

J'ai un service Web jboss qui obtient le mauvais contexte initial. Je veux qu'il utilise le java.naming.factory.initial du jndi.properties dans le répertoire racine des services et non pas celui de jboss jndi.properties qui est le NamingContextFactory. Dans le fichier de construction ant, j'ai placé le jndi.properties dans le chemin de classe et vérifié qu'il est bien copié dans l'archive, mais le service obtient toujours le NamingContextFactory à la place. Comment puis-je savoir quel jndi.properties est utilisé pour que l'usine soit réglée correctement?Ordre de plusieurs jndi.properties sur le chemin de classe

La situation regrettable est que j'ai un pot tiers, je dois utiliser cette usine prévoit que son contexte initial à celui spécifié dans son fichier jndi.properties emballé, mais quand je lance cela en jboss il obtient NamingContextFactory. Je ne peux pas changer le fichier jboss jndi.properties sans tout casser.

+0

Vous devrez peut-être effectuer une gymnastique de chargement de classe JBoss. Le JAR fait-il partie d'un EAR ou d'un WAR? – skaffman

+1

Cela fait partie d'un EAR. – insipid

Répondre

2

Si vous avez plusieurs fichiers jndi.properties à la racine du classpath, alors InitialContext fera une tentative de fusionner les deux, mais celui qui gagne est plus ou moins une question de chance.

Si vous voulez vous assurer, alors InitialContext a un constructeur qui prend un Hashtable de propriétés, où vous pouvez les spécifier explicitement. Cela serait préférable au chargement implicite via jndi.properties, dans ce cas. Vous pouvez toujours charger votre cible jndi.properties dans un objet Properties (qui est une sous-classe de Hashtable) et le transmettre au constructeur.

+0

Édité mon message pour inclure que je ne contrôle pas la demande de contexte initiale d'une bibliothèque de tiers fait ... :( – insipid

Questions connexes