提问者:小点点

使用动态数据源进行动态数据源路由


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

(https://spring . io/blog/2007/01/23/dynamic-data source-routing/);

这也可以使用Hibernate多租户来实现

(https://docs . JBoss . org/hibernate/ORM/4.3/dev guide/en-US/html/ch16 . html)。

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


共2个答案

匿名用户

对于wildfly,请使用wildfly clihttp://search.maven.org/#search|gav|1|g:“org.wildfly.core”和a:“wildfly-cli”

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();
    }
}

匿名用户

几年前我遇到过类似的情况.您可以参考详细说明并在此处工作