[8.5.5.4 o posterior]

Utilización del enlace JNDI para los valores dinámicos de los archivos de configuración del servidor

Puede enlazar una referencia de valores dinámicos con el espacio de nombres JNDI (Java™ Naming and Directory Interface) predeterminado desde los archivos de configuración utilizando el elemento jndiReferenceEntry en el perfil Liberty.

Acerca de esta tarea

El espacio de nombres JNDI predeterminado está disponible en el perfil Liberty para proporcionar enlaces a diversos objetos necesarios para las aplicaciones. En función de las características habilitadas en el servidor, puede enlazar un conjunto predeterminado de objetos con el espacio de nombres JNDI predeterminado. Asimismo, puede enlazar una referencia a una fábrica de objetos, que determina dinámicamente el valor que se devuelve. También puede utilizar esta fábrica de objetos para devolver tipos de objetos personalizados a una aplicación.

Para obtener más información sobre la denominación JNDI, consulte Denominación.

Procedimiento

  1. Añada la característica de Liberty jndi-1.0 al archivo server.xml.
    <featureManager>
       <feature>jndi-1.0</feature>
    </featureManager>
  2. Cree una clase ObjectFactory que devuelva un valor definido mediante programación.
    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. Incluya la ObjectFactory en un elemento library en el archivo server.xml:
    <library id="objectFactoryLib"> 
       <fileset dir="${server.config.dir}/lib" includes="factory.jar"/>   
    </library>
  4. Declare la fábrica en un elemento jndiObjectFactory en el archivo server.xml y haga referencia a la biblioteca declarada anteriormente.
    <jndiObjectFactory id="objectFactory" libraryRef="objectFactoryLib"                      
             className="com.ibm.example.factory.MyObjectFactory"/>

    También puede declarar el tipo de objeto que devuelve la fábrica. El método javax.naming.Context.list() devuelve el tipo.

    <jndiObjectFactory id="objectFactory" libraryRef="objectFactoryLib"                      
             className="com.ibm.example.factory.MyObjectFactory"                      
             objectClassName="java.util.Properties"/>
  5. Declare la entrada en un elemento jndiReferenceEntry en el archivo server.xml y haga referencia a la fábrica declarada anteriormente.
    <jndiReferenceEntry id="refEntry" jndiName="ref/entry" factoryRef="objectFactory"/>
  6. Para declarar más propiedades para el elemento jndiReferenceEntry en el archivo server.xml:
    <jndiReferenceEntry id="refEntry" jndiName="ref/entry" factoryRef="objectFactory"> 
       <properties abc="123"/>   
    </jndiReferenceEntry>

    Estas propiedades adicionales se representan como javax.naming.StringRefAddr en el objeto javax.naming.Reference que se pasa a la fábrica:

    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. Puede inyectar el objeto resultante a una aplicación utilizando una referencia de entorno de recursos:
    @Resource(name="ref/entry")
    private Properties properties;

Icono que indica el tipo de tema Tema de tarea

Términos y condiciones para centros de información | Comentarios


Icono de indicación de fecha y hora Última actualización: 15 de junio de 2015
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=phil&product=was-libcore-mp&topic=twlp_dep_jndi_refentry
Nombre de archivo:twlp_dep_jndi_refentry.html