Le pilote JDBC DB2 Universal ne prend pas en charge la connectivité de type |4 à DB2 pour les bases de données VM/VSE. Les rubriques intitulées |"Définition de l'environnement Java Windows" et "Installation du pilote |JDBC DB2 Universal" du manuel Application |Development Guide: Programming Client Applications, ainsi que le centre de |documentation DB2 UDB indiquent à tort que le pilote JDBC DB2 Universal prend en |charge cette connectivité de type 4 à DB2 pour les bases de données VM/VSE.
Les applications Java qui utilisent DB2 Universal JDBC Driver type 4 connectivity pour accéder aux serveurs DB2 UDB pour z/OS profitent des fonctions du concentrateur de connexions et d'équilibrage des charges de travail Sysplex.
Ces fonctions sont identiques aux fonctions du concentrateur de connexions et d'équilibrage des charges de travail Sysplex de DB2 Connect.
Le concentrateur de connexions Pilote JDBC universel DB2 permet de réduire les ressources nécessaires aux serveurs de base de données de DB2 UDB pour z/OS pour prendre en charge de nombreuses applications client ; il permet à de nombreux objets de connexion d'utiliser la même connexion physique, ce qui réduit le nombre total de connexions physiques au serveur de base de données.
L'équilibrage des charges de travail Sysplex Pilote JDBC universel DB2 permet d'améliorer la disponibilité d'un groupe de partage des données car le pilote obtient souvent des informations d'état concernant les membres d'un groupe de partage de données. Le pilote utilise cette information pour déterminer le membre du partage de données vers lequel il doit acheminer la transaction suivante. Avec l'équilibrage des charges de travail Sysplex, le serveur DB2 UDB pour z/OS et Workload Manager pour z/OS (WLM) garantissent une distribution efficace du travail parmi les membres du groupe de partage de données et la transmission du travail à un autre membre d'un groupe de partage de données si un membre subit un incident.
Pilote JDBC universel DB2 utilise des objets de transfert et un groupe d'objets de transfert global pour prendre en charge le concentrateur de connexions et l'équilibrage des charges de travail Sysplex. Un objet de transfert existe pour chaque connexion physique au serveur de base de données. Lorsque vous activez le concentrateur de connexion et l'équilibrage des charges de travail Sysplex, vous définissez le nombre maximal de connexions physiques au serveur de base de données à n'importe quel point de cohérence en définissant le nombre maximal d'objet de transfert.
Au niveau du pilote, vous définissez des limites pour le nombre d'objets de transfert à l'aide des propriétés de configuration Pilote JDBC universel DB2.
Au niveau de la connexion, vous activez et désactivez l'équilibrage des charges de travail Sysplex et le concentrateur de connexions Pilote JDBC universel DB2, puis définissez les limites du nombre d'objets de transfert à l'aide des propriétés DataSource.
Vous pouvez contrôler le groupe d'objets de transfert global par l'une des deux méthodes suivantes :
Chacune des propriétés de configuration suivante est utilisée pour le concentrateur de connexions et l'équilibrage des charges de travail Sysplex
Le type de données de db2.jcc.dumpPool est un nombre entier (ent.). Les propriétés de configuration db2.jcc.dumpPoolStatisticsOnSchedule et db2.jcc.dumpPoolStatisticsOnScheduleFile doivent également être définies pour le processus d'écriture des statistiques avant l'écriture de toute statistique.
Vous pouvez indiquer un ou plusieurs types de statistiques suivants avec la propriété db2.jcc.dumpPool :
Pour suivre plus d'un type d'événement, ajoutez les valeurs pour les types d'événements dont vous souhaitez exécuter la trace. Par exemple, supposons que vous souhaitiez suivre les événements DUMP_GET_OBJECT et DUMP_CREATE_OBJECT. Les équivalents numériques de ces valeurs sont 2 et 16 ; par conséquent, vous devez indiquer 18 pour la valeur db2.jcc.dumpPool.
La valeur par défaut est 0, ce qui signifie que les statistiques simplifiées uniquement sont écrites pour le groupe de transfert global.
La valeur par défaut est -1, ce qui signifie que les statistiques du groupe de transfert global ne sont pas écrites.
Si la propriété de configuration db2.jcc.dumpPoolStatisticsOnScheduleFile n'est pas indiquée, les statistiques du groupe de transfert global ne sont pas écrites.
La valeur par défaut de la propriété de configuration db2.jcc.maxTransportObjectIdleTime est définie sur 60. La définition du paramètre db2.jcc.maxTransportObjectIdleTime sur une valeur inférieure à 0 engendre la suppression immédiate des objets de transfert inutilisés dans le groupe. Cette action n'est pas recommandée parce qu'elle peut engendrer une perte de performances considérable.
La valeur par défaut de la propriété de configuration db2.jcc.maxTransportObjectWaitTime est définie sur -1. Toute valeur négative signifie que les applications attendent toujours.
La valeur par défaut de la propriété de configuration db2.jcc.maxTransportObjects est définie sur -1, ce qui signifie qu'aucune limite n'existe pour le nombre d'objets de transfert dans le groupe d'objets de transfert global.
La valeur par défaut de la propriété de configuration du paramètre db2.jcc.minTransportObjects est définie sur 0. Toute valeur inférieure ou égale à 0 signifie que le groupe d'objets de transfert global peut se vider.
Chacune des propriétés DataSource Pilote JDBC universel DB2 suivantes est utilisée pour le concentrateur de connexions et l'équilibrage des charges de travail Sysplex.
Le type de données de la propriété enableConnectionConcentrator est une valeur booléenne. La valeur par défaut est false. Toutefois, si enableSysplexWLB est définie sur true, la valeur par défaut est true.
Le type de données de la propriété enableSysplexWLB est une valeur booléenne. La valeur par défaut est false. Toutefois, si enableSysplexWLB est définie sur true, enableConnectionConcentrator est définie sur true par défaut.
Le type de données de cette propriété est un nombre entier (ent.).
Si la valeur maxTransportObjects n'a pas été atteinte et qu'un objet de transfert n'est pas disponible dans le groupe d'objets de transfert global, le groupe crée un nouvel objet de transfert. Si la valeur maxTransportObjects a été atteinte, l'application attend pendant la durée spécifiée dans la propriété de configuration db2.jcc.maxTransportObjectWaitTime. Une fois cette durée écoulée, si un objet de transfert n'est toujours pas disponible dans le groupe, le groupe émet une exception SQL.
La propriété maxTransportObjects ne se substitue pas à la propriété de configuration db2.jcc.maxTransportObjects. La propriété maxTransportObjects n'a pas d'effet sur les connexions des autres objets DataSource. Si la valeur maxTransportObjects est supérieure à la valeur db2.jcc.maxTransportObjects, maxTransportObjects n'augmente pas la valeur db2.jcc.maxTransportObjects.
La valeur par défaut de la propriété maxTransportObjects est définie sur -1, ce qui signifie que le nombre d'objets de transfert pour DataSource est limité uniquement par la valeur db2.jcc.maxTransportObjects pour le pilote.
La procédure qui suit est un exemple d'activation des fonctions d'équilibrage des charges de travail Sysplex et du concentrateur de connexions Pilote JDBC universel DB2 avec WebSphere Application Server.
Configuration minimale du serveur :
Configuration minimale du client :
Pour activer les fonctions d'équilibrage des charges de travail Sysplex et le concentrateur de connexions Pilote JDBC universel DB2 avec WebSphere Application Server, procédez comme suit :
java com.ibm.db2.jcc.DB2Jcc -versionRecherchez une ligne semblable à celle-ci dans les résultats :
[ibm][db2][jcc] Driver: IBM DB2 JDBC Universal Driver Architecture n nn doit être une version 2.7 ou suivante.
Définissez les propriétés de configuration dans un fichier DB2JccConfiguration.properties.
db2.jcc.minTransportObjects=0 db2.jcc.maxTransportObjects=1500 db2.jcc.maxTransportObjectWaitTime=-1 db2.jcc.dumpPool=0 db2.jcc.dumpPoolStatisticsOnScheduleFile= /home/WAS/logs/srv1/poolstats
Dans la console d'administration de WebSphere Application Server, définissez les propriétés suivantes pour les sources de données utilisées par votre application pour la connexion au serveur de base de données :
Pour contrôler ces fonctions, vous devez contrôler le groupe d'objets de transfert global. Vous pouvez contrôler le groupe d'objets de transfert global par l'une des deux méthodes suivantes :
Les propriétés de configuration db2.jcc.dumpPool, db2.jcc.dumpPoolStatisticsOnSchedule et db2.jcc.dumpPoolStatisticsOnScheduleFile permettent de contrôler le groupe des objets de transfert global à l'aide de la fonction de trace.
Par exemple, l'ensemble suivant des paramètres de propriétés de configuration engendre l'écriture de message d'erreur Sysplex et de message d'erreur de vidage de groupe toutes les 60 secondes vers un fichier appelé /home/WAS/logs/srv1/poolstats :
db2.jcc.dumpPool=DUMP_SYSPLEX_MSG|DUMP_POOL_ERROR db2.jcc.dumpPoolStatisticsOnSchedule=60 db2.jcc.dumpPoolStatisticsOnScheduleFile=/home/WAS/logs/srv1/poolstats
Le fichier de statistiques du groupe contient des entrées qui ressemblent aux entrées suivantes :
time Scheduled PoolStatistics npr:2575 nsr:2575 lwroc:439 hwroc:1764 coc:372 aooc:362 rmoc:362 nbr:2872 tbt:857520 tpo:10
Les significations de ces zones sont les suivantes :
Vous pouvez écrire des applications afin de regrouper les statistiques du groupe d'objets de transfert global. Ces applications créent des objets dans la classe DB2PoolMonitor et appellent des méthodes d'extraction d'informations du groupe.
Par exemple, le code suivant crée un objet pour le contrôle du groupe d'objets de transfert global :
import com.ibm.db2.jcc.DB2PoolMonitor; DB2PoolMonitor transportObjectPoolMonitor = DB2PoolMonitor.getPoolMonitor (DB2PoolMonitor.TRANSPORT_OBJECT);
Après avoir créé l'objet DB2PoolMonitor, vous pouvez utiliser les méthodes suivantes pour contrôler le groupe d'objets de transfert global.
public int getMonitorVersion()
Permet d'extraire la version de la classe DB2PoolMonitor livrée avec Pilote JDBC universel DB2.
public int totalRequestsToPool()
Permet d'extraire le nombre total de requêtes émises par le Pilote JDBC universel DB2 au groupe depuis la création de ce dernier.
public int successfullRequestsFromPool()
Permet d'extraire le nombre de requêtes réussies, émises par le Pilote JDBC universel DB2 au groupe depuis la création de ce dernier. Une requête réussie signifie que le groupe a renvoyé un objet.
public int numberOfRequestsBlocked()
Permet d'extraire le nombre de requêtes émises par le Pilote JDBC universel DB2 au groupe qui ont été bloquées par le groupe parce que ce dernier a atteint sa capacité maximale. Une requête bloquée peut aboutir si un objet est renvoyé au groupe avant le dépassement de la valeur de configuration db2.jcc.maxTransportObjectWaitTime et l'émission d'une exception.
public long totalTimeBlocked()
Permet d'extraire le temps total en millisecondes pour les requêtes qui ont été bloquées par le groupe. Ce temps peut être très supérieur au temps d'exécution écoulé de l'application si cette dernière utilise plusieurs unités d'exécution.
public int lightWeightReusedObjectCount()
Permet d'extraire le nombre d'objets qui ont été réutilisés mais sans appartenir au groupe. Cette situation se produit si un objet de connexion libère un objet de transfert dans les limites de la transaction. Si l'objet de connexion nécessite un objet de transfert ultérieurement et que l'objet de transfert d'origine n'a pas été utilisé par un autre objet de connexion, l'objet de connexion peut utiliser cet objet de transfert.
public int heavyWeightReusedObjectCount()
Permet d'extraire le nombre d'objets du groupe qui ont été réutilisés.
public int createdObjectCount()
Permet d'extraire le nombre d'objets créés par le Pilote JDBC universel DB2 depuis la création du groupe.
public int agedOutObjectCount()
Permet d'extraire le nombre d'objets qui dépassent le délai d'inactivité indiqué dans la propriété de configuration db2.jcc.maxTransportObjectIdleTime, puis qui ont été supprimés du groupe.
public int removedObjectCount()
Permet d'extraire le nombre d'objets qui ont été supprimés du groupe depuis sa création.
public int totalPoolObjects()
Nombre d'objets qui se trouvent actuellement dans le groupe.
Le mot clé OleDbReportIsLongForLongTypes est pris en charge par les serveurs de base de données suivants :
Le moteur de curseur du client de OLE BD et le générateur de commandes (CommandBuilder) de OLE DB .NET Data Provider génère une mise à jour et supprime des instructions en fonction des informations de colonnes fournies par IBM DB2 OLE DB Provider. Si la clause WHERE de l'instruction générée contient un type LONG, elle échouera car le type LONG ne peut pas être utilisé dans une recherche avec un opérateur d'égalité. Si l'on attribue la valeur 1 au mot clé OleDbReportIsLongForLongTypes, IBM DB2 OLE DB Provider signale les types LONG (LONG VARCHAR, LONG VARCHAR FOR BIT DATA, LONG VARGRAPHIC et LONG VARGRAPHIC FOR BIT DATA) dotés du marqueur DBCOLUMNFLAGS_ISLONG. Ceci évite l'utilisation de colonnes longues dans la clause WHERE.
Le mot clé OleDbSQLColumnsSortByOrdinal est pris en charge par les serveurs de base de données suivants :
La spécification Microsoft OLE DB requiert que IDBSchemaRowset::GetRowset(DBSCHEMA_COLUMNS) renvoie l'ensemble de lignes trié en fonction des colonnes TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME et COLUMN_NAME. IBM DB2 OLE DB Provider respecte cette spécification. En revanche, les applications qui utilisent Microsoft ODBC Bridge Provider (MSDASQL) sont généralement codées pour le tri de l'ensemble de lignes par ORDINAL_POSITION (position ordinale). Si vous attribuez la valeur 1 au mot clé OleDbSQLColumnsSortByOrdinal, le fournisseur renverra un ensemble de lignes triées par ORDINAL_POSITION.
IBM DB2 OLE DB Provider a ajouté un nouveau groupe de propriétés : DB2 Data Source. DBPROPSET_DB2DATASOURCE est le jeu de propriétés de DB2 Data Source.
Le GUID de ce jeu de propriétés est {0x8a80412a,0x7d94,0x4fec,{0x87,0x3e,0x6c,0xd1,0xcd,0x42,0x0d,0xcd}}
DBPROPSET_DB2DATASOURCE comprend trois propriétés :
#define DB2PROP_REPORTISLONGFORLONGTYPES 4 Property group: DB2 Data Source Property set: DB2PROPSET_DATASOURCE Type: VT_BOOL Typical R/W: R/W Description: Report IsLong for Long Types
Le moteur de curseur du client de OLE BD et le générateur de commandes (CommandBuilder) de OLE DB .NET Data Provider génère une mise à jour et supprime des instructions en fonction des informations de colonnes fournies par IBM DB2 OLE DB Provider. Si la clause WHERE de l'instruction générée contient un type LONG, elle échouera car le type LONG ne peut pas être utilisé dans une recherche avec un opérateur d'égalité.
Valeurs | Signification |
---|---|
VARIANT_TRUE | Permet à IBM DB2 OLE DB Provider de signaler des types LONG (LONG VARCHAR, LONG VARCHAR FOR BIT DATA, LONG VARGRAPHIC et LONG VARGRAPHIC FOR BIT DATA) dotés du marqueur DBCOLUMNFLAGS_ISLONG. Ceci évite l'utilisation de colonnes longues dans la clause WHERE. |
VARIANT_FALSE | DBCOLUMNFLAGS_ISLONG n'est pas défini pour LONG VARCHAR, LONG VARCHAR FOR BIT DATA, LONG VARGRAPHIC et LONG VARGRAPHIC FOR BIT DATA. Il s'agit de la valeur par défaut. |
#define DB2PROP_RETURNCHARASWCHAR 2 Property group: DB2 Data Source Property set: DB2PROPSET_DATASOURCE Type: VT_BOOL Typical R/W: R/W Description: Return Char as WChar
Valeurs | Signification |
---|---|
VARIANT_TRUE | OLE DB décrit les colonnes de type CHAR, VARCHAR, LONG VARCHAR, ou CLOB comme étant DBTYPE_WSTR. La page de codes des données concernée dans ISequentialStream est UCS-2. Il s'agit de la valeur par défaut. |
VARIANT_FALSE | OLE DB décrit les colonnes de type CHAR, VARCHAR, LONG VARCHAR, ou CLOB comme étant DBTYPE_STR. La page de codes des données concernée dans ISequentialStream est la page de codes locale du client. |
#define DB2PROP_SORTBYORDINAL 3 Property group: DB2 Data Source Property set: DB2PROPSET_DATASOURCE Type: VT_BOOL Typical R/W: R/W Description: Sort By Ordinal
La spécification Microsoft OLE DB requiert que IDBSchemaRowset::GetRowset(DBSCHEMA_COLUMNS) renvoie l'ensemble de lignes trié en fonction des colonnes TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME et COLUMN_NAME. IBM DB2 OLE DB Provider respecte cette spécification. En revanche, les applications qui utilisent Microsoft ODBC Bridge Provider (MSDASQL) sont généralement codées pour le tri de l'ensemble de lignes par ORDINAL_POSITION (position ordinale).
Valeurs | Signification |
---|---|
VARIANT_TRUE | Le fournisseur renverra un ensemble de lignes triées par position ordinale (ORDINAL_POSITION). |
VARIANT_FALSE | Le fournisseur renverra un ensemble de lignes triées par TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME. Il s'agit de la valeur par défaut. |
Dans la rubrique "Installing the DB2 Universal JDBC Driver", le diagramme de syntaxe DB2Binder définit de façon erronée la syntaxe de l'URL pour le pilote JDBC de DB2 Universal. La représentation correcte de la syntaxe de l'URL de DB2Binder figure dans le schéma suivant :
Sous DB2 Universal Database (UDB) pour Linux, UNIX, et Windows, la fonction de redirection automatique du client permet aux applications client de récupérer après une perte de communication avec le serveur et de continuer à fonctionner après une interruption minimale.
A chaque verrouillage de serveur, chaque client connecté à ce serveur reçoit une erreur de transmission qui met fin à la connexion et engendre une erreur d'application. Si la disponibilité est importante, vous devez disposer d'une configuration redondante ou d'une prise en charge de la fonction de secours. La fonction de secours est la possibilité dont dispose un serveur de reprendre les opérations lorsqu'un autre serveur échoue. Dans tous les cas, le client du pilote JDBC de DB2 Universal tente de rétablir la connexion à un nouveau serveur ou au serveur original, qui est susceptible de fonctionner sur un noeud de secours. Lorsque la connexion est rétablie, l'application reçoit une exception SQLException qui l'informe de l'échec de la transaction mais ne l'empêche pas de passer à la transaction suivante.
Une fois l'emplacement du serveur de remplacement spécifié sur une base de données particulière au niveau de l'instance du serveur, l'emplacement du serveur principal et du serveur de remplacement sont renvoyés au client au moment de la connexion. Le pilote JDBC de DB2 Universal crée une instance d'objet DB2ClientRerouteServerList pouvant être référencée et stocke cette instance dans sa mémoire transitoire. Si la communication est perdue, le pilote JDBC de DB2 Universal JDBC tente de rétablir la connexion grâce aux informations du serveur que le serveur a renvoyé.
La propriété clientRerouteServerListJNDIName DataSource offre un support supplémentaire de redirection du client au niveau de ce dernier. Cette propriété remplit deux fonctions :
La propriété clientRerouteServerListJNDIName permet d'identifier une référence JNDI à une instance DB2ClientRerouteServerList dans un référentiel JNDI d'informations de serveur de remplacement. Une fois la connexion au serveur principal établie, les informations de serveur de remplacement fournies par clientRerouteServerListJNDIName sont remplacées par celles provenant du serveur. Le pilote JDBC DB2 Universal tente de propager les informations mises à jour vers le magasin JNDI après une reprise en ligne si la propriété clientRerouteServerListJNDIName est définie. Si tel est le cas, les informations du serveur principal spécifiées dans DB2ClientRerouteServerList seront utilisées pour la connexion. Si le serveur principal n'est pas spécifié, les informations serverName spécifiées sur la source de données seront utilisées.
DB2ClientRerouteServerList est un bean Java sérialisable doté de quatre propriétés :
Les méthodes getter et setter (consultation et modification) permettant l'accès à ces propriétés sons fournies. Voici la définition de la classe DB2ClientRerouteServerList :
package com.ibm.db2.jcc; public class DB2ClientRerouteServerList implements java.io.Serializable, javax.naming.Referenceable { public String[] alternateServerName; public synchronized void setAlternateServerName(String[] alternateServer); public String[] getAlternateServerName(); public int[] alternatePortNumber; public synchronized void setAlternatePortNumber(int[] alternatePortNumberList); public int[] getAlternatePortNumber(); public synchronized void setPrimaryServerName (String primaryServerName); public String getPrimaryServerName (); public synchronized void setPrimaryPortNumber (int primaryPortNumber) public int getPrimaryPortNumber (); }
Une connexion de secours nouvellement établie est configurée avec les propriétés de source de données initiales, à l'exception du nom de serveur et du numéro de port. En outre, tout registre spécial DB2 UDB modifié lors de la connexion d'origine est rétabli dans la connexion de secours par le pilote JDBC de DB2 Universal.
Lorsqu'un arrêt anormal de la communication se produit, le pilote JDBC de DB2 Universal tente d'abord une reprise vers le serveur principal. Si la reprise échoue, le pilote tente de se connecter à l'emplacement de remplacement (fonction de secours). Une fois la connexion rétablie, le pilote émet une exception java.sql.SQLException vers l'application avec SQLCODE -4498, qui indique à l'application le rétablissement automatique de la connexion vers le serveur de remplacement. L'application peut alors relancer sa transaction.
Procédez comme suit pour configurer la mémoire de façon à rendre DB2ClientRerouteServerList persistant :
// Create a starting context for naming operations InitialContext registry = new InitialContext(); // Create a DB2ClientRerouteServerList object DB2ClientRerouteServerList address=new DB2ClientRerouteServerList(); // Set the port number and server name for the primary server address.setPrimaryPortNumber(50000); address.setPrimaryServerName("mvs1.sj.ibm.com"); // Set the port number and server name for the alternate server int[] port = {50002}; String[] server = {"mvs3.sj.ibm.com"}; address.setAlternatePortNumber(port); address.setAlternateServerName(server); registry.rebind("serverList", address);
datasource.setClientRerouteServerListJNDIName("serverList");
Les propriétés de configuration du pilote JDBC de DB2 Universal vous permettent de définir les valeurs de propriété dont la portée s'étend au niveau du pilote. Ces paramètres s'appliquent aux instances des applications et DataSource. Vous pouvez les modifier sans modifier le code source de l'application ni les caractéristiques de DataSource.
Chaque paramètre de propriété de configuration du pilote JDBC de DB2 Universal se présente sous la forme suivante :
propriété=value
Si la propriété de configuration commence par db2.jcc.override, elle s'applique à toutes les connexions et remplace toute propriété Connection ou DataSource portant le même nom de propriété. Si la propriété de configuration commence par db2.jcc or db2.jcc.default, il s'agit d'une propriété de configuration par défaut. Les paramètres de propriété Connection ou DataSource remplacent cette valeur.
Pour définir les propriétés de configuration, procédez comme suit :
Pour les applications Java autonomes, vous pouvez définir les propriétés de configuration en tant que propriétés système Java en indiquant -Dproperty=value pour chaque propriété de configuration lorsque vous exécutez la commande java.
Pour les applications Java autonomes, vous pouvez définir les propriétés de configuration en indiquant l'option -Ddb2.jcc.propertiesFile=path lorsque vous exécutez la commande java.
DB2JccConfiguration.properties peut être un fichier autonome ou peut être inclus dans un fichier JAR.
Si DB2JccConfiguration.properties est un fichier autonome, son chemin d'accès doit être une concaténation CLASSPATH.
Si DB2JccConfiguration.properties est un fichier JAR, ce fichier doit se trouver dans la concaténation CLASSPATH.
Vous pouvez définir les propriétés de configuration du pilote JDBC de DB2 Universal ci-dessous. Toutes les propriétés sont facultatives.
Indiquez un nom qualifié complet du fichier pour la valeur de la propriété db2.jcc.override.traceFile.
La propriété db2.jcc.override.traceFile remplace la propriété traceFile pour l'objet Connection ou DataSource.
Par exemple, en paramétrant db2.jcc.override.traceFile comme suit, vous activez le traçage du code Java du pilote JDBC de DB2 Universal dans un fichier nommé /SYSTEM/tmp/jdbctrace :
db2.jcc.override.traceFile=/SYSTEM/tmp/jdbctrace
Il est recommandé de définir les propriétés de trace en collaboration avec le service de support IBM Software Support.
La fonction db2secFreeToken (mémoire libre gérée par le jeton) ne fait plus partie de l'API du plug-in d'authentification utilisateur db2secGssapiServerAuthFunctions_1.
L'intégrité de votre installation DB2 Universal Database (UDB) peut être compromise si le déploiement des plug-ins de sécurité n'est pas correctement codé, révisé et testé. DB2 UDB est protégé contre de nombreux types d'incidents courants, mais son intégrité n'est pas totalement garantie en cas de déploiement de plug-in de sécurité écrits par l'utilisateur.
Si vous utilisez votre plug-in de sécurité personnel, vous pouvez utiliser un ID utilisateur composé de 255 caractères au maximum sur une instruction de connexion émise par l'intermédiaire de l'interpréteur de commandes ou d'une instruction SQL dynamique.
Pour les API db2secGetGroupsForUser, db2secValidatePassword et db2secGetAuthIDs, le paramètre d'entrée dbname peut être nul et la valeur 0 attribuée à son paramètre d'entrée de longueur correspondant dbnamelen.
.so est désormais accepté comme suffixe de nom de fichier des bibliothèques de plug-ins de sécurité écrits par l'utilisateur sur toutes les plateformes Linux et UNIX.
Sous AIX, le suffixe .a ou .so peut être attribué aux bibliothèques de plug-ins de sécurité. Si les deux versions de bibliothèque de plug-ins existent, la version .a est utilisée.
Pour HP-UX on PA-RISC, le suffixe .sl ou .so peut être attribué aux bibliothèques de plug-ins de sécurité. Si les deux versions de bibliothèque de plug-ins existent, la version .sl est utilisée.
Sur toutes les autres plateformes Linux et UNIX, .so est le seul suffixe de nom de fichier pris en charge pour les bibliothèques de plug-ins de sécurité.
Sous AIX, le suffixe de nom de fichier .a ou .so peut être attribué aux bibliothèques de plug-ins de sécurité. Le mécanisme utilisé pour charger la bibliothèque de plug-ins dépend du suffixe utilisé :
Par exemple, pour construire une bibliothèque de plug-ins de style d'archive, procédez comme suit :
xlc_r -qmkshrobj -o shr.o MyPlugin.c -bE:MyPlugin.exp ar rv MyPlugin.a shr.o
xlc_r -qmkshrobj -o MyPlugin.so MyPlugin.c -bE:MyPlugin.exp
Sur toutes les plateformes autres qu'AIX, les bibliothèques de plug-ins de sécurité sont toujours supposées être des objets partagés téléchargeables de manière dynamique.
| | |Avec l'édition de la version 8.2 de DB2 UDB pour Linux, UNIX, |Windows, vous pouvez créer vos propres méthodes d'authentification sous forme |de modules d'extension (bibliothèques à charger). Le moteur DB2 UDB |accède aux modules d'extension préalablement chargés pour effectuer une authentification |d'utilisateur. Afin de prendre en charge les applications client écrites en |Java, le pilote JDBC DB2 Universal fournit un support de module d'extension |de sécurité dans la version 8.2 de DB2 UDB, FixPak 4.
|Pour les applications Java qui se servent du pilote JDBC DB2 Universal pour |authentifier le module d'extension, les utilisateurs |doivent implémenter leur propre module d'extension en étendant la classe |abstraite com.ibm.db2.jcc.DB2JCCPlugin et en définissant les propriétés |suivantes :
|Voici quelques exemples :
|java.util.Properties properties = new java.util.Properties(); | properties.put("user", "db2admin"); | properties.put("password", "admindb2"); | properties.put("pluginName", "gssapi_simple"); | properties.put("securityMechanism", | new String(""+com.ibm.db2.jcc.DB2BaseDataSource.PLUGIN_SECURITY+"")); | properties.put("plugin", new JCCSimpleGSSPlugin()); | Connection con = java.sql.DriverManager.getConnection(url, properties);
L'authentification GSS-API ne transmet qu'un seul jeton du client au serveur et un jeton du serveur au client. Ces jetons s'obtiennent sur le client, à partir de gss_init_sec_context(), et sur le serveur, à partir de gss_accept_sec_context(). Les plug-ins GSS-API qui tentent d'autres transmissions génèrent une erreur imprévue, entraînant l'échec de la connexion.
Le chiffrement et la signature des messages ne sont pas disponibles dans les plug-ins de sécurité GSS-API.
Toutes les résiliations d'application (normales et anormales) mettent fin de manière implicite aux unités de travail en attente, quel que soit le système d'exploitation.
Dans la documentation Nouveautés de DB2 Universal Database (UDB) version 8.2, des erreurs figurent dans la partie traitant de la prise en charge des transactions réparties de la section relative aux améliorations du pilote JDBC de DB2 Universal. La dernière phrase de cette section est incorrecte. La voici après correction :
A partir de la version 8.2, DB2 UDB prend en charge le traitement des transactions réparties conformes à la spécification XA. Cette prise en charge met en oeuvre les spécifications Java 2 Platform Enterprise Edition (J2EE) Java Transaction Service (JTS) et Java Transaction API (JTA).
[ Début de page |Page précédente | Page suivante | Table des matières ]