Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 21/01/2007, à 00:43

ludovick

TOMCAT + MYSQL +STRUTS problème datasource(driver)

Bonsoir,
bon mon problème est le suivant

j'ai développé une application sous Struts Mysql sous windows et l'appli fonctionne parfaitement.

Maintenant voulant la mettre en ligne je me suis mis trankilement sur une dedibox avec un OS ubuntu sans trop me stresser

Jusqu'ici tout va bien, j'installe Mysql, je passe mes script de création de base  , tout marche nikel
je continu, j'installe Tomcat5 je tests les pages jsp d'exemple et des servlet nikel tout va bien
là je récupère quelques .war struts avec des exemples pour voir si ça tourne et tout est ok pour les exemples simples

Donc je décide de placer le .war de mon appli et là la page de logion s'affiche (c'est une .jsp) mais seulement petit problème lorsqu'il faut se connecter à la BDD je me retrouve avec :

javax.servlet.UnavailableException: Initializing application data source org.apache.struts.action.DATA_SOURCE
        at org.apache.struts.action.ActionServlet.initModuleDataSources(ActionServlet.java:812)
        at org.apache.struts.action.ActionServlet.init(ActionServlet.java:335)
        at javax.servlet.GenericServlet.init(GenericServlet.java:211)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:243)
        at java.security.AccessController.doPrivileged(Native Method)
        at javax.security.auth.Subject.doAsPrivileged(Subject.java:517)
        at org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:272)
        at org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:161)
        at org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:114)
        at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1038)
        at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:876)
        at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4017)
        at org.apache.catalina.core.StandardContext.start(StandardContext.java:4337)
        at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:823)
        at org.apache.catalina.core.ContainerBase.access$0(ContainerBase.java:121)
        at org.apache.catalina.core.ContainerBase$PrivilegedAddChild.run(ContainerBase.java:143)
        at java.security.AccessController.doPrivileged(Native Method)
        at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:805)
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:595)
        at org.apache.catalina.core.StandardHostDeployer.install(StandardHostDeployer.java:277)
        at org.apache.catalina.core.StandardHost.install(StandardHost.java:832)
        at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:625)
        at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:431)
        at org.apache.catalina.startup.HostConfig.start(HostConfig.java:983)
        at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:349)
        at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
        at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1091)
        at org.apache.catalina.core.StandardHost.start(StandardHost.java:789)
        at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1083)
        at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:478)
        at org.apache.catalina.core.StandardService.start(StandardService.java:480)
        at org.apache.catalina.core.StandardServer.start(StandardServer.java:2313)
        at org.apache.catalina.startup.Catalina.start(Catalina.java:556)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:287)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:425)

et ceci :

Etat HTTP 404 - Servlet action n'est pas disponible.

type Rapport d'état

message Servlet action n'est pas disponible.

