6
votes

Les pilotes JDBC devraient-ils être inclus dans une guerre?

Nous avons un produit logiciel commercial en cours de développement. Il prend en charge les backends Oracle, MySQL et SQL * Server (nous utilisons également H2 pour les tests). Nous faisons nos tests d'intégration contre ces différentes bases de données à l'aide de pilotes JDBC d'une version spécifique. Maven gère tout cela magnifiquement.

Lors de l'emballage de la demande en tant que guerre, est-ce que nous incluons les pilotes JDBC? Quelle est la pratique standard?

Puisque nous ne savons pas quelle base de données pourrait être utilisée à l'avance, nous devrions tous les inclure. Les conteneurs de servlet ciblés sont Tomcat et Jetty, mais certains clients voudront également courir dans WebSphere et JBoss.

Pour que le servlet contienne et que les serveurs d'applications viennent avec leurs propres pilotes JDBC? Est-ce que notre conflit? Une autre préoccupation est que nous avons développé et testé avec une version du conducteur et si un client utilise une autre version, nous pourrions avoir des problèmes.

Nous utilisons actuellement des haricots de source de données de printemps, mais sont en train de passer à la recherche JNDI pour la DataSource.


0 commentaires

3 Réponses :


8
votes

Pour que le servlet contienne et que les serveurs d'applications viennent avec leurs propres pilotes JDBC?

Certains font (par exemple weblogic).

notre conflit?

Ils ne devraient pas. Je ne sais pas que le vôtre sera cueilli lors de la création d'un pool de connexion autonome au niveau de l'application (tout dépend du mode délégation de classier).

Une autre préoccupation est que nous avons développé et testé avec une version du pilote et si un client utilise une autre version, nous pourrions avoir des problèmes.

avoir une liste de versions prises en charge.

Nous utilisons actuellement des haricots de source de données de printemps, mais sont en train de passer à la recherche JNDI pour la DataSource.

Si par ceci vous voulez dire à l'aide du pool de connexion fourni par un serveur d'applications, les pilotes doivent être installés au niveau du conteneur , pas au niveau de l'application. Et cela met en quelque sorte la discussion.


5 commentaires

@Pascal thivent: (correspondant au paragraphe sur le pool de connexion) Pourriez-vous ajouter des liens ou expliquer un peu? Je suis d'accord avec votre point (et je l'ai fait comme vous le décrivez à plusieurs reprises, car c'est la manière la plus intuitive), mais on m'a dit que c'était une mauvaise pratique (car les mêmes bibliothèques de l'App-Server et dans l'application déployée peuvent entraîner des conflits) et Toutes les bibliothèques doivent être emballées dans le fichier de guerre de l'application. Ceci est plus réel pour les cas, lorsque plus d'une application est déployée sur le même serveur (Tomcat dans mon cas).


Pour développer la dernière phrase: une source de données JNDI est gérée par conteneur et nécessite implicitement le conducteur d'être présent dans la bibliothèque du conteneur. Le conteneur ne scannera pas les bibliothèques de guerre pour les pilotes. Cela met en effet fin à la discussion :)


@Roman sûr, voir le Apache Tomcat 6.0 classe chargeur comment . Si vous souhaitez utiliser le pool de connexions de Tomcat , le pilote doit être disponible en $ catalina_home / lib ou tomcat ne sera pas en mesure de le charger.


C'est une meilleure ressource: JNDI Comment - JDBC Sources de données . Notez qu'il recommande explicitement de placer le pilote dans tomcat / lib .


@Pascal, Balusc: Thanx, je n'ai jamais utilisé de pool de raccordement de Tomcats intégré mais saurais si jamais besoin de le faire.



6
votes

Dans la plupart des applications, les pilotes JDBC ne sont pas expédiés dans le cadre de l'application.

Si vous expédiez des pilotes JDBC, cela signifie que vous devez donner aux pilotes pour toute la base de données que vous souhaitez prendre en charge. Il a ajouté beaucoup de bibliothèques inutiles.

N'ajoutez que d'ajouter un pilote et dites à l'utilisateur de mettre le fichier jar correspondant dans les bibliothèques de serveur si nécessaire.


0 commentaires

3
votes

Autre puis les mérites techniques d'inclusion du pilote dans le fichier de guerre, vous devez également consulter la licence pour le conducteur et vous assurer qu'il est distribuable d'une tierce partie.


0 commentaires