Le .clone c'est une chose. Mais je m'interrogeait surtout sur la pertinence d'utiliser 2 rootContext ? En admettant que je tape sur 2 bases différentes, ok. Par contre 2 contextes sur une même base, si ça entraine les problèmes de désynchronisation entre les 2 contextes (entre les 2 sessions Hibernate si on est sur une impl Hibernate), j'ai peur que ce soit systématiquement une mauvaise idée ? Sachant que pour mon problème actuelle, la différence entre les 2 contexte vient des propriétés propres à la sécurité. Arno. Benjamin POUSSIN a écrit :
On Thu, 28 May 2009 15:46:16 +0200 Arnaud Thimel <thimel@codelutin.com> wrote:
Salut,
Dans une application nous ouvrons plusieurs 'rootContext'. Ils sont différenciés car l'objet Properties utilisé pour la récupération du context varie. Il varie, mais tous les rootContext pointent sur la même base. Est-ce que ça ne peut pas être source à problème ?
D'autre part, dans le TopiaContextFactory, j'ai trouvé ça : static public TopiaContext getContext(Properties config) throws TopiaNotFoundException { TopiaContextImpl result = contextCache.get(config); if (result == null || result.isClosed()) { result = new TopiaContextImpl(config); contextCache.put((Properties) config.clone(), result); } }
Comme le "equals" de Properties fait un "deep equals", j'ai l'impression que le .clone() ne sert à rien ?
En fait le .clone sert surtout a etre sur qu'aucun code externe va modifier le properties a l'exterieur ce qui impliquerait des problemes pour le TopiaContextFactory.
Si vous souhaitez 2 root contexte vraiment different et que vous avez exactement le meme fichier de propriete. Je pense que le mieux est d'ajoute une entre dans le fichier de configuration genre.
dans le 1er fichier de propriete context.number=1 et dans le deuxieme context.number=2
de cette facon, le TopiaContextFactory ne retournera pas le meme TopiaContext pour les deux fichiers de propriete.
Mais je ne sais pas si je repond exactement au probleme :(
Pour revenir 2s sur le clone, je me demande s'il ne devrait pas etre fait plus tot (avant l'appel du new TopiaContextImpl (a bien reflechir)
-- Benjamin -------------------- tél: +33 (0) 2 40 50 29 28 email: poussin@codelutin.com () campagne du ruban ascii http://www.codelutin.com /\ pour les mails en ascii _______________________________________________ Topia-devel mailing list Topia-devel@lists.labs.libre-entreprise.org http://lists.labs.libre-entreprise.org/mailman/listinfo/topia-devel
-- Société Code Lutin http://www.codelutin.com tel : 02 40 50 29 28 fax : 09 59 92 29 28