2010-06-23 2 views
2

Est-il possible d'exécuter un pool de connexions de base de données (Commons DBCP ou c3p0) dans une application déployée sur un serveur d'applications tel que Glassfish ou Websphere? Existe-t-il des étapes supplémentaires par rapport à une application autonome qui doivent être prises pour assurer la sécurité ou la performance?Utilisation d'un pool de connexions géré par application dans un serveur d'applications Java EE


mise à jour, la clarification de la raison - le cas d'utilisation je pense peuvent avoir besoin de nouvelles sources de données à définir à l'exécution par les utilisateurs finaux qualifiés - changer les sources de données fait partie de la fonctionnalité de l'application, si vous le souhaitez. Je ne pense pas que je puisse créer abnd utiliser des pools gérés par conteneur à la volée?

+0

duplication possible de [Quelle est la meilleure approche pour le regroupement de connexions?] (Http://stackoverflow.com/questions/2826575/what-is-best-approach-for-connection-pooling) – ewernli

+0

non, ce n'est pas un doublon –

+0

* utilisateurs finaux qualifiés * sonne comme un oxymoron :) –

Répondre

0

Je ne vois pas pourquoi vous voudriez. Pourquoi ne pas utiliser le pool de connexion fourni par le serveur d'applications? Mise à jour: Je ne crois pas qu'il soit possible de créer de nouveaux pools à la volée sans avoir à rebondir sur le serveur d'application, mais je peux me tromper. Si c'est exact, je ne crois pas que Commons DBCP ou C3P0 puisse aider.

+0

Je pensais que quelqu'un demanderait cela - cas d'utilisation clarifié en question. – Brabster

+0

Qu'est-ce qui nécessiterait exactement le recyclage AS? Pool est juste un ensemble de connexions utilisées par le pilote JDBC spécifié. –

+0

Bien sûr, mais la configuration d'un pool de connexions nécessite des modifications de la configuration du serveur d'applications. Si elle n'est lue qu'au démarrage et n'est pas rafraîchie périodiquement, le serveur d'applications n'a aucun moyen de savoir que sa configuration a changé, d'où le rebond. – duffymo

1

AFAIK cela fonctionne, mais il va bien sûr échapper à l'application. fonctionnalités de gestion de serveur.

En outre, je ne suis pas entièrement sûr de la façon dont le déploiement ou le redéploiement se produit et si les connexions sont correctement éliminées. Mais cela peut être considéré comme un détail de sécurité mineur: s'il est mal disposé, les connexions seront simplement expirées je suppose. Je ne suis pas entièrement sûr que cela fonctionne pour la source de données XA qui s'intègre avec le gestionnaire de transactions distribuées.

Cela dit, en utilisant l'application. Le pool de serveurs consiste généralement à configurer le nom JNDI dans un fichier de configuration. Ensuite, vous obtenez gratuitement la surveillance, la configuration depuis la console d'administration, la gestion de la charge, etc.

+0

Dispose est facile: créez une servlet non mappée et disposez toutes les connexions dans la méthode destroy(). La méthode est appelée lorsque l'application est déchargée. –

+0

Le pool de serveurs consiste généralement à configurer l'URL de connexion, les informations d'identification, les propriétés de connexion, les tailles de pool, les options de validation de connexion, etc., etc., et oui, nom JNDI :) –

1

En fait, vous pouvez créer des sources de données gérées par conteneur en fonction de AS que vous utilisez. Par exemple, Weblogic a une API de gestion complète qui est utilisée, par exemple, par son propre WLST (Weblogic Shell) pour configurer les serveurs par des scripts. C'est, bien sûr, l'API Java. Il a aussi des méthodes pour créer et configurer des sources de données. Un autre itinéraire est Configuration JMX. Tous les AS modernes s'exposent comme des conteneurs JMX. Vous pouvez également créer des sources de données via JMX. Tout ce dont vous avez besoin est d'accorder vos privilèges d'administrateur d'application (c'est-à-dire de fournir un nom d'utilisateur/mot de passe). L'avantage de DS géré par conteneur est qu'il peut être mis en grappe. En outre, il peut être géré par un être humain utilisant une interface utilisateur AS standard.

Si cela ne fonctionne pas pour vous, pourquoi, sûr vous pouvez créer un DS géré par l'application à tout moment et en n'importe quel nombre. Gardez juste à l'esprit qu'il sera lié à un serveur géré spécifique (sauf si vous implémentez un clustering manuel de sa définition).

+0

BTW, inconvénient du pool géré par conteneur est-ce que cela survivra à l'application. L'application a disparu, tout comme l'utilisateur, mais le pool est toujours là. Voulez-vous ou non - cela dépend de votre application. –

+0

Cela nécessiterait d'avoir le droit de le faire (et vous ne voulez généralement pas donner de tels droits à une application). –

+0

Dans WLS, vous pouvez accorder un rôle affiné (je crois, c'est Deployer) à l'application. Dans tous les cas, je créerais moi-même une application DS gérée par l'application dans un tel cas. –

Questions connexes