Classloading de JAR e Conexão JDBC

1 resposta
danieldestro

Caros, tenho o seguinte problema:

O usuário me fornece o caminho para um arquivo JAR, contendo o driver JDBC a ser usado para se conectar ao banco de dados. O sistema deve carregar esse JAR (class loading) e então se conectar ao banco.

A parte de class loading acho que está ok, porém o driver não está sendo registrado no DriverManager.

Eu fiz o seguinte:

File jarFile = new File(jarFilePathname); URL jarUrl = jarFile.toURL(); ClassLoader cl = URLClassLoader.newInstance(new URL[] { jarUrl }, this.getClass().getClassLoader()); Driver driver = (Driver) cl.loadClass( driverName ).newInstance(); DriverManager.registerDriver( driver ); conn = DriverManager.getConnection( "url", "user", "pass" );

Porém recebo a seguinte exceção:

java.sql.SQLException: No suitable driver at java.sql.DriverManager.getConnection(Unknown Source) at java.sql.DriverManager.getConnection(Unknown Source) at softech.javalee.db.DatabaseConnectionManager.getConnection(DatabaseConnectionManager.java:36)

Creio que isso seja problema da hierarquia dos class loaders. Alguém tem alguma idéia de como contornar isso e eu conseguir criar uma conexão com o BD numa boa?

Valeu

1 Resposta

danieldestro

Solução ad hoc:

Ao invés de:

Driver driver = (Driver) cl.loadClass( driverName ).newInstance();

DriverManager.registerDriver( driver );

conn = DriverManager.getConnection( url, user, pass );
Eu fiz:

Driver driver = (Driver) cl.loadClass( driverName ).newInstance();

conn = driver.connect(url,propertiesComUserePassword);
Criado 1 de fevereiro de 2005
Ultima resposta 1 de fev. de 2005
Respostas 1
Participantes 1