2009-11-18 10 views
0

Je veux être en mesure de faire quelque chose comme ça dans une session sans état Beanressource personnalisée dans les annotations @Resource ajouté lors de l'exécution

@Resource(name="mycustomthingie") private CustomClass stuff; 

La valeur injectée est fonction du contexte (parle: Discussion) dépendant. Je suppose que cela serait possible si je lierais une ObjectFactory dans le contexte JNDI qui fournit l'objet correct lorsque demandé. Si je comprends bien pour que cela fonctionne, je devrais ajouter la ressource au contexte JNDI "java: comp", mais ceci n'est apparemment pas autorisé par la spécification EE5. Existe-t-il un sous-contexte dans lequel je suis autorisé à écrire ou existe-t-il un autre moyen de faire fonctionner quelque chose de similaire?

Merci

Peter

+0

Que contient CustomClass? seulement des données ou un comportement? –

Répondre

2

Selon this article de InfoQ qui fait un bon travail résumant la partie d'injection des ressources du JSR-244 (je ne pouvais pas trouver dans un endroit dans la spécification):

injection est seulement limitée à des premières constructions de classe définie dans la plate-forme Java EE , dont:

  • SessionContext objet
  • DataSources objet
  • UserTransaction
  • EntityManager Interface
  • TimerService Interface
  • Autres haricots d'entreprise
  • services Web
  • files d'attente de messages et sujets
  • Usines de connexion pour les adaptations de ressources
  • Entrées d'environnement limitées à Chaîne, Caractère, Octet, Court, Entier, Long, Booléen, Double et Flottant.

Les installations d'injection en Java EE 5 ne s'appliquent pas à un POJO (qui est souvent critiqué par la communauté Spring ) [...]

Donc, si votre CustomClass n'est pas un composant géré et pas une simple entrée d'environnement (ce qui ne semble pas être le cas), je ne pense pas que vous puissiez l'injecter.

+0

Les entrées environemnt m'a amené à cette idée sur cette page: http://java.sun.com/developer/technicalArticles/J2EE/injection/ J'espérais que quelque chose pourrait être fait avec une ressource ref ou quelque chose comme ça. – ptriller