[8.5.5.4 ou ultérieure]

Utilisation de liaisons JNDI pour des valeurs dynamiques depuis un fichier de configuration de serveur

Vous pouvez lier une référence pour des valeurs dynamiques dans l'espace de nom JNDI (Java™ Naming and Directory Interface) par défaut en utilisant l'élément jndiReferenceEntry du profil Liberty.

Pourquoi et quand exécuter cette tâche

L'espace de noms JNDI par défaut est disponible dans le profil Liberty pour fournir des liaisons à divers objets nécessaires aux applications. Selon les fonctions qui sont activées sur votre serveur, vous pouvez lier un jeu prédeterminé d'objets dans l'espace de nom JNDI par défaut. Vous pouvez aussi lier une référence à une fabrique d'objets, ce qui détermine de manière dynamique la valeur qu'il renvoie. Vous pouvez également utiliser cette fabrique d'objets pour renvoyer des types d'objet personnalisées à une application.

Pour plus d'informations sur le nommage JNDI, voir Nommage.

Procédure

  1. Ajoutez la fonction Liberty jndi-1.0 dans le fichier server.xml.
    <featureManager>
       <feature>jndi-1.0</feature>
    </featureManager>
  2. Créez une classe ObjectFactory qui renvoie une valeur définie à l'aide d'un programme.
    import javax.naming.spi.ObjectFactory;
    
    public class MyObjectFactory implements ObjectFactory {
      @Override
      public Object getObjectInstance(Object o, Name n, Context c, Hashtable<?, ?> envmt) throws Exception { 
        Properties p = new Properties();
        p.put("abc", 123);
        return p; 
      }
    }    
  3. Incluez l'élément ObjectFactory dans un élément library du fichier server.xml :
    <library id="objectFactoryLib"> 
       <fileset dir="${server.config.dir}/lib" includes="factory.jar"/>   
    </library>
  4. Déclarez la fabrique dans un élément jndiObjectFactory du fichier server.xml et faites référence à la bibliothèque préalablement déclarée.
    <jndiObjectFactory id="objectFactory" libraryRef="objectFactoryLib"                      
             className="com.ibm.example.factory.MyObjectFactory"/>

    Vous pouvez aussi déclarer le type d'objet renvoyé par la fabrique. Ce type est renvoyé par la méthode javax.naming.Context.list().

    <jndiObjectFactory id="objectFactory" libraryRef="objectFactoryLib"                      
             className="com.ibm.example.factory.MyObjectFactory"                      
             objectClassName="java.util.Properties"/>
  5. Déclarez l'entrée dans un élément jndiReferenceEntry du fichier server.xml et faites référence à la fabrique préalablement déclarée.
    <jndiReferenceEntry id="refEntry" jndiName="ref/entry" factoryRef="objectFactory"/>
  6. Pour déclarer d'autres propriétés pour l'élément jndiReferenceEntry dans le fichier server.xml :
    <jndiReferenceEntry id="refEntry" jndiName="ref/entry" factoryRef="objectFactory"> 
       <properties abc="123"/>   
    </jndiReferenceEntry>

    Ces propriétés supplémentaires sont représentées sous la forme javax.naming.StringRefAddr dans l'élément javax.naming.Reference qui est transmis à la fabrique :

    import javax.naming.spi.ObjectFactory; 
    
    public class MyObjectFactory implements ObjectFactory { 
      @Override 
      public Object getObjectInstance(Object o, Name n, Context c, Hashtable<?, ?> envmt) throws Exception {
        Properties p = new Properties();           
        Reference ref = (Reference) o;
        RefAddr refAddr = ref.get("abc"); 
        p.put("abc", refAddr == null ? 123 : refAddr.getContent()); 
        return p; 
      }   
    }
  7. Vous pouvez injecter l'objet dans une application en utilisant une référence d'environnement de ressource de ressource :
    @Resource(name="ref/entry")
    private Properties properties;

Icône indiquant le type de rubrique Rubrique Tâche

Dispositions pour les centres de documentation | Commentaires


Icône d'horodatage Dernière mise à jour: Wednesday, 2 September 2015
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=phil&product=was-libcore-mp&topic=twlp_dep_jndi_refentry
Nom du fichier : twlp_dep_jndi_refentry.html