2009-07-09 8 views
0

Je crée un service Web à l'aide de j2ee. ce webservice frappe DB pour insérer/mettre à jour des données. Nous utilisons des pilotes de connexion pour établir la connexion à la base de données. Lorsque nous avons lancé ce service Web et l'avons testé, nous avons rencontré un problème de fuite de mémoire et la transaction a échoué. Voici le message d'erreur, nous avons obtenu:Objet de connexion statique Problème

« allocation de mémoire a échoué lors du traitement des requêtes »

Ce problème a été résolu lorsque nous avons redémarré le serveur weblogic. Cet objet de connexion statique est uniquement utilisé par les EJB pour gérer les transactions DB. Cet objet de connexion statique unique créera-t-il un problème de fuite de mémoire et entraînera l'échec de la transaction?

Note: S'il vous plaît ne pas conseiller de fermer la connexion, puisque nous en avons besoin tout au long de la transaction.

Répondre

0
  1. Vous devriez toujours récupérer une connexion à partir du pool de connexion (source de données) configuré sur le serveur (en utilisant JNDI)
  2. Vous ne devriez jamais garder votre objet de connexion statique
  3. Vous devriez toujours close() vous connexion dans le bloc final. (Lorsque vous récupérez une connexion à partir d'une source de données et d'appeler close(), vous dites simplement la piscine que vous avez terminé votre connexion. Vous ne fermez pas réellement.

faire tout cela et vous devriez être bien.