description La ressource demandée (Servlet action n'est pas disponible.) n'est pas dispo

donc visiblement le pb semble venir d'un driver non trouvé par TOMCAT lors de son lancement...

Or sous windows je met ce driver (driver Mysql) dans ".../common/lib/"

et je paramètre mon struts-config ainsi :

<data-sources>

		<data-source

			type="org.apache.tomcat.dbcp.dbcp.BasicDataSource">

			<set-property property="driverClassName"

				value="com.mysql.jdbc.Driver" />

			<set-property property="url"

				value="jdbc:mysql://localhost:3306/mabase" />

			<set-property property="username" value="XXXXX" />

			<set-property property="password" value="XXXXX" />

			<set-property property="maxActive" value="10" />

			<set-property property="maxWait" value="5000" />

			<set-property property="defaultAutoCommit" value="false" />

			<set-property property="defaultReadOnly" value="false" />

			<set-property property="validationQuery"

				value="SELECT COUNT(*) FROM compte" />

		</data-source>

donc ma question est :

ou est le répertoir ou je met mes librairies additionnelles pour tomcat sous ubuntu ??? (j'ai du mal à retrouver mes petits) ?


bref toute aide sera la bien venu parceque j'ai beau chercher de la doc je rame un peu sur ce problème

merci à vous

#2 Le 21/01/2007, à 03:05

eclipse

Re : TOMCAT + MYSQL +STRUTS problème datasource(driver)

Héllo !

<set-property property="url"

                value="jdbc:mysql://localhost:3306/mabase" />

            <set-property property="username" value="XXXXX" />

            <set-property property="password" value="XXXXX" />

Tu n'es pas prés d'y parvenir avec cette config !
Change là ou il y a mabase. Par Exemple, tu crées une base de données strutsbase, accordes les privileges pour un utilisateur test usertest avec un mot de passe pour localhost, ce qui pourrait donner une ligne comme ceci:

 GRANT ALL PRIVILEGES ON strutsbase.* TO usertest@localhost IDENTIFIED BY 'motDePass'

Ensuite tu modifies en conséquence dans ton fichier strust config là de la facon suivante :

<set-property property="url"

                value="jdbc:mysql://localhost:3306/strustsbase" />

            <set-property property="username" value="usertest" />

            <set-property property="password" value="motDePass" />

Sinon en principe le répertoire de config de tomcat5 où tu dois place le driver se trouve dans "/var/lib/tomcat5"
Voilà c'est tout facile ! smile

Dernière modification par eclipse (Le 21/01/2007, à 03:07)

#3 Le 21/01/2007, à 03:27

ludovick

Re : TOMCAT + MYSQL +STRUTS problème datasource(driver)

lol
rassure toi pour ce data-source config :-D
merci pour ta réponse mais la config que j'ai donné n'est pas tout à fait celle que j'ai... j'allais pas mettre le vrai nom de ma base ni mon identifiant root et mon password en clair alors que c'est un site grand publique ;-) (je pensais vraiment pas que quelqu'un me la ferait celle là ^^)

cette config marche parfaitement sous Windows comme je l'ai expliqué dans mon poste donc je ne vois pas pourquoi elle ne fonctionnerait pas sous linux étant donné la portabilité de JAVA

non le seul truc qui me manquait c'est le répertoire linux dans lequel je suis sensé mettre les lib externes comme les drivers jdbc

je vais essayer le répertoire que tu m'as donné

je te tiens au courant

#4 Le 21/01/2007, à 03:33

ludovick

Re : TOMCAT + MYSQL +STRUTS problème datasource(driver)

alors j'ai bien mis les derniers drivers jdbc dans (ceux qui fonctionnent bien sous windows et qui sont dans le repertoire common/lib de tomcat)

"/var/lib/tomcat5/shared/lib/"  => mais ça ne change rien

puis j'ai essayé "/var/lib/tomcat5/" => ça ne marche toujours pas


j'ai même tenté un "/var/lib/tomcat5/common" en créant un rep "common"

=> mais non à chaque fois le même problème de connexion à la bdd qui ne passe pas sous linux

need help

#5 Le 21/01/2007, à 03:55

Ludovick

Re : TOMCAT + MYSQL +STRUTS problème datasource(driver)

Bon j'ai un peu avancé j'ai réglé l'erreur de type Security en passant un paramètre du fichier /etc/default/tomcat5 : TOMCAT5_SECURITY = no


mais j'ai une nouvelle erreur qui je pense elle est vraiment lié au driver :

javax.servlet.UnavailableException: Initializing application data source org.apache.struts.action.DATA_SOURCE
        at org.apache.struts.action.ActionServlet.initModuleDataSources(ActionServlet.java:812)
        at org.apache.struts.action.ActionServlet.init(ActionServlet.java:335)
        at javax.servlet.GenericServlet.init(GenericServlet.java:211)
        at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1044)
        at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:876)
        at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4017)
        at org.apache.catalina.core.StandardContext.start(StandardContext.java:4337)
        at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:823)
        at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:807)
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:595)
        at org.apache.catalina.core.StandardHostDeployer.install(StandardHostDeployer.java:277)
        at org.apache.catalina.core.StandardHost.install(StandardHost.java:832)
        at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:625)
        at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:431)
        at org.apache.catalina.startup.HostConfig.start(HostConfig.java:983)
        at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:349)
        at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
        at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1091)
        at org.apache.catalina.core.StandardHost.start(StandardHost.java:789)
        at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1083)
        at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:478)
        at org.apache.catalina.core.StandardService.start(StandardService.java:480)
        at org.apache.catalina.core.StandardServer.start(StandardServer.java:2313)
        at org.apache.catalina.startup.Catalina.start(Catalina.java:556)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:287)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:425)

quelqu'un sait-il comment on peut visualisé les jar qui sont chargé par tomcat lors du start ? Comme ça je pourrais vérifier si mes drivers sont bien loadés

merci

#6 Le 21/01/2007, à 12:30

ludovick

Re : TOMCAT + MYSQL +STRUTS problème datasource(driver)

Je suis toujours bloqué... sad

Personne n'a d'idée pour l'emplace de ces fichu drivers jdbc ? hmm

#7 Le 21/01/2007, à 19:54

ludovick

Re : TOMCAT + MYSQL +STRUTS problème datasource(driver)

le désespoire m'accable je viens de passer tout mon week end sur ça... Et j'ai rien trouvé

ni documentation claire ni personne pour me donner de réponse

