我找到了一种实现动态数据源路由的方法:
(https://spring.io/blog/2007/01/23/dynamic-datasource-routing/);
这也可以通过使用hibernate多租户来实现
(https://docs.jboss.org/hibernate/orm/4.3/devguide/en-US/html/ch16.html)。
我的问题是,如何动态创建数据源?
答案 0 :(得分:0)
野生蝇使用wildfly-cli http://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22org.wildfly.core%22%20AND%20a%3A%22wildfly-cli%22
public static void createDataSource(String server, Integer port, String database, String user, String pass) {
CommandContext ctx = null;
try {
StringBuilder cmd = new StringBuilder("data-source add");
cmd.append(" --name=").append(database);
cmd.append(" --driver-name=postgresql");
cmd.append(" --jndi-name=").append("java:jboss/datasources/"+database);
cmd.append(" --connection-url=").append("jdbc:postgresql://"+server+":"+port+"/"+database);
cmd.append(" --user-name=").append(user);
cmd.append(" --password=").append(pass);
cmd.append(" --enabled=true");
ctx = CommandContextFactory.getInstance().newCommandContext();
ctx.connectController();
ctx.handle(cmd.toString());
} catch(Exception e) {
throw new RuntimeException(e.getMessage());
} finally {
if(ctx != null)
ctx.terminateSession();
}
}
答案 1 :(得分:0)
几年前,我也面临过类似的情况。您可以参考详细说明并使用here