Necesito probar una conexión JDBC a una base de datos. El código Java para hacer eso debe ser tan simple como:Cómo utilizar un controlador JDBC desde una ubicación arbitraria
DriverManager.getConnection("jdbc connection URL", "username", "password");
El gestor de controladores será buscar el apropiado el controlador para la URL de conexión dado. Sin embargo, necesito poder cargar el controlador JDBC (jar) en tiempo de ejecución. Es decir, no tengo el controlador JDBC en el classpath de la aplicación java que ejecuta el fragmento de código anterior.
Para que pueda cargar el controlador que utiliza este código, por ejemplo:
URLClassLoader classLoader = new URLClassLoader(new URL[]{"jar URL"}, this.getClass().getClassLoader());
Driver driver = (Driver) Class.forName("jdbc driver class name", true, classLoader).newInstance();
Pero entonces el gestor de controladores todavía no voy a recogerlo ya que no puedo decirle qué cargador de clases para su uso. Intenté configurar el cargador de clases de contexto del subproceso actual y todavía no funciona.
¿Alguien tiene alguna idea sobre la mejor manera de lograrlo?
¿Hay alguna buena razón por la cual no tiene el controlador en el classpath? –
Sí. La aplicación se puede conectar a muchas bases de datos. Además, no puedo agrupar todos los controladores por razones de licencia. Lo que quiero lograr es un diálogo simple para que el usuario cargue el contenedor mientras se ejecuta la aplicación. – SaM
Ahí estaba pensando como un desarrollador de servidor de nuevo ... :) –