Impossible de créer le pilote JDBC de la classe " pour se connecter URL 'null'
Je suis en utilisant Tomcat 7.0.12 et la réception de cette erreur à chaque fois que je attmept pour accéder à une datasource JNDI de la connexion à postgresql base de données via un .page jsp dans une application web appelée "RACINE":
SEVERE: Servlet.service() for servlet [jsp] in context with path [] threw exception
[java.lang.RuntimeException: Cannot create JDBC driver of class '' for connect URL 'null'] with root cause
java.lang.NullPointerException
at sun.jdbc.odbc.JdbcOdbcDriver.getProtocol(JdbcOdbcDriver.java:507)
at sun.jdbc.odbc.JdbcOdbcDriver.knownURL(JdbcOdbcDriver.java:476)
at sun.jdbc.odbc.JdbcOdbcDriver.acceptsURL(JdbcOdbcDriver.java:307)
at java.sql.DriverManager.getDriver(DriverManager.java:253)
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createConnectionFactory(BasicDataSource.java:1437)
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1371)
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044)
Le pilote JDBC postgresql est dans mon CATALINA/dossier lib.
Voici mon META-INF/context.xml:
<?xml version="1.0" encoding="UTF-8"?>
<Context>
<Resource name="jdbc/webdbro" auth="Container" type="javax.sql.DataSource"
driverClassName="org.postgresql.Driver" url="jdbc:postgresql://127.0.0.1:5432/webdb"
username="webdbro" password="pass" maxWait="-1" removeAbandoned="true" removeAbandonedTimeout="30"/>
<Resource name="jdbc/webdbrw" auth="Container" type="javax.sql.DataSource"
driverClassName="org.postgresql.Driver" url="jdbc:postgresql://127.0.0.1:5432/webdb"
username="webdbrw" password="pass" maxWait="-1" removeAbandoned="true" removeAbandonedTimeout="30"/>
<Resource name="jdbc/shadowdbro" auth="Container" type="javax.sql.DataSource"
driverClassName="org.postgresql.Driver" url="jdbc:postgresql://127.0.0.1:5432/shadowdb"
username="shadowdbro" password="pass" maxWait="-1" removeAbandoned="true" removeAbandonedTimeout="30"/>
</Context>
Voici mon WEB-INF/web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0">
<display-name>ROOT</display-name>
<resource-ref>
<description>Read only webdb connector.</description>
<res-ref-name>jdbc/webdbro</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
<resource-ref>
<description>Read write webdb connector.</description>
<res-ref-name>jdbc/webdbrw</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
<resource-ref>
<description>Read only shadow db connector.</description>
<res-ref-name>jdbc/shadowdbro</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
La chose étrange est que j'ai 2 autres webapps fonctionnant sur le même serveur Tomcat en utilisant la même configuration (web.xml et context.xml afin qu'il puisse l'utiliser JNDI méthode pour se connecter à la base de données et à la FOIS de ces webapps fonctionnent parfaitement fine, je peux interroger et mettre à jour la base de données avec des problèmes ou des exceptions dans ces applications. TIA...
<Resource>
lequel vous avez configuré. Vous exécutez l'application à partir de l'intérieur de l'Éclipse ou quelque chose?OriginalL'auteur MuffinMan | 2011-09-01
Vous devez vous connecter pour publier un commentaire.
Afin d'obtenir tous les 3 webapps d'utiliser la même source de données correctement, j'ai dû déplacer tous mes
<Resource>
les entrées de la META-INF/context.xml dossier sur le serveur $CATALINA_BASE/conf/context.xml dossier. Pas une bonne solution, mais il fonctionne.Je vous remercie. Après 6 heures de chasse à la cause de cela, votre solution fonctionne.
OriginalL'auteur MuffinMan
J'ai eu le même problème et il s'est avéré que mon
<Resource>
nom de la déclaration sur context.xml ne correspond pas à celui défini sur<resource-ref>
nom sur web.xml.OriginalL'auteur robvelor
Comme répondu plus haut, la seule solution est de déplacer les entrées de $CATALINA_BASE/conf/context.xml
Une autre approche est décrite ici:
http://blogs.agilefaqs.com/2009/11/23/cannot-create-jdbc-driver-of-class-for-connect-url-null/
En particulier, "Copier l'Context.xml fichier tomcat/conf/Catalina/localhost dossier et le renommer
<web_app_name>.xml
"La cause sous-jacente pourrait être dû à un problème avec les autorisations de fichier: "Le compte utilisateur sous lequel le serveur tomcat était en cours d'exécution n'ont pas l'autorisation d'écrire à ces dossiers. Nous avons donc changé le groupe d'appartenance de tomcat et /etc/tomcat dossier pour le même groupe auquel l'utilisateur tomcat appartenaient, et comme par magie, tout a commencé à travailler comme avant."
Cette solution semble plus 'propres' à moi parce que vous pouvez avoir l'ensemble de votre application web, y compris la base de données de propriétés de la connexion enveloppé dans un .la guerre de fichier.
OriginalL'auteur Mark