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:
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:
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
J'ai essayé d'y adjoindre une propriété telle que :
<property name="jndiName" value="SessionFactory" />
Mais je reçois l'erreur suivante:
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:
Could not locate SessionFactory in JNDI javax.naming.NameNotFoundException: SessionFactory not bound
Partager