Re: DriverManager.registerDriver - registers twice?

From: Dave Cramer <pg(at)fastcrypt(dot)com>
To: David Wall <d(dot)wall(at)computer(dot)org>
Cc: List <pgsql-jdbc(at)postgresql(dot)org>
Subject: Re: DriverManager.registerDriver - registers twice?
Date: 2014-07-22 11:25:54
Message-ID: CADK3HH+J3EXL08R5fyTw-B=e106wam4J0GEHjbL-33jGuxp1HQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-jdbc

AFAIK it doesn't deregister.

Dave Cramer

dave.cramer(at)credativ(dot)ca
http://www.credativ.ca

On 21 July 2014 23:27, David Wall <d(dot)wall(at)computer(dot)org> wrote:

> 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.postgresql.Driver@
>
> *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

Browse pgsql-jdbc by date

  From Date Subject
Next Message CG 2014-07-23 16:10:42 Upgrade to Scientific Linux 6.5 x86_64 breaks query
Previous Message vjai.krishnan 2014-07-22 03:50:40 Re: Slow statement when using JDBC