我在部署应用程序时使用的当前工作流是在wildfly中创建JDBC数据源,然后将该数据源添加到persistence.xml文件中。
有没有办法在不修改persistence.xml的情况下设置应用程序在运行时使用的数据源?
这个问题的关键是试图了解如何在构建时删除应用程序与部署环境之间的任何耦合。
答案 0 :(得分:0)
最简单的解决方案是创建数据源,然后将其设置为默认数据源。那么您甚至不需要在persistence.xml
。
例如,以下CLI命令将创建数据源并设置默认数据源(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
然后在persistence.xml
中删除<jta-data-source>
代码。