使用动态数据源的动态数据源路由

时间:2016-12-30 19:18:23

标签: java spring hibernate

我找到了一种实现动态数据源路由的方法:

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)。

我的问题是,如何动态创建数据源?

2 个答案:

答案 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