Bonjour,
j'ai un projet classique qui marche avec JBoss, des EJB, et des fichiers de configuration a la pelle ;o)
Le problème est que - pour l'environnement de DEVELOPPEMENT uniquement - on a besoin de se connecter sur plusieurs bases de données.
Or JBoss est lié a une ou plusieurs base de données via les fichiers de configuration oracle-ds.xml qui sont liés a un bean définis dans le persistence.xml
Nous avons actuellement dans l'application (pour le développement uniquement) une case permettant au développeur de saisir lui même une chaine de connexion au format login/pass@schema
J'ai déjà pu rendre dynamique le login et le pass en utilisant
Code java : Sélectionner tout - Visualiser dans une fenêtre à part monDataSource.getConnection(pLogin, pPassword);
Mais j'aimerais également rendre dynamique le schema.
Idéalement, il me faudrait un fichier de ressources permettant de faire la correspondance entre un nom logique (le schema) et la chaine de connexion au format tnsnames.ORA, url JDBC ou autre afin que le développeur ait juste besoin de renseigner un nom logique et que l'application puisse faire le lien entre les deux.
Il est possible de déclarer tout les schema connus dans le persistence.xml et dans oracle-ds.xml, mais cela a 2 inconvénients :
* d'après ce que j'ai vu, les beans et les connexions sont initialisées au démarrage de JBoss, ce qui prend du temps et diminue dont la productivité des développeurs (environ 20 bases de données différentes accessibles, avec des login/pass différents également)
* L'ajout d'une base dans les fichiers de configuration implique la modification de 2 fichiers (j'aurais préféré un seul)
En lisant les messages du forum j'ai vu que ce que je souhaitais faire était déconseillé, mais je précise bien que c'est pour un environnement de développement et pas de production.
Avez vous une idée de comment réaliser cela ?En faisant ça tu violes toutes les bonnes pratiques. Tu lies le fonctionnel au technique. Tu fais une erreur de conception.Sur un serveur jboss 4.0.5 j'essaye de changer dynamiquement l'utilisateur de la base de donnée en fonction de l'utilisateur de l'application.
Partager