Re: DriverManager.registerDriver - registers twice?

Поиск
Список
Период
Сортировка
От Dave Cramer
Тема Re: DriverManager.registerDriver - registers twice?
Дата
Msg-id CADK3HH+J3EXL08R5fyTw-B=e106wam4J0GEHjbL-33jGuxp1HQ@mail.gmail.com
обсуждение исходный текст
Ответ на Re: DriverManager.registerDriver - registers twice?  (David Wall <d.wall@computer.org>)
Список 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.wall@computer.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.jdbc.odbc.JdbcOdbcDriver@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.jdbc.odbc.JdbcOdbcDriver@3315a56d name: sun.jdbc.odbc.JdbcOdbcDriver; accepts URL jdbc:postgresql://localhost.localdomain/demo: false

18:03:14 AFTER REGISTER DriverManager.getDrivers() returned driver: org.postgresql.Driver@29559094 name: org.postgresql.Driver; accepts URL jdbc:postgresql://localhost.localdomain/demo: true
18:03:14 AFTER REGISTER DriverManager.getDrivers() returned driver: org.postgresql.Driver@3086f9bf name: org.postgresql.Driver; accepts URL jdbc:postgresql://localhost.localdomain/demo: true

Why are there two?  Where does the org.postgresql.Driver@29559094 instance come from?

I am running Java 1.7.0_25 with PG JDBC driver postgresql-9.2-1003.jdbc4.jar.

Thanks,
David


В списке pgsql-jdbc по дате отправления:

Предыдущее
От: "vjai.krishnan"
Дата:
Сообщение: Re: Slow statement when using JDBC
Следующее
От: CG
Дата:
Сообщение: Upgrade to Scientific Linux 6.5 x86_64 breaks query