Warum JNDI Rückkehr eine DataSource mit einem NULL-uri statt einer lookup-Fehler?

Suchte ich mir eine ähnliche Frage, aber nur gefunden, ähnlich wie Godaddy JNDI-Problem---Cannot create JDBC-Treiber-Klasse " für connect URL 'null', auf die noch keine Antwort auf meine generische Frage.

Tomcat 7.0.8 .. der folgende code

Context initialContext = new InitialContext();
datasource = (DataSource) initialContext.lookup("java:comp/env/" + "blah");
Connection c = null;
c = datasource.getConnection();

wirft diesen Fehler.

org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'
   at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createConnectionFactory(BasicDataSource.java:1452)
   at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1371)
   at org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044)
...
Caused by: java.lang.NullPointerException
   at sun.jdbc.odbc.JdbcOdbcDriver.getProtocol(JdbcOdbcDriver.java:527)
   at sun.jdbc.odbc.JdbcOdbcDriver.knownURL(JdbcOdbcDriver.java:496)
   at sun.jdbc.odbc.JdbcOdbcDriver.acceptsURL(JdbcOdbcDriver.java:319)
   at java.sql.DriverManager.getDriver(DriverManager.java:386)
   at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createConnectionFactory(BasicDataSource.java:1437)
   ... 24 more

Ich bin nicht gefragt, warum es fehlgeschlagen ist oder wie es zu lösen ist.

Meine Frage ist, warum nicht die LOOKUP fehlschlägt?

Warum lookup erstellen eine nutzlose BasicDataSource mit einem null-URL? Gibt es einen besseren Weg, um zu erkennen, ob ein JNDI-name 'nicht existiert', als zu versuchen, es zu benutzen und sehen, wenn es auffliegt? Dieser Ansatz erinnert mich an wie Sie testen Brücken.

Ich schließlich bit die Kugel und zog eine Reihe von code aus raw-JDBC-code zu JNDI, und viele Geheimnisse bleiben noch offen.

Möchte ich vermeiden downcasting die BasicDataSource, wenn möglich, mindestens bewahren, eine illusion von Datenbank-Unabhängigkeit.

TIA

  • Die Menschen können es nicht verkraften, verlorene Illusionen...
  • was meinst du?
Schreibe einen Kommentar