Bonjour à tous



******************** Version courte ***************


Question surement très simple: j'utilise un SessionFactory founit par Spring dans le contexte d'un test CRUD jsf/spring/hibernate, et je voudrais savoir comment faire pour l'enregistrer dans le JNDI afin de pouvoir faire des lookup dessus depuis la couche dao

Merci d'avance de vos réponses



******************** Version longue ***************

J'ai utilisé hibernate tools pour générer mes classes de DAO et mes entités à partir de ma base de données (conséquente). Chaque classe de dao générée commence par le code suivant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
private final SessionFactory sessionFactory = getSessionFactory();
 
    protected SessionFactory getSessionFactory() {
        try {
            return (SessionFactory) new InitialContext()
                    .lookup("SessionFactory");
        } catch (Exception e) {
            log.error("Could not locate SessionFactory in JNDI", e);
            throw new IllegalStateException(
                    "Could not locate SessionFactory in JNDI");
        }
    }
Je le précise, car comme je tourne en local, je n'aurai pas forcément besoin du JNDI sinon (et je trouve un petit peu con qu'il y ait un new Initial context à chaque requête). Mais je ne vais pas commencer à modifier 150 classes, et de plus ce procédé m'évite d'avoir un objet session qui se balade entre les couches.

Bref, dans mon application contexte j'ai entre autre ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
<bean id="sessionFactory"  class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
J'ai essayé d'y adjoindre une propriété telle que :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
        <property name="jndiName" value="SessionFactory" />
Mais je reçois l'erreur suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
org.springframework.beans.NotWritablePropertyException: Invalid property 'jndiName' of bean class [org.springframework.orm.hibernate3.LocalSessionFactoryBean]: Bean property 'jndiName' is not writable or has an invalid setter method. Does the parameter type of the setter match the return type of the getter?
En l'absence de cet ajout hasardeux, nous avons le classique:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
Could not locate SessionFactory in JNDI javax.naming.NameNotFoundException: SessionFactory not bound