2017-09-05 3 views
0

Le flux de travail actuel que j'utilise lors du déploiement d'une application consiste à créer une source de données JDBC dans wildfly, puis à ajouter cette source de données au fichier persistence.xml.Configurer la source de données de l'application déployée dans Wildfly sans modifier persistence.xml

Existe-t-il un moyen de définir la source de données que l'application utilise à l'exécution sans modifier persistence.xml?

Le point crucial de cette question est de tenter de comprendre comment supprimer tout couplage entre l'application au moment de la construction et l'environnement de déploiement.

Répondre

0

La solution la plus simple consisterait à créer la source de données, puis à la définir comme source de données par défaut. Ensuite, vous n'avez même pas besoin de définir la source de données dans votre persistence.xml. Par exemple, les commandes CLI suivantes créent la source de données et définissent la source de données par défaut (java:comp/DefaultDataSource).

embed-server 

# Configure the driver 
/subsystem=datasources/jdbc-driver=org.postgresql:add(driver-name=org.postgresql, driver-module-name=org.postgresql, driver-xa-datasource-class-name=org.postgresql.xa.PGXADataSource) 

# Configure the data source 
/subsystem=datasources/data-source=postgresql:add(driver-name=org.postgresql, jndi-name="java:/jdbc/PostgresDS", enabled=true, connection-url="jdbc:postgresql://localhost/testdb", user-name=user, password="password") 

# Change the default data source name java:comp/DefaultDataSource 
/subsystem=ee/service=default-bindings:write-attribute(name=datasource, value=java:/jdbc/PostgresDS) 

stop-embedded-server 

Ensuite, dans le persistence.xml enlèverait juste l'étiquette <jta-data-source>.

+0

Cela fonctionnerait pour des applications uniques, mais cela crée des problèmes similaires à ceux que je produis si je spécifie la source de données dans le projet. J'essaie de faire en sorte que les noms des applications et des sources de données ne se connaissent pas et de supprimer les considérations de dénomination de table des déploiements d'applications. Cela pourrait malheureusement provoquer des collisions de noms de tables et imposer un autre type de couplage étroit. – KG6ZVP

+0

Ce n'est pas une bonne réponse, mais vous recherchez peut-être un descripteur de déploiement * -ds.xml. https://access.redhat.com/documentation/en-US/JBoss_Enterprise_Application_Platform/6.4/html/Administration_and_Configuration_Guide/chap-Datasource_Management.html#Deployment_of_-ds.xml_files. Cette documentation n'est pas la meilleure, mais vous pouvez voir un exemple ici https://github.com/wildfly/quickstart/blob/11.x/kitchensink/src/main/webapp/WEB-INF/kitchensink-quickstart-ds. xml # L22. –

+0

Le déploiement de ds est encore pire car il ne colle pas seulement au couplage serré que je cherche à éviter, mais introduit des complexités de déploiement supplémentaires. Je pense que la question est maintenant de savoir si ce que je cherche à faire est ou non possible. – KG6ZVP