Cette section décrit les problèmes connus du pilote Sun JDBC intégré et les solutions associées.
Pour définir le niveau d'isolement d'une connexion, le pool de connexions correspondant doit être créé sur le même niveau d'isolement. Reportez-vous au manuel Sun Java System Application Server Enterprise Edition 8.2 Administration Guide pour plus d'informations sur la configuration des pools de connexions.
Si une application génère plus de 3000 objets PreparedStatement au cours d'une transaction, l'erreur suivante peut se produire avec DB2 :
[sunm][DB2 JDBC Driver] No more available statements.Please recreate your package with a larger dynamicSections value.
Ajoutez les propriétés suivantes à la définition de pool de connexions afin que le pilote puisse rééditer les liens des packages DB2 avec une valeur dynamicSections supérieure :
createDefaultPackage=true replacePackage=true dynamicSections=1000
Reportez-vous au manuel Sun Java System Application Server Enterprise Edition 8.2 Administration Guide pour plus d'informations sur la configuration des pools de connexions.
En liaison avec l'erreur PrepardStatement mentionnée ci-dessus, le message d'erreur suivant peut également être généré :
[sunm][DB2 JDBC Driver][DB2]Virtual storage or database resource is not available.
Augmentez la valeur du paramètre de configuration APPLHEAPSZ pour le serveur DB2. 4096 constitue une valeur correcte.
Niveau d'isolement TRANSACTION_SERIALIZABLE. Si votre application utilise le niveau d'isolement TRANSACTION_SERIALIZABLE avec l'un des paramètres indiqués ci-dessus, elle peut rester bloquée en tentant d'obtenir la connexion.
Pour définir le niveau d'isolement d'une connexion, le pool de connexions correspondant doit être créé sur le même niveau d'isolement. Reportez-vous au manuel Sun Java System Application Server Enterprise Edition 8.2 Administration Guide pour obtenir des instructions.
Les applications utilisant le niveau d'isolement TRANSACTION_SERIALIZABLE avec le pilote Sun intégré pour Sybase Adaptive Server peuvent s'interrompre lors de l'utilisation d'une instruction préparée pour la mise à jour si deux transactions parallèles sont en cours d'exécution et que l'une d'entre elles est annulée. L'annulation de la connexion échoue avec le message ci-dessous et les connexions annulées ne peuvent plus être utilisées :
java.sql.SQLException: [sunm][Sybase JDBC Driver]Request cannot be submitted due to wire contention
Sybase Adaptive Server ne prend pas en charge le niveau d'isolement TRANSACTION_REPEATABLE_READ. Cependant, lors de l'interrogation de DatabaseMetaData, le pilote Sun intégré indique que ce niveau d'isolement est pris en charge par la base de données. Les applications utilisant ce niveau d'isolement vont échouer.
Les applications utilisant le pilote Sun intégré ne peuvent pas définir le niveau d'isolement TRANSACTION_READ_UNCOMMITTED. L'application génère l'exception suivante lors du premier accès à DataBaseMetaData :
java.sql.SQLException: [sunm][Sybase JDBC Driver][Sybase]The optimizer could not find a unique index which it could use to perform an isolation level 0 scan on table 'sybsystemprocs.dbo.spt_server_info'.
Aucune pour l'instant.
Définissez la propriété ci-dessous dans le pool de connexions JDBC lors de l'utilisation de la source de données Oracle SUN JDBC (com.sun.sql.jdbcx.oracle.OracleDataSource):
<property name="serverType" value="dedicated"/>
La valeur de la propriété dépend de la configuration du listener du serveur Oracle. Si le listener est configuré en mode partagé, la valeur "partagé" qui doit alors s'afficher dans l'exemple ci-dessus doit être remplacée par la valeur "dedicated".