在 Play 中动态启动 DB 线程池
Dynamically starting DB thread pool in Play
我在 conf/application.conf
文件中定义了多个数据库,如下所示:
db.something.driver=com.mysql.jdbc.Driver
db.something.url="jdbc:mysql://host:3306/something"
db.something.user=user
db.something.pass=pass
启动时,Play 会为每个模式设置一个线程池/数据源。我如何以编程方式执行此操作?我必须能够在应用程序处于 运行.
时动态添加数据源
通过 Play 源代码调试后,我在 play.db.Databases
中找到了这个方法:
public static Database createFrom(String name, String driver, String url, Map<String, ? extends Object> config) {
ImmutableMap.Builder<String, Object> dbConfig = new ImmutableMap.Builder<String, Object>();
dbConfig.put("driver", driver);
dbConfig.put("url", url);
dbConfig.putAll(config);
return new DefaultDatabase(name, dbConfig.build());
}
通过调用使用它:Databases.createFrom("mydb", "driver", "url", conf)
最后一个参数包含用户名和密码以及您需要的任何其他参数。
application.conf
中的数据库定义已过时。然而,将这些数据库对象存储在地图中以供以后重用是有意义的。
我在 conf/application.conf
文件中定义了多个数据库,如下所示:
db.something.driver=com.mysql.jdbc.Driver
db.something.url="jdbc:mysql://host:3306/something"
db.something.user=user
db.something.pass=pass
启动时,Play 会为每个模式设置一个线程池/数据源。我如何以编程方式执行此操作?我必须能够在应用程序处于 运行.
时动态添加数据源通过 Play 源代码调试后,我在 play.db.Databases
中找到了这个方法:
public static Database createFrom(String name, String driver, String url, Map<String, ? extends Object> config) {
ImmutableMap.Builder<String, Object> dbConfig = new ImmutableMap.Builder<String, Object>();
dbConfig.put("driver", driver);
dbConfig.put("url", url);
dbConfig.putAll(config);
return new DefaultDatabase(name, dbConfig.build());
}
通过调用使用它:Databases.createFrom("mydb", "driver", "url", conf)
最后一个参数包含用户名和密码以及您需要的任何其他参数。
application.conf
中的数据库定义已过时。然而,将这些数据库对象存储在地图中以供以后重用是有意义的。