sql >> Database teknologi >  >> RDS >> Oracle

Java opretter forbindelse til flere databaser

Du gemmer en unik datakilde (og forbindelse og dbMainConnection) i en statisk variabel i din klasse. Hver gang nogen beder om en datakilde, erstatter du den forrige med den nye. Hvis der opstår en undtagelse, mens du henter en datakilde fra JNDI, forbliver den statiske datakilde, som den er. Du bør ikke gemme noget i en statisk variabel. Da din dbMainConnection-klasse er konstrueret med navnet på en database, og der er flere databasenavne, giver det ingen mening at gøre den til en singleton.

Brug blot følgende kode for at få adgang til datakilden:

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

Og lad opkalderne få en forbindelse fra datakilden og lukke den, når de er færdige med at bruge den.



  1. hvordan rettes OperationalError:(psycopg2.OperationalError) server lukkede forbindelsen uventet

  2. Hvordan bruger man PATCH til at opdatere et simpelt databasefelt?

  3. Er det muligt at forespørge i en database ved hjælp af en værdi, der sendes i en URL, og skrive resultatet af forespørgslen til URL'en ved hjælp af mod_rewrite?

  4. Store_result og get_result for statement