Re: DriverManager.registerDriver - registers twice?

From: David Wall <d(dot)wall(at)computer(dot)org>
To: pgsql-jdbc(at)postgresql(dot)org
Subject: Re: DriverManager.registerDriver - registers twice?
Date: 2014-07-22 03:27:24
Message-ID: 53CDDA1C.3040904@computer.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-jdbc

Perhaps I've answered my own question. Looks like I really only need to
do the Class.forName() call and the driver will register itself.

That leads to the question when will the driver deregister itself? We
previously did the register and deregister ourselves, but if the driver
is registering on its own, how does it know to deregister (such as when
my webapp is stopped)?

On 7/21/2014 6:14 PM, David Wall wrote:
> I have code like the following:
>
> Class<?> driverClass = Class.forName("org.postgresql.Driver");
> driver = (java.sql.Driver)driverClass.newInstance();
> DriverManager.registerDriver(driver);
>
> When I check before this code to see what driver's are available via
> DriverManager.getDrivers(), it reports this (note there's only one
> non-PG driver for JDBC/ODBC):
>
> 18:03:14 BEFORE REGISTER DriverManager.getDrivers() returned driver:
> sun(dot)jdbc(dot)odbc(dot)JdbcOdbcDriver(at)3315a56d name:
> *sun.jdbc.odbc.JdbcOdbcDriver*; accepts URL
> jdbc:postgresql://localhost.localdomain/demo: *false*
>
> But right after, I show the driver instance I created, then do
> DriverManager.getDrivers() again, but this time I get TWO PG JDBC
> drivers (along with the JDBC/ODBC), the second of which matches the
> one I registered.
>
> 18:03:14 DriverManager.registerDriver() org(dot)postgresql(dot)Driver(at)*3086f9bf
>
> *18:03:14 AFTER REGISTER DriverManager.getDrivers() returned driver:
> sun(dot)jdbc(dot)odbc(dot)JdbcOdbcDriver(at)3315a56d name:
> sun.jdbc.odbc.JdbcOdbcDriver; accepts URL
> jdbc:postgresql://localhost.localdomain/demo: false
> 18:03:14 AFTER REGISTER DriverManager.getDrivers() returned driver:
> org(dot)postgresql(dot)Driver(at)*29559094 *name: org.postgresql.Driver; accepts
> URL jdbc:postgresql://localhost.localdomain/demo: *true*
> 18:03:14 AFTER REGISTER DriverManager.getDrivers() returned driver:
> org(dot)postgresql(dot)Driver(at)*3086f9bf*name: org.postgresql.Driver; accepts
> URL jdbc:postgresql://localhost.localdomain/demo: *true*
>
> Why are there two? Where does the org(dot)postgresql(dot)Driver(at)*29559094
> *instance come from?
>
> I am running Java 1.7.0_25 with PG JDBC driver
> postgresql-9.2-1003.jdbc4.jar.
>
> Thanks,
> David

In response to

Responses

Browse pgsql-jdbc by date

  From Date Subject
Next Message vjai.krishnan 2014-07-22 03:50:40 Re: Slow statement when using JDBC
Previous Message David Wall 2014-07-22 01:14:00 DriverManager.registerDriver - registers twice?