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
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? |