Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Java conectando-se a vários bancos de dados


Você está armazenando uma fonte de dados exclusiva (e conexão e dbMainConnection) em um arquivo estático variável de sua classe. Cada vez que alguém solicita uma fonte de dados, você substitui a anterior pela nova. Se ocorrer uma exceção ao obter uma fonte de dados do JNDI, a fonte de dados estática permanecerá como está. Você não deve armazenar nada em uma variável estática. Como sua classe dbMainConnection é construída com o nome de um banco de dados e existem vários nomes de banco de dados, não faz sentido torná-la um singleton.

Basta usar o seguinte código para acessar a fonte de dados:
public final class DataSourceUtil {
    /**
     * Private constructor to prevent unnecessary instantiations
     */
    private DataSourceUtil() {
    }

    public static DataSource getDataSource(String name) {
        try {
            Context ctx = new InitialContext();
            String database = "jdbc/" + name;
            return (javax.sql.DataSource) ctx.lookup (database);
        }
        catch (NamingException e) {
            throw new IllegalStateException("Error accessing JNDI and getting the database named " + name);
        }
    }
}

E permita que os chamadores obtenham uma conexão da fonte de dados e a fechem quando terminarem de usá-la.