JNDI-Bindung für dynamische Werte aus den Serverkonfigurationsdateien verwenden

Mit dem Element jndiReferenceEntry im Liberty-Profil können Sie aus den Serverkonfigurationsdateien eine Referenz für dynamische Werte an den JNDI-Standardnamespace (Java™ Naming and Directory Interface) binden.

Informationen zu diesem Vorgang

Der JNDI-Standardnamespace ist in Liberty verfügbar und stellt Bindungen für verschiedene Objekte bereit, die von Anwendungen benötigt werden. Je nachdem, welche Features in Ihrem Server aktiviert sind, können Sie einen vordefinierten Satz von Objekten an den JNDI-Standardnamespace binden. Sie können außerdem eine Referenz an eine Objektfactory binden, die den Wert, den sie zurückgibt, dynamisch ermittelt. Sie können auch diese Objektfactory verwenden, um einer Anwendung angepasste Objekttypen zurückzugeben.

Weitere Informationen zur Nutzung von JNDI-Namen unter Benennung.

Vorgehensweise

  1. Fügen Sie das Liberty-Feature jndi-1.0 der Datei server.xml hinzu.
    <featureManager>
       <feature>jndi-1.0</feature>
    </featureManager>
  2. Erstellen Sie eine Klasse ObjectFactory, die einen über das Programm definierten Wert zurückgibt.
    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. Geben Sie die Klasse ObjectFactory in einem library-Element in der Datei server.xml an:
    <library id="objectFactoryLib"> 
       <fileset dir="${server.config.dir}/lib" includes="factory.jar"/>   
    </library>
  4. Deklarieren Sie die Factory in einem jndiObjectFactory-Element in der Datei server.xml und referenzieren Sie die zuvor deklarierte Bibliothek.
    <jndiObjectFactory id="objectFactory" libraryRef="objectFactoryLib"                      
             className="com.ibm.example.factory.MyObjectFactory"/>

    Sie können auch den Objekttyp deklarieren, den die Factory zurückgibt. Der Typ wird von Methode javax.naming.Context.list() zurückgegeben.

    <jndiObjectFactory id="objectFactory" libraryRef="objectFactoryLib"
             className="com.ibm.example.factory.MyObjectFactory"                      
             objectClassName="java.util.Properties"/>
  5. Deklarieren Sie den Eintrag in einem jndiReferenceEntry-Element in der Datei server.xml und referenzieren Sie die zuvor deklarierte Factory.
    <jndiReferenceEntry id="refEntry" jndiName="ref/entry" factoryRef="objectFactory"/>
  6. Gehen Sie wie folgt vor, um weitere Eigenschaften für das jndiReferenceEntry-Element in der Datei server.xml zu deklarieren:
    <jndiReferenceEntry id="refEntry" jndiName="ref/entry" factoryRef="objectFactory"> 
       <properties abc="123"/>   
    </jndiReferenceEntry>

    Diese zusätzlichen Eigenschaften werden als javax.naming.StringRefAddr in der an die Factory übergebenen javax.naming.Reference dargestellt:

    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. Sie können das resultierende Objekt in eine Anwendung einfügen, indem Sie eine Ressourcenumgebungsreferenzsreferenz verwenden:
    @Resource(name="ref/entry")
    	private Properties properties;

Symbol das den Typ des Artikels anzeigt. Taskartikel



Symbol für Zeitmarke Letzte Aktualisierung: 01.12.2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twlp_dep_jndi_refentry
Dateiname: twlp_dep_jndi_refentry.html