2008-09-26 9 views
4

Dans un servlet je fais ce qui suit:java.lang.String en jndi contexte par défaut avec Apache Geronimo - Comment?

Context context = new InitialContext(); 
    value = (String) context.lookup("java:comp/env/propertyName"); 

Sur une instance Apache Geronimo (WAS CE 2.1) Comment associer une valeur à la clé propertyName? Dans Websphere AS 6, je peux configurer ces propriétés pour la recherche JNDI sous la page «Name Space Bindings» dans la console de gestion, mais pour la vie de moi, je ne trouve aucun moyen de le faire dans l'édition communautaire sur le web.

Répondre

1

Une possibilité consiste à ajouter les propriétés à votre fichier web.xml (dans le répertoire WEB-INF), en utilisant une ou plusieurs balises <env-entry>. Par exemple, quelque chose comme ce qui suit:

<env-entry> 
    <description>My string property</descriptor> 
    <env-entry-name>propertyName</env-entry-name> 
    <env-entry-type>java.lang.String</env-entry-type> 
    <env-entry-value>Your string goes here</env-entry-value> 
</env-entry> 

Chaque balise env-entry une nouvelle variable déclare l'environnement que vous pouvez accéder à partir du contexte java:comp/env. Une fois que vous avez ajouté les codes env-entry nécessaires, vous pouvez utiliser un code similaire à celui que vous avez déjà publié pour accéder à ces valeurs. Rappelez-vous, je n'ai pas Geronimo installé, donc je ne sais pas s'il y a une configuration supplémentaire qui doit être faite pour que cela fonctionne.

0

Il est possible de placer vos propriétés dans un fichier et de faire en sorte que le nom et l'emplacement du fichier soient une référence de ressource de type URL dans le fichier web.xml. La valeur de la ressource est définie dans geronimo-web.xml.

Votre web.xml aura l'entrée suivante:

<resource-ref> 
    <res-ref-name>configFileName</res-ref-name> 
    <res-type>java.net.URL</res-type> 
</resource-ref> 

Dans geronimo-web.xml vous définissez la valeur de la configFileName

<name:resource-ref> 
    <name:ref-name>configFileName</name:ref-name> 
    <name:url>file:///etc/myConfigFile</name:url> 
</name:resource-ref> 

En Java, vous avez le code suivant pour rechercher la valeur:

initialContext = new InitialContext(); 
URL url = (URL) initialContext.lookup("java:comp/env/configFileName"); 
String configFileName = url.getPath(); 

Ensuite, vous devez ouvrir le fichier et lire la valeur qui s'y trouve.

Le résultat de tout ceci est que vous avez les propriétés dans un fichier sur le système de fichiers. Il ne sera pas écrasé si vous redéployez votre application.

Questions connexes