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 :

[SPRING][STRUTS2][JPA]NoSuchBeanDefinitionException avec JPA et Struts2


Sujet :

Spring Java

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    14
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14
    Points : 9
    Points
    9
    Par défaut [SPRING][STRUTS2][JPA]NoSuchBeanDefinitionException avec JPA et Struts2
    Bonjour,

    Je suis en train de développer 1 webapp utilisant Struts2 et cette webapp est buildée en utilisant Maven.

    J'ai un petit problème avec spring.
    Voici une explication du problème :
    Mon projet maven pour ma webapp possède une dépendance avec mon projet "DAO" qui utilise lui aussi pring. Au niveau DAO, tout le configuration de JPA est effectuée dans Spring à l'exception de la datasource qui elle est définie dans la web app (comme ça je peux avoir 1 datasource pour le test qui utilise HSQL DB et une autre pour la webapp qui utilise postgresql).
    Mais quand j'exécute je reçois l'exception suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'entityManagerFactory' is defined
    	org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:353)
    	org.springframework.beans.factory.support.AbstractBeanFactory.getMergedBeanDefinition(AbstractBeanFactory.java:916)
    	org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:243)
    	org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
    	org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:737)
    	org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter.lookupEntityManagerFactory(OpenEntityManagerInViewFilter.java:150)
    	org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter.lookupEntityManagerFactory(OpenEntityManagerInViewFilter.java:133)
    	org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter.doFilterInternal(OpenEntityManagerInViewFilter.java:92)
    	org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:75)
    	org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
    Voici le conteu de mon fichier applicationContext.xml au niveau du projet DAO :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:aop="http://www.springframework.org/schema/aop"
        xmlns:tx="http://www.springframework.org/schema/tx"
        xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">
      <!-- ******************************************************************************************************** -->
      <!-- **     Our DAOs                                                                                       ** -->
      <!-- ******************************************************************************************************** -->
      <bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />
     
      <bean id="groupDao" class="kicker.dao.springhibernate.GroupDaoImpl" />
     
      <bean id="daoFacade" class="kicker.dao.DaoFacade">
         <property name="groupDao">
           <ref local="groupDao" />
         </property>
      </bean>
     
      <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="database" value="POSTGRESQL" />
            <property name="showSql" value="true" />
          </bean>
        </property>
      </bean>
     
      <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
        <property name="entityManagerFactory" ref="entityManagerFactory" />
      </bean>
     
      <tx:annotation-driven transaction-manager="transactionManager" />
     
     
      <!-- ******************************************************************************************************** -->
      <!-- **     AOP Features (exceptions, logging, ...)                                                        ** -->
      <!-- ******************************************************************************************************** -->
      <!-- DAO interceptor -->
      <bean id="dataAccessInterceptor" class="kicker.aop.DataAccessThrowsAdvice" />
     
      <bean id="daoAdvisor" class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">
        <property name="pattern">
           <value>.*dao.*</value>
        </property>
     
        <property name="advice">
            <ref local="dataAccessInterceptor"/>
        </property>
      </bean>
     
    </beans>
    Voici maintenant la définition du fichier applicationContext au niveau du projet WEB :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    <?xml version="1.0" encoding="UTF-8"?>
    <!--
      CVS file status:
      $Id: testDaoApplicationContext.xml,v 1.11 2007/07/12 08:10:09 fv Exp $
     
      Copyright (c) SmalS-MvM
    -->
    <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
    <beans>
      <!-- ******************************************************************************************************** -->
      <!-- **     AOP Features (exceptions, logging, ...)                                                        ** -->
      <!-- **     - used to create proxies for Advisor/Advice defined in applicationContext.xml               ** -->
      <!-- ******************************************************************************************************** -->
      <bean id="autoProxyCreator" class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator" />
     
      <!-- ******************************************************************************************************** -->
      <!-- **     DataSources definitions                                                                        ** -->
      <!-- **     - dataSource        ==> direct connection to in-memory HSQL Database                        ** -->
      <!-- ******************************************************************************************************** -->
      <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <property name="driverClassName"><value>org.postgresql.Driver</value></property>
        <property name="url"><value>jdbc:postgresql://localhost:5432/kicker</value></property>
        <property name="username"><value>kicker</value></property>
        <property name="password"><value>kicker</value></property>
      </bean>
    </beans>
    Voici finalement le fichier web.xml de ma webapp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app id="WebApp_9" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
     
        <display-name>Kicker Struts 2 WebAPP</display-name>
     
    	<filter>
    		<filter-name>SpringOpenEntityManagerInViewFilter</filter-name>
    		<filter-class>org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter</filter-class>
    	</filter>
     
        <filter>
            <filter-name>struts2</filter-name>
            <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
        </filter>
     
    	<filter-mapping>
            <filter-name>SpringOpenEntityManagerInViewFilter</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>
     
        <filter-mapping>
            <filter-name>struts2</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>
     
        <welcome-file-list>
            <welcome-file>index.html</welcome-file>
        </welcome-file-list>
     
    	<context-param>
        	<param-name>contextConfigLocation</param-name>
        	<param-value>classpath:/applicationContext.xml</param-value>
    	</context-param>
    	<listener>
            <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
        </listener>
        
    </web-app>
    Pourriez-vous me dire comment je peux éliminer l'exception (tout en gardant 2 projets bien séparés) ?

    Petite information : je tiens absolument à utiliser spring dans les 2 projets mais apparemment le fichier applicationContext.xml qui est situer dans le JAR du projet DAO n'est pas charger.

    Merci d'avance pour votre aide.

    hubeaul

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 937
    Points : 4 358
    Points
    4 358
    Par défaut
    Citation Envoyé par hubeaul Voir le message
    Pourriez-vous me dire comment je peux éliminer l'exception (tout en gardant 2 projets bien séparés) ?

    Petite information : je tiens absolument à utiliser spring dans les 2 projets mais apparemment le fichier applicationContext.xml qui est situer dans le JAR du projet DAO n'est pas charger.

    Merci d'avance pour votre aide.

    hubeaul

    dans web.xml,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    	<context-param>
    		<param-name>contextConfigLocation</param-name>
    		<param-value>
                         PATH_TO_APPLICATION_CONTEXT.XML
                         (example: 
                          classpath:my/package/context/applicationContext.xml
                         )
    		</param-value>
    	</context-param>
    vous pouvez avoir plusieurs lignes pour le <param-value> : example dans le cas d'une couche web-services basée sur XFire utilisant un jar séparé pour les accès à la DB :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>		classpath:my/application/database/access/applicationContext.xml
    classpath:org/codehaus/xfire/spring/xfire.xml
    </param-value>
    </context-param>

Discussions similaires

  1. Réponses: 9
    Dernier message: 17/04/2014, 12h38
  2. [Data] Spring + JPA : Problème avec la methode findAll de CrudRepository
    Par SnowPatrol dans le forum Spring
    Réponses: 1
    Dernier message: 25/03/2014, 17h28
  3. Réponses: 2
    Dernier message: 16/07/2008, 13h56
  4. Réponses: 1
    Dernier message: 19/07/2007, 14h53

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