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 :

[Tuto Serge Tahé] Problème ClassPathXmlApplicationContext


Sujet :

Spring Java

  1. #1
    Candidat au Club
    Inscrit en
    Septembre 2010
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 4
    Points : 4
    Points
    4
    Par défaut [Tuto Serge Tahé] Problème ClassPathXmlApplicationContext
    Bonjour,

    Ayant les bases du langage Java et souhaitant découvrir Java EE, je me suis lancé dans l'étude des 2 cours de Serge Tahé : Persistance Java 5 et Introduction à Java EE 5.

    J'en suis actuellement à la page 37 sur l'introduction au Java EE 5. Il s'agit de tester le fonctionnement de sa couche JDBC, de l'implementation JPA/Hibernate et de la couche DAO via un programme test (tout ça géré par Spring).

    Le programme de test est la classe de test suivante (via JUnit) :

    1. package dao;
    2.
    3. ...
    4.
    5. public class InitDB {
    6.
    7. private IEmployeDao employeDao = null;
    8. private ICotisationDao cotisationDao = null;
    9. private IIndemniteDao indemniteDao = null;
    10.
    11. @BeforeClass
    12. public void init(){
    13. // configuration de l'application
    14. ApplicationContext ctx = new ClassPathXmlApplicationContext("spring-config-dao.xml");
    15. // couches dao
    16. //employeDao = (IEmployeDao) ctx.getBean("employeDao");
    17. //cotisationDao = (ICotisationDao) ctx.getBean("cotisationDao");
    18. //ndemniteDao = (IIndemniteDao) ctx.getBean("indemniteDao");
    19. }
    20.
    21. @Test
    22. public void initDB(){
    23. // on remplit la base
    24. ...
    25. // on affiche le contenu de la base
    26. ...
    27. }
    28.
    29. @Before()
    30. public void clean(){
    31. // on vide la base
    32. ...
    33. }
    J'ai volontairement mis en commentaires les 3 getBean car j'ai déja une erreur sur l'appel de ClassPathXmlApplicationContext.

    Mon fichier spring-config-dao.xml est le suivant :

    <?xml version="1.0" encoding="UTF-8" ?>

    - <beans xmlns="http://www.springframework.org/schema/beans" xmlnssi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schem...-beans-2.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">

    - <!-- couches applicatives -->

    <bean id="employeDao" class="dao.EmployeDao" />
    <bean id="indemniteDao" class="dao.IndemniteDao" />
    <bean id="cotisationDao" class="dao.CotisationDao" />

    - <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="dataSource" ref="dataSource" />
    - <property name="jpaVendorAdapter">
    - <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">

    - <!-- <property name="showSql" value="true" /> -->

    <property name="databasePlatform" value="org.hibernate.dialect.MySQL5InnoDBDialect" />
    <property name="generateDdl" value="true" />
    </bean>
    </property>
    - <property name="loadTimeWeaver">
    <bean class="org.springframework.instrument.classloading.InstrumentationLoadTimeWeaver" />
    </property>
    </bean>

    - <!-- la source de donnéees DBCP -->

    - <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
    <property name="driverClassName" value="com.mysql.jdbc.Driver" />
    <property name="url" value="jdbc:mysql://localhost:3306/dbpam_hibernate" />
    <property name="username" value="dbpam" />
    <property name="password" value="dbpam" />
    </bean>

    - <!-- le gestionnaire de transactions -->

    <tx:annotation-driven transaction-manager="txManager" />
    - <bean id="txManager" class="org.springframework.orm.jpa.JpaTransactionManager">
    <property name="entityManagerFactory" ref="entityManagerFactory" />
    </bean>

    - <!-- traduction des exceptions -->

    <bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor" />

    - <!-- persistence -->

    <bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />
    </beans>
    Voila pour la situation et maintenant le problème .

    Quand j'execute InitDB la méthode init se lance correctement mais quand j'active les logs hibernate une erreur s'affiche alors meme que Netbeans m'affiche que InitDB a réussi son test.

    L'erreur est la suivante :

    (...)
    15:42:18,221 DEBUG SessionFactoryImpl:308 - instantiated session factory
    15:42:18,237 INFO SchemaUpdate:115 - Running hbm2ddl schema update
    15:42:18,237 INFO SchemaUpdate:126 - fetching database metadata
    15:42:18,237 ERROR SchemaUpdate:165 - could not complete schema update
    java.lang.UnsupportedOperationException
    at org.apache.commons.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:116)
    at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:554)
    at org.hibernate.ejb.connection.InjectedDataSourceConnectionProvider.getConnection(InjectedDataSourceConnectionProvider.java:44)
    at org.hibernate.tool.hbm2ddl.SuppliedConnectionProviderConnectionHelper.prepare(SuppliedConnectionProviderConnectionHelper.java:27)
    at org.hibernate.tool.hbm2ddl.SchemaUpdate.execute(SchemaUpdate.java:127)
    at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:314)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1218)
    at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:691)
    at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:127)
    at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:224)
    at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:291)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1368)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1334)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:473)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
    at java.security.AccessController.doPrivileged(Native Method)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:221)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:423)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:729)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:381)
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)
    at dao.JUnitInitDB.init(JUnitInitDB.java:32)
    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.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:27)
    at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:220)
    at junit.framework.JUnit4TestAdapter.run(JUnit4TestAdapter.java:39)
    at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.run(JUnitTestRunner.java:518)
    at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.launch(JUnitTestRunner.java:1052)
    at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.main(JUnitTestRunner.java:906)
    15:42:18,346 DEBUG SessionFactoryImpl:390 - Checking 0 named HQL queries
    15:42:18,346 DEBUG SessionFactoryImpl:410 - Checking 0 named SQL queries
    J'ai essayé énormément de choses avant de tomber la dessus, en effet j'essayais de remplir mes tables mais quand j'essayais de créer un nouvel employé par exemple, InitDB ne se terminait plus correctement et j'avais une erreur "unknown entity : jpa.Employe". J'ai fini par tomber sur l'erreur de ClassPathXmlApplicationContext en activant les logs d'hibernate.

    Débutant dans ce domaine je n'ai absolument plus aucune idée sur l'origine de l'erreur ERROR SchemaUpdate:165 - could not complete schema update.

    J'ai surement du faire une grosse coquille de debutant mais je n'arrive vraiment pas à trouver de solution.

    Une idée ?

    Merci de vos réponses.

  2. #2
    Candidat au Club
    Inscrit en
    Septembre 2010
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    Bon j'ai pu avancer en enlevant l'erreur ERROR SchemaUpdate:165 - could not complete schema update. Pour cela j'ai modifié mon persistance.xml qui était mal configuré. Donc rien a voir avec Spring au final.

    J'ai toujours mon erreur d'unknown entity par contre quand j'essaye de persist () des données.

    Désolé du dérangement !

Discussions similaires

  1. [Data] [Tutoriel Serge Tahé] Problème avec le spring-config.xml
    Par zaboug dans le forum Spring
    Réponses: 13
    Dernier message: 24/05/2011, 01h15
  2. Réponses: 1
    Dernier message: 16/09/2010, 16h58
  3. tutoriel servlets/jsp/Eclipse/tomcat de serge tahé
    Par dprevots dans le forum Tomcat et TomEE
    Réponses: 11
    Dernier message: 03/04/2006, 20h33

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