2010-06-15 10 views
0

Je voudrais avoir un conteneur de soudure centrale qui détient tous mes services et ainsi de suite. Ce conteneur serait cependant enveloppé par un second conteneur qui contient des paramètres locaux. Le but est de savoir si une dépendance ne peut pas être trouvée dans le conteneur externe, alors je voudrais rechercher le conteneur interne.Comment cascade résolution de dépendance w/CDI (WELD)

Comment puis-je y parvenir? Je préférerais faire les choses de la même façon, sans avoir à utiliser des extensions WELD non standard.

+0

Corrigez-moi si je me trompe, mais ne pourriez-vous pas simplement avoir un pot avec vos services, et un pot de "configuration" avec des méthodes de production, que le pot de service se branche? Ensuite, vous pouvez échanger vos jarres de configuration pour tout ce dont vous avez besoin au moment de la construction. N'a pas essayé ceci, juste la spéculation. – Drew

+0

Cela ne fonctionnerait pas dans un environnement dynamique comme OSGI. Weld semble très statique et pas très configurable par programmation, toutes ses annotations sont cuites au moment de la compilation d'après ce que je peux dire. –

Répondre

0

Je ne pense pas que vous pouvez le faire. Il y en a un BeanManager, qui résout les dépendances en cherchant s'il y en a si son Context s (lié aux étendues) contient la dépendance désirée.

+0

BeanManager n'est pas vraiment une classe javax.inject standard, mais plutôt une classe d'implémentation WELD. Je suppose que c'est une réponse, mais encore une fois en utilisant des classes internes n'est jamais bon. C'est décevant comme je le pensais le point de CDI était la normalisation ... –

+0

Je voulais dire que c'est la façon dont le CDI est censé fonctionner (basé sur le SPI). Vous n'êtes pas censé utiliser les interfaces SPI. – Bozho

+0

Oui et tahts le manque à gagner. C'est très statique et n'offre pas de manière "dynamique". –