misère de misère... Bloquer sur un pb de connexion entre la BDD et mon appli ...je hais Linux (des fois^) !:(

#8 Le 21/01/2007, à 22:27

eclipse

Re : TOMCAT + MYSQL +STRUTS problème datasource(driver)

Alors, j'ai fais un peu de béaba au début, car on ne sait jamais... neutral

Ensuite, je te conseille vivement de virer la version de Tomcat que tu as installé avec les debs. Penses à sauvegarder cependant le fichier "/etc/init.d/tomcat5".
Ensuite tu vas sur le site de tomcat5 => http://tomcat.apache.org/ et tu télécharges la version que tu souhaites et tu l'installes là où tu veux... Puis grâce au fichier que tu as gardé avant, tu vas le modifier avec les emplacements de ton installation de tomcat. Tu pourras t'y retrouver aisément avec les répertoires de tomcat.

J'ai fais ainsi avec blojsom, car ca marchait pas mon installation deb de tomcat. Voici un appercu de mon weblog smile  http://www.lequidam.net:8080/blojsom/blog/default/

Bon, j'espère que mes quelques explications sont claires neutral smile

#9 Le 21/01/2007, à 22:40

ludovick

Re : TOMCAT + MYSQL +STRUTS problème datasource(driver)

tu penses vraiment que le pb de communication entre la version de tomcat5 (que j'ai récupéré à partir des packet de base ubuntu) et ma base MySQL 5 vient de la version de tomcat elle même ?

si c'est ça c'est grave parce que franchement je ne suis pas en train de tenter le diable...Je dirais même que je fais une application on ne peut plus classique qui d'ailleurs fonctionne parfaitement sous Windows


Bon je vais essayer de changer ma version de Tomcat sous ubuntu j'ai la Apache Tomcat/5.0

et sous Windows j'ai la : Tomcat/5.5.20

si ça vient de ça je vais être dégoûté d'avoir passé mon week end sur ça big_smile

merci à toi je te tiens au courant...juste le temps de tenter la manip

#10 Le 21/01/2007, à 23:33

eclipse

Re : TOMCAT + MYSQL +STRUTS problème datasource(driver)

Bah j'en sais rien si ca vient de ca mais je n'ai pas passer 2 jours pour ca moa big_smile

Bon, je suis sur Debian, mais c'est comme sous Ubuntu
   * tomcat 5.5.20
   * jre 1.5.0_10.3
   * driver jdbc mysql 5.0.4

J'ai meme essayé avec avec le gnu java "/usr/lib/jvm/java-1.4.2-gcj-4.1-1.4.2.0"

L'important étant que tomcat sache où est la jvm !

Bon @+ tard, j'ai des choses sur le feu !!! big_smile

Dernière modification par eclipse (Le 21/01/2007, à 23:34)

#11 Le 22/01/2007, à 00:04

ludovick

Re : TOMCAT + MYSQL +STRUTS problème datasource(driver)

bon j'ai téléchargé la nouvelle version de tomcat => 5.5.20 et j'ai tout installé dans /opt/

j'avais conservé le init.d/tomcat5

et j'ai modifié les path de cette manière :

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
NAME=tomcat
DESC="Tomcat 5 servlet engine"
CATALINA_HOME=/etc/opt/$NAME
DAEMON=$CATALINA_HOME/bin/catalina.sh
DEFAULT=/usr/lib/jvm/java-1.5.0-sun-1.5.0.06/

# The following variables can be overwritten in $DEFAULT

# Run Tomcat 5 as this user ID
TOMCAT5_USER=tomcat5

# The first existing directory is used for JAVA_HOME (if JAVA_HOME is not
# defined in $DEFAULT)
JDK_DIRS="/usr/lib/j2sdk1.5-sun /usr/lib/j2sdk1.3-sun /usr/lib/j2sdk1.3-blackdown /usr/lib/jvm/java-gcj /usr/lib/kaffe"

mais voilà quand je lance la commande : $ sudo /etc/init.d/tomcat5 restart

je prend l'erreur suivante :

Stopping Tomcat 5 servlet engine: (not running).
Could not start Tomcat 5 servlet engine because no Java Development Kit
(JDK) was found. Please download and install JDK 1.3 or higher and set
JAVA_HOME in /usr/lib/jvm/java-1.5.0-sun-1.5.0.06/ to the JDK's installation directory.

ayant installé le jdk java-1.5.0-sun-1.5.0.06 et n'ayant effacé QUE l'ancienne version de Tomcat je comprend pas pourquoi il ne trouve pas la jvm .... une idée ?

#12 Le 22/01/2007, à 00:14

eclipse

Re : TOMCAT + MYSQL +STRUTS problème datasource(driver)

Commences à faire un sudo update-alternatives java et vois si cela pointe bien vers le jdk

Ensuite j'ai modifié  "/etc/profiles" comme ceci :

# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).

if [ "`id -u`" -eq 0 ]; then
  PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/jvm/java-1.5.0-sun/bin"
else
  PATH="/usr/local/bin:/usr/bin:/bin:/usr/games:/usr/lib/jvm/java-1.5.0-sun/bin"
fi

if [ "$PS1" ]; then
  if [ "$BASH" ]; then
    PS1='\h:\w \\$ '
  else
    if [ "`id -u`" -eq 0 ]; then
      PS1='# '
    else
      PS1='$ '
    fi
  fi
fi

JAVA_HOME="/usr/lib/jvm/java-1.5.0-sun"
CLASSPATH="."

export PATH CLASSPATH JAVA_HOME

umask 022

Modifie en conséquence avec des chemins exactes...
Redémarre l'ordi... et normalement ca devrait allér roll

Sinon, avant de t'occuper du fichier /etc/init.d/tomcat5 essaies de démarrer tomcat avec la commande qui se se trouve dans /opt/tomcat/bin/startup.sh... tu auras les errors possibles et tu pourras corriger cela au mieux.

Bon cette fois, je suis pu là ! smile

Dernière modification par eclipse (Le 22/01/2007, à 00:16)

#13 Le 22/01/2007, à 00:50

ludovick

Re : TOMCAT + MYSQL +STRUTS problème datasource(driver)

Bon j'arrive à démarrer tomcat 5.5.20 en utilisant le startup.sh et en faisant un export JAVA_HOME juste avant

par contre j'ai toujours le même souci avec la bdd mais là je n'ai plus aucune erreur dans les logs lors du chargement de l'appli ...

Du coup chui pas dans le caca moi lol

j'ai mis les deux jars celui de mysql de common-dbcp-1.2 dans le rep common/lib/

et mon datasource du struts-config est toujours le même :

<struts-config>

	<data-sources>

		<data-source

			type="org.apache.tomcat.dbcp.dbcp.BasicDataSource">

			<set-property property="driverClassName"

				value="com.mysql.jdbc.Driver" />

			<set-property property="url"

				value="jdbc:mysql://localhost:3306/testjeu" />

			<set-property property="username" value="root" />

			<set-property property="password" value="xxxxx" />

			<set-property property="maxActive" value="10" />

			<set-property property="maxWait" value="5000" />

			<set-property property="defaultAutoCommit" value="false" />

			<set-property property="defaultReadOnly" value="false" />

			<set-property property="validationQuery"

				value="SELECT COUNT(*) FROM matable" />

		</data-source>



	</data-sources>

c'est quand même horrible !! Je développe toute la semaine des applis web sous JBoss, tomcat en Struts + hibernate j'en passe et des meilleurs... Mais évidement le tout sous windows et là sur la dédibox que je viens de prendre je suis contraint de prendre ubuntu puisque sans licence XP pro... Et évidement je remercie la portabilité de java étonnante et la symplicité de linux qui m'ont foutu en l'air mon week end pour une ****(autocensure) de configuration de connexion à une petite bdd Mysql roll

monde ingrat big_smile

Bon ben si quelqu'un a une idée ...je suis toujours preneur avant d'aller me pendre ^

#14 Le 26/01/2007, à 23:09

nicocolt

Re : TOMCAT + MYSQL +STRUTS problème datasource(driver)

Salut,

As-tu avancé sur ton problème ?

Nico

Hors ligne

#15 Le 30/01/2007, à 01:29

atomsk

Re : TOMCAT + MYSQL +STRUTS problème datasource(driver)

Bonjour à tous!

je suis dans la même panade que ludovick... Je suis sous une ubuntu 6.06 LTS Dapper Drake et j'utilise Tomcat 5.5.20 avec un jsdk 1.5.0_09.
Je voudrais pouvoir faire marcher à la différence de ludovick mon appli avec un serveur postgresql (8.1).
Le problème est que je ne peux pas charger le driver JDBC.

Or, je l'ai testé avec des applis externes à tomcat et il n'y a pas de problèmes. Au niveau de mon appli, j'ai bien mis mon driverxxx.jar dans

<monappli_contexte>/WEB-INF/lib/<mondriver_jdbc.jar>

cela ne fonctionne pas.

J'ai pourtant réussi à faire marcher mon appli dans ces conditions sur une autre machine et exactement la même distribution, mêmes serveurs pgsql et tomcat.
Mais sur mon serveur, il semble que j'aie un problème de persitance de connexion à la BD.
Je m'explique: je charge ma page Jsp et j'obtiens la connexion une fois sur 4... -_-

Je me demande ce qui peut gener dans ces conditions?? Je seche complètement ... sad

Si quelqu'un avait une idée à propos de la persistance de connec' ce serait super sympa !! ^^

Merci d'avance!

Note: pour ludovick: As-tu essayé de mettre ton driver mysql JDBC dans le WEB-INF/lib de ton appli? Parceque j'ai pu le faire marcher cet après-midi sur une autre machine, sans CLASSPATH et ni de config au niveau du descripteur web.xml.

Dernière modification par atomsk (Le 30/01/2007, à 01:33)

Hors ligne