我正在使用自由服务器运行Java批处理(jsr352)。在server.xml中配置的数据源。我想基于该区域加载server.xml(例如dev,sit,prod)。如何传递参数以启动自由服务器并动态加载数据源 server.env文件和bootstrap.properties可能存在。既然是新手,那么任何人都可以帮忙。
答案 0 :(得分:2)
一个简单的方法是像这样在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 env中,如下所示:
$ export db2_name=mydb
$ etc...
$ wlp/bin/server start myServer
答案 1 :(得分:2)
如果配置差异超出属性值,则变量可能不足。例如,假设您在dev中使用内存数据库(如嵌入式Derby),而在生产中使用功能更强大的数据库(如DB2)。
在主server.xml中,您可以使用类似这样的变量来包含另一个配置xml文件:
mutate_at
然后您可以在library(dplyr)
set.seed(10)
df <- data.frame(a = sample(c(NA, 1:3) , replace = TRUE, 10),
b = sample(c(NA, 101:103), replace = TRUE, 10),
c = sample(c(NA, 201:203), replace = TRUE, 10))
df
#> a b c
#> 1 2 102 203
#> 2 1 102 202
#> 3 1 NA 203
#> 4 2 102 201
#> 5 NA 101 201
#> 6 NA 101 202
#> 7 1 NA 203
#> 8 1 101 NA
#> 9 2 101 203
#> 10 1 103 201
df %>% mutate_all(~ifelse(is.na(.x), mean(.x, na.rm = TRUE), .x))
#> a b c
#> 1 2.000 102.000 203.0000
#> 2 1.000 102.000 202.0000
#> 3 1.000 101.625 203.0000
#> 4 2.000 102.000 201.0000
#> 5 1.375 101.000 201.0000
#> 6 1.375 101.000 202.0000
#> 7 1.000 101.625 203.0000
#> 8 1.000 101.000 202.1111
#> 9 2.000 101.000 203.0000
#> 10 1.000 103.000 201.0000
df %>% mutate_at(vars(a, b),~ifelse(is.na(.x), mean(.x, na.rm = TRUE), .x))
#> a b c
#> 1 2.000 102.000 203
#> 2 1.000 102.000 202
#> 3 1.000 101.625 203
#> 4 2.000 102.000 201
#> 5 1.375 101.000 201
#> 6 1.375 101.000 202
#> 7 1.000 101.625 203
#> 8 1.000 101.000 NA
#> 9 2.000 101.000 203
#> 10 1.000 103.000 201
中具有仅开发者配置,如下所示:
<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
将包含在主server.xml配置中。