Oracle
 sql >> Base de données >  >> RDS >> Oracle

Java se connectant à plusieurs bases de données

Vous stockez une source de données unique (et une connexion, et dbMainConnection) dans un statique variable de votre classe. Chaque fois que quelqu'un demande une source de données, vous remplacez la précédente par la nouvelle. Si une exception se produit lors de l'obtention d'une source de données à partir de JNDI, la source de données statique reste telle quelle. Vous ne devez rien stocker dans une variable statique. Étant donné que votre classe dbMainConnection est construite avec le nom d'une base de données et qu'il existe plusieurs noms de base de données, cela n'a aucun sens d'en faire un singleton.

Utilisez simplement le code suivant pour accéder à la source de données :

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

Et laissez les appelants obtenir une connexion à partir de la source de données et la fermer lorsqu'ils ont fini de l'utiliser.