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 + hibernate + struts [Data]


Sujet :

Spring Java

  1. #1
    Membre expérimenté Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Points : 1 371
    Points
    1 371
    Par défaut Spring + hibernate + struts
    Voilà j'ai un probleme à peu près similaire a celui qui viens d'etre posté mais ce n'est pas le meme, donc je me permet de le poster.

    A chaque appel de getHibernateTemplate ca me retourne null, pourquoi? Je coince et je ne trouve aucune explication et donc résolution.

    Mon fichier applicationContext.xml (dans WEB-INF):

    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
    <beans>
    	<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
    		<property name="driverClassName">
    			<value>oracle.jdbc.driver.OracleDriver</value>
    		</property>
    		<property name="url">
    			<value>jdbc:oracle:thin:@localhost:1521:XE</value>
    		</property>
    		<property name="username">
    			<value>user</value>
    		</property>
    		<property name="password">
    			<value>pass</value>
    		</property>
    	</bean>
     
    	<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    		<property name="dataSource">
    			<ref bean="dataSource" />
    		</property>
    		<property name="hibernateProperties">
    			<props>
    				<prop key="hibernate.dialect">org.hibernate.dialect.Oracle9Dialect</prop>
    				<prop key="hibernate.show_sql">false</prop>
    			</props>
    		</property>
    		<property name="mappingResources">
    			<list>
    				<value>package/User.hbm.xml</value>
    			</list>
    		</property>
    	</bean>
     
    	<bean id="basicDataDao" class="package.BasicDataDaoImpl">
    		<property name="sessionFactory">
    			<ref bean="sessionFactory" />
    		</property>
    	</bean>
     
     
    </beans>

    J'utilise Struts donc j'ai mis ca dans le web.xml :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    	<!-- Ou utilisation de la servlet ContextLoaderServlet-->
    	<servlet>
    		<servlet-name>context</servlet-name>
    		<servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
    		<load-on-startup>1</load-on-startup>
    	</servlet>
    Et enfin voici ma classe qui extends HibernateDAOSupport:

    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
    public class BasicDataDaoImpl extends HibernateDaoSupport {
    
    	
    	public BasicDataDaoImpl() {
    		super();
    	}
    
    	public List getValues(Class c){
    		try{
    			return getHibernateTemplate().loadAll(c);
    		}catch(Exception e){
    			e.printStackTrace();
    		}
    		return new ArrayList();
    		
    	}
    }

    Voilà et c'est donc getHibernateTemplate qui me retourne donc null et donc un nullpointer, donc faut que vous m'aidiez à trouver pourquoi ce null pointer.
    Car il y a surement un truc que j'ai pas du comprendre ou pas entierement car j'ai beau faire des tuto je ne trouve rien qui m'aiguille pour résoudre cette erreur.

    Merci
    Une solution a été apporté pour résoudre votre problème alors vous aussi faites en profitez les autres grâce au tag qui se trouve tout en bas de la page....

    Merci de ne pas utiliser les messages privés pour un problème sauf si je vous l'ai explicitement demandé.

    -- Maxf1 --

  2. #2
    Membre expérimenté Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Points : 1 371
    Points
    1 371
    Par défaut
    C'est bon pas la peine de vous prendre la tete j'ai fait le boulet, je faisais moi meme l'instanciation de la classe basicDataDao en croyant au pere noel que la sessionFactory aller lui etre passer, je revais tout eveiller (enfin c'est surement faisable avec des interceptions mais bon....)

    J'ai reussi a faire marcher mon exemple c'est ce que je souhaitais.
    Une solution a été apporté pour résoudre votre problème alors vous aussi faites en profitez les autres grâce au tag qui se trouve tout en bas de la page....

    Merci de ne pas utiliser les messages privés pour un problème sauf si je vous l'ai explicitement demandé.

    -- Maxf1 --

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 8
    Points : 5
    Points
    5
    Par défaut Moi aussi je suis un boulet mais plus...
    J'ai, moi aussi, exactement le même problème et j'aimerais savoir comment tu as fais pour le resoudre.
    Merci d'avance

  4. #4
    Membre régulier Avatar de dgouyette
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    75
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 75
    Points : 89
    Points
    89
    Par défaut
    Je pense qu'il avait soit sa session factory qui n'était pas injectée, soit son template hibernate.

    Utilisation d'une propriété non injectée = nullpointerexception

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 175
    Points : 108
    Points
    108
    Par défaut
    Est-il possible d'avoir la solution explicite stp ?

    J'ai exactement le même problème.

  6. #6
    Expert éminent
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Points : 7 679
    Points
    7 679
    Par défaut
    Bonjour.
    Il a fait un truc du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    BasicDataDaoImpl x=new BasicDataDaoImpl();
    //ensuite il utilise x
    Crée de cette façon là, le DAO n'a pas passé par le moteur IoC de Spring, donc rien ne lui a été injecté, notamment la sessionFactory d'où son problème.

    Il faut plutôt récupérer le singleton crée par Spring, en faisant par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ApplicationContext ac = new .....;
    BasicDataDaoImpl x = (BasicDataDaoImpl)ac.getBean("basicDataDao");
    Voilou.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 175
    Points : 108
    Points
    108
    Par défaut
    Citation Envoyé par djo.mos Voir le message
    Bonjour.
    Il a fait un truc du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    BasicDataDaoImpl x=new BasicDataDaoImpl();
    //ensuite il utilise x
    Crée de cette façon là, le DAO n'a pas passé par le moteur IoC de Spring, donc rien ne lui a été injecté, notamment la sessionFactory d'où son problème.

    Il faut plutôt récupérer le singleton crée par Spring, en faisant par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ApplicationContext ac = new .....;
    BasicDataDaoImpl x = (BasicDataDaoImpl)ac.getBean("basicDataDao");
    Voilou.
    Merci, mais Spring n'est pas sensé pouvoir récupérer tous les objets qui vont bien si l'on a initialisé sa configuration correctement ? La sessionFactory est d'ailleurs paramétrée dans le fichier de conf de Spring.

  8. #8
    Expert éminent
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Points : 7 679
    Points
    7 679
    Par défaut
    ? J'ai pas bien compris ... Spring ne peut pas configurer n'importe quel objet instancié en Java ... il faut récupérer les instances qu'il a crée lui même et configuré ...
    Ou bien c'est pas de ça que tu parles ?

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 175
    Points : 108
    Points
    108
    Par défaut
    Citation Envoyé par djo.mos Voir le message
    ? J'ai pas bien compris ... Spring ne peut pas configurer n'importe quel objet instancié en Java ... il faut récupérer les instances qu'il a crée lui même et configuré ...
    Ou bien c'est pas de ça que tu parles ?
    Ben déjà, pour le context, si je me réfère à l'interface ApplicationContextAware, on a pas besoin de faire un nouvel application context, il est passé directement par le moteur Spring. Du coup je pensais que l'on pouvait l'initialiser dans le web.xml par exemple.

    Ensuite, ce dont je parle c'est tous les fichiers xml de configuration de spring qui doivent normalement rendre l'instanciation d'objets beaucoup plus simple.

  10. #10
    Membre expérimenté Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Points : 1 371
    Points
    1 371
    Par défaut
    Citation Envoyé par djo.mos Voir le message
    Bonjour.
    Il a fait un truc du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    BasicDataDaoImpl x=new BasicDataDaoImpl();
    //ensuite il utilise x
    Crée de cette façon là, le DAO n'a pas passé par le moteur IoC de Spring, donc rien ne lui a été injecté, notamment la sessionFactory d'où son problème.

    Il faut plutôt récupérer le singleton crée par Spring, en faisant par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ApplicationContext ac = new .....;
    BasicDataDaoImpl x = (BasicDataDaoImpl)ac.getBean("basicDataDao");
    Voilou.
    Je ne me souviens plus de mémoire comment j'avais fait mais en relisant les posts, il me semble que la solution ci dessus est exactement ce que j'avais du faire!
    Une solution a été apporté pour résoudre votre problème alors vous aussi faites en profitez les autres grâce au tag qui se trouve tout en bas de la page....

    Merci de ne pas utiliser les messages privés pour un problème sauf si je vous l'ai explicitement demandé.

    -- Maxf1 --

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

Discussions similaires

  1. [Data] Gestion des exceptions dans applications Spring Hibernate Struts
    Par coco-sup dans le forum Spring
    Réponses: 4
    Dernier message: 09/12/2012, 12h58
  2. Squelette pour Spring+Hibernate+Struts
    Par inflation dans le forum Maven
    Réponses: 1
    Dernier message: 08/02/2011, 10h52
  3. Réponses: 2
    Dernier message: 16/02/2006, 09h04
  4. Réponses: 5
    Dernier message: 25/05/2005, 21h16

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