IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Spring Java Discussion :

Comment utiliser DaoSupport? [Data]


Sujet :

Spring Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    17
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Seine et Marne (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 17
    Par défaut Comment utiliser DaoSupport?
    Bonjour à tous,

    J'ai crée une couche de persistance avec JDBC en utilisant la classe de support de Spring, DaoSupport.
    L'implémentation de mon DAO, COJobDAOImpl, hérite donc de org.springframework.jdbc.core.simple.SimpleJdbcDaoSupport.
    Quand je lance mon application, j'ai cette erreur:

    GRAVE: Context initialization failed
    org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jobsManager' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Cannot resolve reference to bean 'COJobDao' while setting bean property 'jobDAO'; nested exception is org.springframework.beans.factory.CannotLoadBeanClassException: Error loading class [mp.domain.dao.jdbc.COJobDAOImpl] for bean with name 'COJobDao' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: problem with class file or dependent class; nested exception is java.lang.NoClassDefFoundError: org/springframework/dao/support/DaoSupport
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:275)
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:104)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1172)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:940)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:437)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:383)
    at java.security.AccessController.doPrivileged(Native Method)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:353)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:245)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:169)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:242)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:400)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:736)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:369)
    at org.springframework.web.struts.ContextLoaderPlugIn.createWebApplicationContext(ContextLoaderPlugIn.java:354)
    at org.springframework.web.struts.ContextLoaderPlugIn.initWebApplicationContext(ContextLoaderPlugIn.java:295)
    at org.springframework.web.struts.ContextLoaderPlugIn.init(ContextLoaderPlugIn.java:225)
    at org.apache.struts.action.ActionServlet.initModulePlugIns(ActionServlet.java:869)
    at org.apache.struts.action.ActionServlet.init(ActionServlet.java:336)
    at javax.servlet.GenericServlet.init(GenericServlet.java:212)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1139)
    at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:966)
    at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:3956)
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4230)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014)
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:736)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014)
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
    at org.apache.catalina.core.StandardService.start(StandardService.java:448)
    at org.apache.catalina.core.StandardServer.start(StandardServer.java:700)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:552)
    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:597)
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:295)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:433)
    Caused by: org.springframework.beans.factory.CannotLoadBeanClassException: Error loading class [mp.domain.dao.jdbc.COJobDAOImpl] for bean with name 'COJobDao' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: problem with class file or dependent class; nested exception is java.lang.NoClassDefFoundError: org/springframework/dao/support/DaoSupport
    at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1176)
    at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1146)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:360)
    at java.security.AccessController.doPrivileged(Native Method)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:353)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:245)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:169)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:242)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:269)
    ... 37 more
    Caused by: java.lang.NoClassDefFoundError: org/springframework/dao/support/DaoSupport
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
    at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:1852)
    at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:876)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1329)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1208)
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
    at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:1852)
    at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:876)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1329)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1208)
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
    at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:1852)
    at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:876)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1329)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1208)
    at org.springframework.util.ClassUtils.forName(ClassUtils.java:230)
    at org.springframework.beans.factory.support.AbstractBeanDefinition.resolveBeanClass(AbstractBeanDefinition.java:381)
    at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1170)
    ... 46 more
    J'ai essayé une connexion JDBC sans passer par le DaoSupport de Spring et ça marche.

    J'ai oublié la question:

    Avez-vous une idée d'où peut provenir le problème?

    J'avais ajouté une dépendance au JAR spring-jdbc.jar et comme ça ne marchait pas, j'ai ajouté dans le build path les JAR spring-dao et spring-tx. Mais ça ne marche toujours pas.
    Je n'ai pas d'erreur d'import lorsque que je visualise mes classes avec Eclipse.

    Pour resituer le contexte, je développe une application web utilisant struts 1.2.9, tomcat 5.5, spring 2.5 et maven 2. Pour la couche de persistance, je veux utiliser JDBC via Spring (cf. JdbcDaoSupport) afin de faciliter les développements avec JDBC.

  2. #2
    Rédacteur
    Avatar de Hikage
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 177
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 177
    Par défaut
    Bon, il n'y a pas "photo", vu l'erreur :

    java.lang.NoClassDefFoundError: org/springframework/dao/support/DaoSupport
    Il faut clairement regarder du coté des Jars.


    Tu build/déploie comment ton projet dans ton serveur d'application ( ou tomcat ) ?
    Via Eclipse ? ou en générant le War avec Maven ?
    Hikage
    SCJP / SCWCD & SCWSJD Certified / Spring Framework Certified
    [Personal Web] [CV]

    F.A.Q Spring Framework - Participez !

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    17
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Seine et Marne (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 17
    Par défaut
    Bonjour Hikage,

    J'utilise Eclipse pour déployer mon application dans Tomcat.
    Et dans le build path d'Eclipse, j'indique que je récupère les jars dans le repository Maven.

    Voici le .classpath d'Eclipse de mon projet Web:
    <?xml version="1.0" encoding="UTF-8"?>
    <classpath>
    <classpathentry kind="src" path="src/main/resources/com/java"/>
    <classpathentry kind="var" path="M2_REPO/taglibs/standard/1.1.1/standard-1.1.1.jar"/>
    <classpathentry kind="var" path="M2_REPO/xalan/xalan/2.5.1/xalan-2.5.1.jar"/>
    <classpathentry kind="var" path="M2_REPO/javax/servlet/jstl/1.1.2/jstl-1.1.2.jar" sourcepath="M2_REPO/javax/servlet/jstl/1.1.2/jstl-1.1.2-sources.jar"/>
    <classpathentry kind="var" path="M2_REPO/xml-apis/xml-apis/1.0.b2/xml-apis-1.0.b2.jar"/>
    <classpathentry kind="var" path="M2_REPO/commons-logging/commons-logging/1.0.4/commons-logging-1.0.4.jar"/>
    <classpathentry kind="var" path="M2_REPO/org/springframework/spring-webmvc-struts/2.5.1/spring-webmvc-struts-2.5.1.jar"/>
    <classpathentry kind="var" path="M2_REPO/commons-validator/commons-validator/1.1.4/commons-validator-1.1.4.jar"/>
    <classpathentry kind="var" path="M2_REPO/velocity/velocity-dep/1.4/velocity-dep-1.4.jar" sourcepath="M2_REPO/velocity/velocity-dep/1.4/velocity-dep-1.4-sources.jar"/>
    <classpathentry kind="var" path="M2_REPO/org/springframework/spring-context-support/2.5.1/spring-context-support-2.5.1.jar"/>
    <classpathentry kind="var" path="M2_REPO/javax/servlet/servlet-api/2.4/servlet-api-2.4.jar" sourcepath="M2_REPO/javax/servlet/servlet-api/2.4/servlet-api-2.4-sources.jar"/>
    <classpathentry kind="var" path="M2_REPO/struts/struts/1.2.9/struts-1.2.9.jar"/>
    <classpathentry kind="var" path="M2_REPO/org/springframework/spring-webmvc/2.5.1/spring-webmvc-2.5.1.jar"/>
    <classpathentry kind="var" path="M2_REPO/commons-collections/commons-collections/3.0/commons-collections-3.0.jar"/>
    <classpathentry kind="var" path="M2_REPO/commons-lang/commons-lang/2.1/commons-lang-2.1.jar"/>
    <classpathentry kind="var" path="M2_REPO/commons-digester/commons-digester/1.6/commons-digester-1.6.jar"/>
    <classpathentry kind="var" path="M2_REPO/struts-menu/struts-menu/2.4.3/struts-menu-2.4.3.jar" sourcepath="M2_REPO/struts-menu/struts-menu/2.4.3/struts-menu-2.4.3-sources.jar"/>
    <classpathentry kind="var" path="M2_REPO/org/springframework/spring-context/2.5.1/spring-context-2.5.1.jar"/>
    <classpathentry kind="var" path="M2_REPO/commons-fileupload/commons-fileupload/1.0/commons-fileupload-1.0.jar"/>
    <classpathentry kind="var" path="M2_REPO/org/springframework/spring-core/2.5.1/spring-core-2.5.1.jar"/>
    <classpathentry kind="var" path="M2_REPO/org/springframework/spring-beans/2.5.1/spring-beans-2.5.1.jar"/>
    <classpathentry kind="var" path="M2_REPO/oro/oro/2.0.7/oro-2.0.7.jar"/>
    <classpathentry kind="var" path="M2_REPO/aopalliance/aopalliance/1.0/aopalliance-1.0.jar" sourcepath="M2_REPO/aopalliance/aopalliance/1.0/aopalliance-1.0-sources.jar"/>
    <classpathentry kind="var" path="M2_REPO/commons-beanutils/commons-beanutils/1.7.0/commons-beanutils-1.7.0.jar" sourcepath="M2_REPO/commons-beanutils/commons-beanutils/1.7.0/commons-beanutils-1.7.0-sources.jar">
    <attributes>
    <attribute name="javadoc_location" value="jar:file:/C:/Documents and Settings/deebak/.m2/repository/commons-beanutils/commons-beanutils/1.7.0/commons-beanutils-1.7.0-javadoc.jar!/"/>
    </attributes>
    </classpathentry>
    <classpathentry kind="var" path="M2_REPO/velocity/velocity/1.4/velocity-1.4.jar" sourcepath="M2_REPO/velocity/velocity/1.4/velocity-1.4-sources.jar"/>
    <classpathentry kind="var" path="M2_REPO/antlr/antlr/2.7.2/antlr-2.7.2.jar"/>
    <classpathentry kind="var" path="M2_REPO/javax/servlet/jsp/jsp-api/2.0/jsp-api-2.0.jar"/>
    <classpathentry kind="var" path="M2_REPO/velocity-tools/velocity-tools-view/1.0/velocity-tools-view-1.0.jar"/>
    <classpathentry kind="var" path="M2_REPO/org/springframework/spring-web/2.5.1/spring-web-2.5.1.jar"/>
    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/jdk1.6.0_01"/>
    <classpathentry kind="var" path="M2_REPO/ostermillerutils/ostermillerutils/1.7.0/ostermillerutils-1.7.0.jar">
    <attributes>
    <attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>
    </attributes>
    </classpathentry>
    <classpathentry kind="var" path="M2_REPO/org/springframework/spring-jdbc/2.5/spring-jdbc-2.5.jar" sourcepath="/M2_REPO/org/springframework/spring-jdbc/2.5/spring-jdbc-2.5-sources.jar"/>
    <classpathentry kind="var" path="M2_REPO/org/springframework/spring-jdbc/2.5/spring-jdbc-2.5-sources.jar"/>
    <classpathentry kind="var" path="M2_REPO/org/springframework/spring-orm/2.5/spring-orm-2.5.jar"/>
    <classpathentry kind="var" path="M2_REPO/org/springframework/spring-aop/2.5/spring-aop-2.5.jar"/>
    <classpathentry kind="var" path="M2_REPO/org/springframework/spring-tx/2.5/spring-tx-2.5.jar"/>
    <classpathentry kind="var" path="M2_REPO/org/springframework/spring-test/2.5/spring-test-2.5.jar" sourcepath="/M2_REPO/org/springframework/spring-test/2.5/spring-test-2.5-sources.jar"/>
    <classpathentry kind="var" path="M2_REPO/junit/junit/4.4/junit-4.4.jar"/>
    <classpathentry kind="var" path="M2_REPO/org/springframework/spring-dao/2.0.7/spring-dao-2.0.7.jar"/>
    <classpathentry kind="output" path="target/classes"/>
    </classpath>

    Dans le le JAR spring-jdbc-2.5.jar, que j'ai indiqué dans le build path d'Eclipse, il y a bien la classe org/springframework/dao/support/DaoSupport. Alors je ne comprends pas pourquoi il me lance java.lang.NoClassDefFoundError au lancement de mon application.

    Je me suis dit qu'il fallait peut-être mettre ce JAR dans le répertoire apache-tomcat-5.5.25\common\lib. Mais comme ça ne marche toujours pas, je l'ai retiré.

    Auparavant je n'utilisais pas le DAOSupport de Spring (et ni spring-jdbc-2.5.jar) mais uniquement l'injection de dépendances et mon application marchait bien.
    Comme on peut le voir à la fin du fichier .classpath, j'ai ajouté des jars de Spring pour utiliser cette classe.

  4. #4
    Rédacteur
    Avatar de Hikage
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 177
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 177
    Par défaut
    Peux tu vérifier les librairies que Eclipse "exporte" lors du deploiement ?
    autrement dit, si les librairies Dao sont bien dans le WEB-INF/lib du war généré?
    Hikage
    SCJP / SCWCD & SCWSJD Certified / Spring Framework Certified
    [Personal Web] [CV]

    F.A.Q Spring Framework - Participez !

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    17
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Seine et Marne (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 17
    Par défaut
    Alors en fait, pour lancer mon application, j'utilisais le "Debug on Server" d'Eclipse en spécifiant Tomcat 5.5 comme serveur.

    Donc pour générer le war, j'ai fait un export depuis eclipse et voici un screenshot de mon war dépacké (en fichier attaché).

    Il y a donc bien les librairies Dao dans WEB-INF/lib du war généré via la commande "Export/WAR file with..." d'Eclipse.

    -----------------------

    Mais je me demandais, comme je ne maîtrise pas parfaitement Eclipse, lorsqu'on fait une "Run on Server" ou un "Debug on Server", finalement l'application n'est pas déployée dans Tomcat... J'étais persuadé qu'un WAR était envoyé dans mon répertoire Tomcat mais ce n'est pas le cas.
    Images attachées Images attachées  

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    17
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Seine et Marne (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 17
    Par défaut
    J'ai lu dans le forum de SpringFramework, qu'il pourrait s'agir d'un problème de classloader avec Tomcat 5.5.20.

    J'utilise Tomcat 5.5.21.

    Voici le lien du post:
    http://forum.springframework.org/showthread.php?t=28028

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 24/02/2009, 12h06
  2. Comment utiliser un cache ?
    Par TOM-Z dans le forum XMLRAD
    Réponses: 4
    Dernier message: 14/03/2003, 09h55
  3. comment utiliser actionscript ?
    Par webs dans le forum Flash
    Réponses: 3
    Dernier message: 09/02/2003, 23h11
  4. Comment utiliser OUT ?
    Par Bouziane Abderraouf dans le forum CORBA
    Réponses: 3
    Dernier message: 20/07/2002, 09h35
  5. Réponses: 5
    Dernier message: 11/06/2002, 15h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo