OVH Cloud OVH Cloud

Struts et Tomcat problème Bdd

8 réponses
Avatar
Kris74
Bonjour,

je d=E9veloppe une application Struts avec Tomcat comme serveur et MySql
comme Bdd.
Je ne parviens pas =E0 d=E9marrer mon application.
Je ne trouve pas la solution. (depuis lundi matin, alors que mon
application fonctionnait vendredi dernier)

je pense que mon probl=E8me priovient du "data source" que j'ai
d=E9clar=E9 dans mon fichier "Struts-config.xml".
Voici la partie d=E9claration :

<data-sources>
<data-source type=3D"org.apache.commons.dbcp.BasicDataSource"
key=3D"DB_connect">
<set-property property=3D"driverClassName"
value=3D"com.mysql.jdbc.Driver" />
<set-property property=3D"url"
value=3D"jdbc:mysql://localhost/bddStruts" />
<set-property property=3D"username" value=3D"root" />
<set-property property=3D"password" value=3D"struts" />
<set-property property=3D"maxActive" value=3D"12" />
<set-property property=3D"maxWait" value=3D"5000" />
<set-property property=3D"defaultAutoCommit" value=3D"true" />
<set-property property=3D"defaultReadOnly" value=3D"false" />
<set-property property=3D"validationQuery" value=3D"SELECT COUNT(*)
FROM users" />
</data-source>

Au lancement de l'application, j'ai l'erreur suivant dans ma console :

GRAVE: Initializing application data source DB_connect

org.apache.commons.dbcp.SQLNestedException: Cannot create
PoolableConnectionFactory (Communication link failure:
java.io.IOException, underlying cause: Unexpected end of input stream

+ beaucoup d'erreurs java qui en d=E9coule.

Si vous pouviez m'aider ce serait sympa.
Merci et bonne journ=E9e

8 réponses

Avatar
Kris74
J'ai regardé si j'avais bien les fichiers :
mysql-connector-java-3.1.8-bin.jar
et
commons-dbcp-1.2.1.jar
dans mon dossier lib de l'application pour la bdd.
Ils y sont bien.
Bref je ne sais plus quoi faire.

Si vous avez une ptite idée, proposez la
Merci
Avatar
Lionel
Kris74 wrote:
(depuis lundi matin, alors que mon
application fonctionnait vendredi dernier)


Qu'est ce qui a changé entre vendredi et ce matin ?

Avatar
Kris74
Ce que j'ai changer moi : RIEN.
Ce qui a changé : Erreur dans ma console (pour Tomcat):
GRAVE: Initializing application data source DB_connect

org.apache.commons.dbcp.SQLNestedException: Cannot create
PoolableConnectionFactory (Communication link failure:
java.io.IOException, underlying cause: Unexpected end of input stream

Dans ma console ( pour mon application):
StandardContext[/AppliStruts]La servlet AppliStruts est marqué comme
indisponible
StandardContext[/AppliStruts]La servlet /AppliStruts a généré une
exception "load()"
javax.servlet.UnavailableException: Initializing application data
source DB_connect

DB_connect est la "key" de mon data source.

Si tu vois d'ou peut venir mon erreur ce serait super bien :-)
Merci après midi

PS : j'ai le meme probleme que Clara :
http://groups.google.fr/group/fr.comp.lang.java/browse_thread/thread/800539 3d9c5b2502/8428f918677cd49c?q=struts+mysql&rnum=1#8428f918677cd49c
Avatar
Lionel
Kris74 wrote:
Ce que j'ai changer moi : RIEN.
Ce qui a changé : Erreur dans ma console (pour Tomcat):
GRAVE: Initializing application data source DB_connect

org.apache.commons.dbcp.SQLNestedException: Cannot create
PoolableConnectionFactory (Communication link failure:
java.io.IOException, underlying cause: Unexpected end of input stream


Quand une appli fonctionne le vendredi soir et qu'elle plante le lundi matin
sans que personne n'ait rien touché c'est en général qu'il y a eu un pb lors
du reboot d'un serveur...
Je suppose que tu as bien vérifié que le service mysql avait redémarré
correctement et que la base est accessible...

Avatar
Kris74
oui je peux y accèder depuis le terminal linux
il n'y a pas de problème
c'est pour ça que je ne comprends pas
Avatar
Kris74
Par contre je n'ai rien défini dans le fichier server.xml.
Est qu'il y a quelque chose à configurer dans ce fichier?

Merci de ton aide Lionel :)
Avatar
Kris74
Je peux me connecter à la Bdd en utilisant une simple classe java
comme ceci:
package javappli;

import java.sql.*;

public class Main {

public static void main(String[] args){

String pilote = "com.mysql.jdbc.Driver";

try{
Class.forName(pilote);
Connection connexion =
DriverManager.getConnection("jdbc:mysql://localhost/articles","root","root" );
connexion.setAutoCommit( true );
Statement instruction = connexion.createStatement();
ResultSet resultat = instruction.executeQuery("SELECT *
FROM articles");
while(resultat.next()){

System.out.println("code:
"+resultat.getString("code"));
System.out.println("nom:
"+resultat.getString("nom"));
System.out.println("Prix:
"+resultat.getFloat("prix"));
System.out.println("Stock actuel:
"+resultat.getInt("stockActuel"));
System.out.println("Stock minimum:
"+resultat.getInt("stockMinimum"));

}
}
catch (Exception e){

System.out.println("echec pilote : "+e);
}
}
}
Un autre test ou je crée une datasource avec Tomcat Admin dans
Ressources->datasources comme ceci:

JNDI Name: jdbc/test
Data Source URL:jdbc: mysql://localhost:3306/test?autoReconnect=true
JDBC Driver Class: com.mysql.jdbc.Driver
User Name: root
Password: root
Max. Active Connections: 4
Max. Idle Connections: 2
Max. Wait for Connection:5000

Et j'ai modifié le context.xml comme ceci:

<Context path="/test">
<ResourceLink name="jdbc/test"
type="javax.sql.DataSource"
global="jdbc/test"/>
<Logger className="org.apache.catalina.logger.FileLogger"
prefix="test" suffix=".log" timestamp="true"/>

Et le web.xml comme ceci

<resource-ref>
<description>Connection pool</description>
<res-ref-name>jdbc/test</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>

Mais ça me fonctionne pas si j'execute mon application qui es une
simple JSP.

Si vous avez des idées, ce serai sympa
Merci

Kris
Avatar
Kris74
J'ai oublié de donner mon message d'erreur:

javax.servlet.ServletException: Unable to get connection, DataSource
invalid: "org.apache.commons.dbcp.SQLNestedException: Cannot create
JDBC driver of class ''

Merci

Kris74