2011-11-06 3 views
1

Je application simple avec la structure suivante du dossier:Mise en veille prolongée + Spring - mapping xml not found

  • ProjFolder
  • | ----- src
  • | --------- -packagename
  • | --------------- {} SourceFiles
  • | ---------- META-INF
  • | ----- ---------- {beans.xml}
  • | - -------------- {hibernate.cfg.xml}
  • | --------------- {EntityMapping.hbm.xml}

est ici la partie de beans.xml fichier de configuration Spring:

<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
    <property name="location" value="classpath:./META-INF/jdbc.properties" /> 
</bean> 

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> 
    <property name="driverClassName" value="${jdbc.driverClassName}" /> 
    <property name="url" value="${jdbc.url}" /> 
    <property name="username" value="${jdbc.username}" /> 
    <property name="password" value="${jdbc.password}" /> 
</bean> 

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> 
    <property name="dataSource" ref="dataSource" /> 
    <property name="configLocation" value="classpath:./META-INF/hibernate.cfg.xml" /> 
    <property name="hibernateProperties"> 
     <props> 
      <prop key="hibernate.dialect">${hibernate.dialect}</prop> 
     </props> 
    </property> 

    <property name="mappingResources"> 
<list> 
     <value>classpath:./META-INF/EntityMapping.hbm.xml</value> 
</list> 
</property> 
</bean> 

<tx:annotation-driven transaction-manager="txManager" /> 

<bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> 
    <property name="sessionFactory" ref="sessionFactory" /> 
</bean> 

quand je commence mes tests unitaires i faire exception suivante:

org.springframework.beans.factory.BeanCreationException: erreur Création d'un bean avec le nom 'wrapperClass' défini dans le chemin de classe resourc e [META-INF/beans.xml]: Impossible de résoudre la référence au bean 'wrapperClassField' lors de la définition de l'argument constructeur; exception imbriquée est org.springframework.beans.factory.BeanCreationException: Erreur création d'haricot avec le nom « xmlBooksource » défini dans la ressource de chemin de classe [META-INF/beans.xml]: ne peut pas résoudre la référence aux haricots « sessionFactory » tout en fixant la propriété bean 'sessionFactory'; l'exception imbriquée est org.springframework.beans.factory.BeanCreationException: Erreur lors de la création du bean avec le nom 'sessionFactory' défini dans le chemin de classe resource [META-INF/beans.xml]: L'appel de la méthode init a échoué; exception imbriquée est java.io.FileNotFoundException: chemin de classe ressource [classpath: /META-INF/EntityMapping.hbm.xml] ne peut pas être ouvert car il n'existe pas

La même exception est levée lorsque type i Pourquoi le printemps ne peut pas trouver ce fichier et comment dois-je remplir son emplacement pour faire fonctionner ce code?

Merci d'avance.

+0

Comme je l'ai écrit au début de la question - oui. META-INF est un sous-dossier de src, donc je peux supposer que l'inclure dans sourcepath ne va pas résoudre le problème – Grook

+1

Droit. Avez-vous essayé de supprimer le préfixe 'classpath:'? En regardant le code, ce setter attend déjà une ressource classpath. La chaîne est ensuite passée à 'ClassLoader.getResourceAsStream (String)'. – Gray

+0

@Gray merci! Cela résout le problème. – Grook

Répondre

0

Je ne suis pas sûr que le message d'erreur est cohérent avec le contenu beans.xml que vous avez publié. Dans l'erreur que vous avez

[classpath:/META-INF/EntityMapping.hbm.xml] 

qui n'est pas la même chose que

classpath:./META-INF/EntityMapping.hbm.xml 

Avis disparus "" au début de l'erreur.

Les deuxièmes haricots.configuration xml, devrait probablement produire un message d'erreur différent avec:

[classpath:EntityMapping.hbm.xml] 

Ce serait la recherche du fichier à la racine de votre application compilée (jar, guerre, a explosé, ce que vous avez).

+0

Un point de début dans le chemin est simplement omis dans le message d'erreur. Je l'ai essayé encore une fois maintenant. – Grook

0

J'ai réussi à configurer Hibernate 4 avec Spring 3.1. Mon fichier applicationContext.xml est dans le dossier web-inf et a la mise en veille prolongée cofiguration de suivant:

<!-- Session Factory Declaration --> 
<bean id="SessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> 
    <property name="dataSource" ref="DataSource" /> 
    <!-- 
    <property name="annotatedClasses"> 
    <list> 
    <value>iltaf.models.Levels</value> 
    </list> 
    </property> 
    --> 

    <property name="mappingLocations" value="classpath:iltaf/models/*.hbm.xml" /> 


    <property name="configLocation"> 
     <value>classpath:hibernate.cfg.xml</value> 
    </property> 

    <property name="hibernateProperties"> 
    <props> 
    <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop> 
    <prop key="hibernate.show_sql">true</prop> 
    </props> 
    </property> 
</bean> 

<!-- Enable the configuration of transactional behavior based on annotations --> 
    <tx:annotation-driven transaction-manager="txManager"/> 

<!-- Transaction Manager is defined --> 
    <bean id="txManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager"> 
     <property name="sessionFactory" ref="SessionFactory"/> 
    </bean> 

</beans> 

et j'ai fichier hibernate.cfg.xml séparé dans mon dossier src. J'utilise la version Eclipse Juno Java EE.

Questions connexes