动态自由配置开发和生产数据源以根据环境加载
configuring dev and prod datasource in liberty dynamically to load based on the environment
我 运行 java batch(jsr352) 使用 liberty 服务器。 server.xml 中配置的数据源。我想根据区域(如开发、坐、生产)加载 server.xml。如何传递参数以启动自由服务器并动态加载数据源
server.env 文件和 bootstrap.properties 可能存在。因为是新手..任何人都可以帮忙吗
一个简单的方法是在 server.xml 中使用变量,如下所示:
<dataSource jndiName="jdbc/db2">
<jdbcDriver libraryRef="DB2JCCLib"/>
<properties.db2.jcc databaseName="${evn.db2_name}"
serverName="${env.db2_server}"
portNumber="${env.db2_port}"/>
</dataSource>
然后,您可以像这样在 server.env 中设置变量:
db2_name=mydb
db2_server=whatever.com
db2_port=50000
或者,如果您使用任何类型的脚本来启动您的 Liberty 服务器,您可以将它们导出到 bash 环境中,如下所示:
$ export db2_name=mydb
$ etc...
$ wlp/bin/server start myServer
如果您的配置差异超出了属性值,变量可能不够。例如,假设您在开发环境中使用内存数据库(如嵌入式 Derby),在生产环境中使用更健壮的数据库(如 DB2)。
在您的主要 server.xml 中,您可以使用如下变量包含另一个配置 xml 文件:
<server>
<include location="dbconfig-${env.ENV_LOCATION}.xml"/>
<!-- rest of common config here -->
</server>
然后你可以在 dbconfig-dev.xml
中进行仅开发配置,如下所示:
<server>
<dataSource id="db" jndiName="jdbc/db">
<jdbcDriver libraryRef="DerbyLib"/>
<properties.derby.embedded databaseName="memory:testdb" createDatabase="create"/>
</dataSource>
<library id="DerbyLib">
<fileset dir="/path/to/derby.jar"/>
</library>
</server>
并且 dbconfig-prod.xml
中的仅生产配置如下所示:
<server>
<dataSource id="db" jndiName="jdbc/db">
<jdbcDriver libraryRef="DB2JCCLib"/>
<properties.db2.jcc databaseName="PRODUCTION_DB"
serverName="serious.business.com"
portNumber="50000"/>
</dataSource>
<library id="DB2JCCLib">
<fileset dir="/path/to/db2.jar"/>
</library>
</server>
然后,根据为 ENV_LOCATION
设置的值,dbconfig-dev.xml
或 dbconfig-prod.xml
将包含在您的主要 server.xml 配置中。
我 运行 java batch(jsr352) 使用 liberty 服务器。 server.xml 中配置的数据源。我想根据区域(如开发、坐、生产)加载 server.xml。如何传递参数以启动自由服务器并动态加载数据源 server.env 文件和 bootstrap.properties 可能存在。因为是新手..任何人都可以帮忙吗
一个简单的方法是在 server.xml 中使用变量,如下所示:
<dataSource jndiName="jdbc/db2">
<jdbcDriver libraryRef="DB2JCCLib"/>
<properties.db2.jcc databaseName="${evn.db2_name}"
serverName="${env.db2_server}"
portNumber="${env.db2_port}"/>
</dataSource>
然后,您可以像这样在 server.env 中设置变量:
db2_name=mydb
db2_server=whatever.com
db2_port=50000
或者,如果您使用任何类型的脚本来启动您的 Liberty 服务器,您可以将它们导出到 bash 环境中,如下所示:
$ export db2_name=mydb
$ etc...
$ wlp/bin/server start myServer
如果您的配置差异超出了属性值,变量可能不够。例如,假设您在开发环境中使用内存数据库(如嵌入式 Derby),在生产环境中使用更健壮的数据库(如 DB2)。
在您的主要 server.xml 中,您可以使用如下变量包含另一个配置 xml 文件:
<server>
<include location="dbconfig-${env.ENV_LOCATION}.xml"/>
<!-- rest of common config here -->
</server>
然后你可以在 dbconfig-dev.xml
中进行仅开发配置,如下所示:
<server>
<dataSource id="db" jndiName="jdbc/db">
<jdbcDriver libraryRef="DerbyLib"/>
<properties.derby.embedded databaseName="memory:testdb" createDatabase="create"/>
</dataSource>
<library id="DerbyLib">
<fileset dir="/path/to/derby.jar"/>
</library>
</server>
并且 dbconfig-prod.xml
中的仅生产配置如下所示:
<server>
<dataSource id="db" jndiName="jdbc/db">
<jdbcDriver libraryRef="DB2JCCLib"/>
<properties.db2.jcc databaseName="PRODUCTION_DB"
serverName="serious.business.com"
portNumber="50000"/>
</dataSource>
<library id="DB2JCCLib">
<fileset dir="/path/to/db2.jar"/>
</library>
</server>
然后,根据为 ENV_LOCATION
设置的值,dbconfig-dev.xml
或 dbconfig-prod.xml
将包含在您的主要 server.xml 配置中。