Wenn Sie mit generischen Benutzernamen arbeiten, um sich am SAP Server anzumelden (was bei Web Server Anwendungen gewöhnlich der Fall ist), ist es sinnvoll, Connection Pools zu verwenden, da alle Verbindungen in einem Pool die gleichen Information zu System, Benutzer und Mandant enthalten. Connection Pools haben gegenüber direkten Verbindungen zwei entscheidende Vorteile:
· Sie vermeiden einen Overhead bei der SAP-Anmeldung, da die Verbindung geöffnet bleibt und wiederverwendet werden kann, sobald die Anmeldung einmal erfolgt ist.
· Sie können die maximale Anzahl konkurrierender Anmeldungen begrenzen und so den Verbrauch zu vieler SAP-Ressourcen vermeiden.
Wählen Sie die maximale Anzahl konkurrierender Anmeldungen so, dass keine Wartesituation für die Benutzer entsteht.
Den größten Nutzen können Sie mit Connection Pools erreichen, wenn alle Pools die gleiche Benutzer-ID verwenden. Da in SAP die Berechtigungen jedoch mit dem Benutzer verknüpft sind, ist dieses Vorgehen nur unter bestimmten Voraussetzungen (z.B. wenn keine sicherheitsrelevanten Bereiche betroffen sind) realisierbar.
Das folgende Beispielcoding soll genau wie im Abschnitt Direkte Verbindungen Verbindungsattribute auflisten, nur das hier statt direkter Verbindungen Connection Pools verwendet werden. Das komplette Beispielprogramm zum Erstellen eines Connection Pools finden Sie unter
...
1. Als ersten Schritt benötigen Sie folgende spezifische Klassen:
¡ JCO.Pool: diese Klasse repräsentiert einen Connection Pool
¡ JCO.PoolManager: hier werden alle Connection Pool innerhalb einer Java Virtual Machine (JVM) verwaltet.
2. Wählen Sie einen Pool-Namen. In SAP JCo können Sie beliebige Pool-Namen verwenden. Da Pools jedoch innerhalb einer JVM global gültig sind, sollten Sie einen bestimmten Namensstandard verwenden, wenn verschiedene Anwendungen auf der selben JVM laufen.
3. Das globale JCO.PoolManager Objekt verwaltet alle Pools und kann mit der Methode getClientPoolManager() der Klasse JCO aufgerufen werden. Die Methode getPool() versucht einen bestimmten Pool (-namen) aufzurufen. Wenn kein solcher Pool existiert (Rückgabewert null), wird im nächsten Schritt ein neuer Pool angelegt.
JCO.Pool JCO.PoolManager |
static final String POOL_NAME = “Pool“;
|
JCO.Pool pool = JCO.getClientPoolManager ().getPool (POOL_NAME); if (pool == null) {
|
Informationen zum weiteren Vorgehen finden Sie hier:
· Verbindung anfordern und freigeben
Das komplette Beispielprogramm zum Erstellen eines Connection Pools: