Erreur connection mysql : Could not create resource factory instance
Bonjour,
J'ai crée une appli web sous eclipse ou tout marche correctement même la connection à mysql.
Qd j'installe hors eclipse mais toujours en local mon appli à partir d'un war dans Tomcat tout marche correctement aussi.
Mais si j'installe le même .war sur le serveur distant j'obtiens un "javax.naming.NamingException: Could not create resource factory instance"
La connection à ma base est configure dans mon fichier context.xml que je place dans Meta-Inf
Il ressemble à ca
Code:
1 2 3
| <Context docBase="monAppli" path="/monAppli" reloadable="true" source="org.eclipse.jst.j2ee.server:monAppli">
<Resource driverClassName="com.mysql.jdbc.Driver" auth="MOI" maxActive="8" maxIdle="8" maxWait="5000" name="jdbc/monAppli" password="****" type="javax.sql.DataSource" url="jdbc:mysql://localhost/monAppli?autoReconnect=true" username="root"/>
</Context> |
Enfin si je crée directement une connection en faisant :
Code:
1 2 3
| Class.forName("com.mysql.jdbc.Driver").newInstance();
conn = java.sql.DriverManager.getConnection(
"jdbc:mysql://localhost/monAppli?user=root&password=****");*/ |
Ca marche correctement....
Le problème viendrait donc du fichier de context mais :
1- il trouve bien le fichier context (sinon j'aurais une autre erreur du style" Le Nom jdbc n'est pas lié à ce Contexte". (j'avais retiré le fichier context.xml pour voir)
2- le fichier context.xml marche lors d'un deploiement local du war...
Je ne sais plus ou chercher. Quelqu'un aurait une idée ?
Olivier
Je cherche toujours à comprendre
Donc si je résume j'ai un fichier web.xml dans Web-inf ou j'ai ca :
Code:
1 2 3 4 5 6
| <resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/monAppli</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref> |
un fichier context.xml placé dans Meta-inf avec ça
Code:
1 2 3 4 5
|
<Context docBase="monAppli" path="/monAppli" reloadable="true" source="org.eclipse.jst.j2ee.server:monAppli">
<Resource driverClassName="com.mysql.jdbc.Driver" auth="MOI" maxActive="8" maxIdle="8" maxWait="5000" name="jdbc/monAppli" password="****" type="javax.sql.DataSource" url="jdbc:mysql://localhost/monAppli?autoReconnect=true" username="root"/>
</Context> |
Et au final ca ne marche pas avec toujours le même message d'erreur...
Alors il doit surement y avoir une petite erreur mais j'ai beau avoir laissé reposer le code pour m'y replonger plus tard je ne vois pas. Et là il faudrait vaiment que je trouve d'ou ca vient .....
Si ca peut servir à quelqu'un
Il suffit de rajouter
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
ou factory="org.apache.commons.dbcp.BasicDataSourceFactory" dans les paramètres du Resource.
Ensuite il faut que mysql.connector.jar soit [tomcat]/common/lib et nulle part ailleurs (si jamais vous aviez des copies dans web-inf ou share/lib retirez les...)