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

标签 java spring hibernate

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

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

这也可以使用 hibernate Multi-Tenancy 来实现

(https://docs.jboss.org/hibernate/orm/4.3/devguide/en-US/html/ch16.html)。

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

最佳答案

对于 Wildfly,请使用 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();
    }
}

关于java - 使用动态数据源进行动态数据源路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41401556/

相关文章:

java - 如何启动和管理Java线程?

java - 使用 ProcessBuilder 通过 Java 运行 perl 脚本

java - 如何从 RequestBody 向自定义注释中注入(inject)数据

java - 确保 jdbctemplate 中返回的列的顺序

Java:使用 Hibernate 合并实例与 Oracle CLOB 数据

java - 使用 toCharArray 检查 String 是否有任何非数字

java - 用于 Java 6 和 Java 7 的 Mac OS X JavaApplicationStub

java - PSQL异常 : ERROR: operator does not exist: character varying = uuid

java - infinispan 作为二级缓存 hibernate

java - Spring data JPA存储库返回父类的实体