Direkte und indirekte JNDI-Lookup-Methoden für Datenquellen

Sie können eine direkte oder eine indirekte Methode für den JNDI-Namen (Java™ Naming and Directory Interface) verwenden (z. B. jdbc/DataSource), um eine Datenquelle zu suchen.

Direkt

Wenn Sie einen JNDI-Namen verwenden, z. B. "jdbc/myDatasource", ordnet der Anwendungsserver den Ressourcenreferenzdaten Standardwerte zu. Es wird eine Informationsnachricht wie die folgende protokolliert, um die Standardwerte zu dokumentieren:
[10/5/07 11:40:38:468 CDT] 0000002e ConnectionFac W   J2CA0294W: Direkte JNDI-Lookup-Operation der Ressource jdbc/myDatasource.
   Es werden die folgenden Standardwerte verwendet:

[Resource-ref CMConfigData key items]  	
res-auth:                 1 (APPLICATION) 	
res-isolation-level:      0 (TRANSACTION_NONE) 	
res-sharing-scope:        true (SHAREABLE) 	
loginConfigurationName:   null 	
loginConfigProperties:    null  

[Resource-ref non-key items]  	
isCMP1_x:                 false (not CMP1.x) 	
isJMS:                    false (not JMS) 
commitPriority            0 	
Java EE Name:                not set 	
Resource ref name:        not set 	
isCMP:                    false (not set)

Das erste dieser Attribute, res-auth, bestimmt, welcher Typ von Authentifizierung durchgeführt wird. Diese Standardeinstellung gibt an, dass der komponentengesteuerte Authentifizierungsaliasname verwendet wird, wenn Sie im getConnection-Aufruf keine Aktivierungsspezifikation oder keinen Benutzernamen und kein Kennwort angeben. Außerdem gibt diese Einstellung an, dass der containergesteuerte Aliasname nicht verwendet wird.

Die zweite dieser Einstellungen, res-isolation-level, gibt an, dass die Isolationsstufe auf die Einstellung "default" gesetzt wird. Für eine Enterprise-Bean können Sie diese Einstellung in der EJB (Enterprise JavaBeans) selbst festlegen. Bei einem Servlet, das eine Verbindung abruft, führt dies dazu, dass die Isolationsstufe "Repeatable_Read" verwendet wird. Diese Isolationsstufe ist ziemlich restriktiv. Dies kann zu einer verringerten Leistung führen, da Anwendungsanforderungen mehr Zeilen sperren, als es bei einer weniger restriktiven Isolationsstufe der Fall ist.

Abschließend wird res-sharing-scope auf Shareable gesetzt, d. h., es wird eine gemeinsam nutzbare Verbindung verwendet. Für einige Anwendungen ist eine gemeinsam nutzbare Verbindung völlig in Ordnung. Für andere, insbesondere Servlets, die mehrere Verbindungen in einer einzigen Methode service() abrufen, ist dies nicht in Ordnung.

Um Überraschungen zu vermeiden, die diese Einstellungen hervorrufen können, sollten Sie Ihre Anwendung so ändern, dass ein indirekter JNDI-Name anstelle eines direkten verwendet wird. Außerdem sollten Sie eine Ressourcenreferenz erstellen.

Indirekt

Wenn Sie von den Standardwerten abweichende Werte verwenden möchten, können Sie Ihre Ressourcenreferenz mit einem Assembliertool definieren. Die Ressourcenreferenz kann auch in den Editoren für EJB-Implementierungsdeskriptoren (ejb-jar.xml), Webimplementierungsdeskriptoren (web.xml) oder Application-Client-Implementierungsdeskriptoren (application-client.xml) mit einem Assembliertool erstellt werden. Nach der Definition der Ressourcenreferenz können Sie ein indirektes JNDI-Lookup (mit dem Kontext java:comp/env) durchführen. Danach werden die Werte für die Ressourcenreferenzeigenschaften, die in der Ressourcenreferenz definiert sind, verwendet, und die Nachricht mit der ID J2CA0122I wird nicht mehr angezeigt. Weitere Informationen finden Sie im Artikel über das Erstellen einer Ressourcenreferenz.


Symbol, das den Typ des Artikels anzeigt. Konzeptartikel



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