2010-01-29 3 views
3

J'utilise habituellement Commons Configuration pour gérer mes configurations d'applications. J'ai utilisé la configuration des fichiers de propriétés. Maintenant, je suis intéressé par l'utilisation d'une configuration JNDIC mais je ne suis pas capable de comprendre comment cela fonctionne en lisant la documentation ou en la recherchant.Configuration de Commons - JNDIConfiguration - Comment?

contextualisation, je travaille dans webapps en cours d'exécution dans un JBoss AS.

Où seront les propriétés stockées? Dans un fichier? certaines tables dans une base de données?

Je serai reconnaissant pour toute orientation à ce niveau même si elle est en forme de liens où je peux lire des informations précieuses à ce sujet.

En finale noter mon objectif est de me libérer de lier un fichier avec un chemin pour hardcoded mes propriétés, mais aussi ne me forcez pas à avoir ma config dans des tables de base de données. Si vous avez des suggestions sur la façon de le faire d'une autre manière, soyez libre de partager.

Répondre

0

Où seront les propriétés stockées? Dans un fichier? certaines tables dans une base de données?

Comme @ewernli mentionné, la façon dont Java EE pour ajouter des entrées dans l'arborescence JNDI est d'utiliser env-entry dans votre descripteur de déploiement (s). Maintenant, si vous ne voulez pas répéter le même env-entry dans plusieurs descripteurs de déploiement, il existe un service pour spécifier des liaisons JNDI globales: JNDIBindingServiceMgr.

Ci-dessous, l'exemple fourni jboss-service.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE server PUBLIC "-//JBoss//DTD MBean Service 4.0//EN" 
      "http://www.jboss.org/j2ee/dtd/jboss-service_4_0.dtd"> 
<server> 
    <mbean code="org.jboss.naming.JNDIBindingServiceMgr" 
     name="jboss.tests:service=JNDIBindingServiceMgr"> 
     <attribute name="BindingsConfig" serialDataType="jbxb"> 
     <jndi:bindings 
      xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" 
      xmlns:jndi="urn:jboss:jndi-binding-service:1.0" 
      xs:schemaLocation="urn:jboss:jndi-binding-service:1.0 resource:jndi-binding-service_1_0.xsd" 
      > 
      <jndi:binding name="urls/jboss-home"> 
       <jndi:value type="java.net.URL">http://www.jboss.org</jndi:value> 
      </jndi:binding> 

      <jndi:binding name="hosts/localhost"> 
       <jndi:value editor="org.jboss.util.propertyeditor.InetAddressEditor"> 
        127.0.0.1 
       </jndi:value> 
      </jndi:binding> 

      <jndi:binding name="maps/testProps"> 
       <java:properties xmlns:java="urn:jboss:java-properties" 
        xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" 
        xs:schemaLocation="urn:jboss:java-properties resource:java-properties_1_0.xsd"> 
        <java:property> 
        <java:key>key1</java:key> 
        <java:value>value1</java:value> 
        </java:property> 
        <java:property> 
        <java:key>key2</java:key> 
        <java:value>value2</java:value> 
        </java:property> 
       </java:properties>    
      </jndi:binding> 
     </jndi:bindings> 
     </attribute> 
     <depends>jboss:service=Naming</depends> 
    </mbean> 

</server> 

Si c'est pas ce que vous cherchez, alors je ne comprends pas ce que vous cherchez :) Dans ce cas, vous devriez peut-être clarifiez il.

+0

c'est exactement ça! Merci beaucoup! – rsilva4

1

Je ne sais pas beaucoup sur Commons Configuration et JNDIConfiguration, mais si ce que vous voulez est un ensemble de paires clé/valeur, la manière standard de le faire selon les spécifications Java EE, est d'utiliser env-entry dans le web.xml ou ejb.xml.

<env-entry> 
    <env-entry-name>maxExemptions</env-entry-name> 
    <env-entry-value>10</env-entry-value> 
    <env-entry-type>java.lang.Integer</env-entry-type> 
</env-entry> 

(exemple tiré de JBoss web conf. reference.)

Ces valeurs sont liées à la JNDI afin qu'ils puissent être retrouvés ou injectés.

+0

merci ewernli, ce sera utile !, mais ce n'est pas ce que je cherche cette préoccupation spécifique. – rsilva4

1

JNDIConfiguration recherche les données de configuration sur un serveur JNDI (dans votre cas, le serveur JNDI JBoss). Cependant, vous avez toujours besoin d'un moyen d'obtenir ces données dans le serveur JNDI en premier lieu, et Commons-Configuration ne vous aidera pas avec cela.

Il me semble que JNDI est pas ce que vous voulez, il est juste pousser le problème un peu. JBoss doit toujours stocker les données de configuration quelque part, vous aurez toujours le même problème de base.

Si vous ne voulez voulez pas des chemins de fichiers codés en dur, et vous ne une base de données, alors je vous suggère de passer à l'emplacement du fichier de propriétés via une propriété du système, par exemple Ensuite, passez cet emplacement à Commons Configuration et laissez-le charger votre configuration de cette façon. Pas de chemins codés en dur, pas de base de données.

+0

".... vous avez toujours besoin d'un moyen d'obtenir ces données dans le serveur JNDI ..." - Ceci est ma question principale! comment faire ça? Dans mon cas et ne pas avoir à se soucier d'un chemin codé en dur dans le serveur JNDI car il est dépendant de l'environnement et pas de l'application, ce qui signifie que lorsque je compile mon application, je n'ai pas besoin de placer la configuration chemin que j'ai décidé mais peut utiliser partout où il/elle voulait. – rsilva4

+0

L'extraction et le chargement de données dans le serveur JNDI nécessitent un outil d'édition JNDI. Je ne suis pas au courant de celui qui est livré avec JBoss, mais de telles choses doivent exister quelque part. – skaffman

Questions connexes