IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Wildfly/JBoss Java Discussion :

JBoss 4.3 : Chaine de connection a la BDD dynamique


Sujet :

Wildfly/JBoss Java

  1. #1
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Points : 1 565
    Points
    1 565
    Par défaut JBoss 4.3 : Chaine de connection a la BDD dynamique
    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.
    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.
    En faisant ça tu violes toutes les bonnes pratiques. Tu lies le fonctionnel au technique. Tu fais une erreur de conception.
    Avez vous une idée de comment réaliser cela ?

  2. #2
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Points : 1 565
    Points
    1 565
    Par défaut
    Bon, je m'auto réponds ^^

    Dans datasources.xml :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    <bean id="params" class="java.util.Properties">
    	<constructor-arg>
    		<props>
    			<prop key="user" /><prop key="password" />
    			<prop key="DYNAMIC_CLASS">
    				package.MaClasseDynamique</prop>
    		</props>
    	</constructor-arg>
    </bean>
     
    <bean id="NOM_SCHEMA"
    	class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    	<property name="driverClassName" value="com.arjuna.ats.jdbc.TransactionalDriver" />
    	<property name="url" value="jdbc:arjuna:oracle:thin:@nomMachine:1521:ID_SCHEMA" />
    	<property name="connectionProperties">
    		<ref bean="params" />
    	</property>
    </bean>
     
    <bean id="NOM_SCHEMA2"
    	class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    	<property name="driverClassName" value="com.arjuna.ats.jdbc.TransactionalDriver" />
    	<property name="url" value="jdbc:arjuna:oracle:thin:@nomMachine2:1521:ID_SCHEMA2" />
    	<property name="connectionProperties">
    		<ref bean="params" />
    	</property>
    </bean>
    ...
    package.MaClasseDynamique implémente com.arjuna.ats.internal.jdbc.DynamicClass en créant une instance (tout en synchronized) de oracle.jdbc.xa.client.OracleXADataSource

    Ensuite j'ai le code suivant pour me connecter :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DataSource aDS = (new ClassPathXmlApplicationContext("datasources.xml")).getBean("NOM_SCHEMA", DataSource.class);
    java.sql.Connection aCnx = aDS.getConnection(pUser, pPassword);
    Et j'ai donc une connexion avec user/pass dynamique avec un fichier xml contenant la liste des instances accessibles (issu par script d'un fichier tnsnames.ora)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. 2 chaines de connection
    Par badrel dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 24/05/2006, 21h07
  2. [ADO] Chaine de connection incorrecte
    Par freud dans le forum Bases de données
    Réponses: 2
    Dernier message: 26/04/2006, 20h55
  3. [debutant] [XML] chaine de connection base de donnee
    Par clairenes dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 28/07/2005, 18h53
  4. tester une chaine de connection
    Par graphicsxp dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 10/05/2005, 13h32
  5. PostGreSQL 8 : ODBC, OLEDB, ADO et chaine de connection
    Par romeo9423 dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 25/01/2005, 09h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo