donné: une application Web Java EE 5 qui a un web.xml qui a un extrait comme Que devrais-je faire pour déplacer cette spécification contextuelle dans une annotation basée sur une annotation stratégie. p> p>
4 Réponses :
Vous pouvez trouver tous les Vous voyez, rien de tel qu'un Certains cadres de servlet qui s'appuient sur des paramètres de contexte, tels que JSF, permettent également de les définir par JNDI. Vous voudrez peut-être examiner cela à la place. Ou s'il s'agit de Code local, alors je regarderais si javax.servlet code> annotations dans
javax.servlet.annotation code>
Résumé du paquet: P>
@handlestypes code>
Cette annotation est utilisée pour déclarer les types de classe qu'un servletContainérisateur code> peut gérer. li>
@HTTPConstraint code>
Cette annotation est utilisée dans l'annotation code> Servletsecurity CODE> pour représenter les contraintes de sécurité à appliquer à toutes les méthodes de protocole HTTP pour lesquelles un élément correspondant httpmethodconstraint code> ne se produit pas dans le
Servletsecurity Code> Annotation. Li>
@httpmethodconstraint code>
Cette annotation est utilisée dans l'annotation code> servletsecurity code> pour représenter les contraintes de sécurité sur des messages de protocole HTTP spécifiques. LI>
@multiparconfig code>
annotation qui peut être spécifiée sur une classe code> de servlet code> indiquant que les instances du servlet code> code> attendent des demandes conformes au type MIME multipart / formulaire-Data-Data. li>
@Servletsecurity code>
Cette annotation est utilisée sur un Classe de mise en œuvre pour spécifier des contraintes de sécurité à appliquer par un conteneur de servlet sur des messages de protocole HTTP. LI>
@webfilter code>
annotation utilisée pour déclarer un servlet filtre code>. li>
@webinitparam code>
Cette annotation est utilisée sur un servlet code> ou
Filtre code> Classe de mise en œuvre pour spécifier un paramètre d'initialisation. LI>
@weblistener code>
Cette annotation est utilisée pour déclarer un weblistener. Li>
@weServlet code>
annotation utilisée pour déclarer un servlet. li>
ul>
blockQuote>
@webcontextExtParam code>. Ce qui fait aussi moins ou plus de sens; sur quel genre de classe serait / pourriez-vous la définir? P>
@webinitparam code> n'est pas une option plus réalisable pour vous. P>
Je penserais quelque chose comme @webcontextParam code> serait utile sur un servlet comme moyen d'injecter un paramètre de contexte dans plusieurs artefacts (contrastés avec un
@webinitparam code> pour un seul servlet / filtre).
Je vais accepter cette réponse. C'est une réponse à ce que j'ai demandé ... mais pas ce que je voulais vraiment demander. Je vais ouvrir une nouvelle question à demander 'ce que je voulais demander' ...
Si vous utilisez tomcat, vous pouvez utiliser la balise de paramètre dans http://tomcat.apache.org/tomcat- 5.5-DOC / CONFIG / CONTEXTE.HTML # Context_Parameters P> context.xml code>, et il fonctionnera identique comme un paramètre contextuel-paramé dans
web.xml code>.
Vous pouvez donc utiliser
@webinitparam code> pour attraper une variable de contexte. P>
Pas tout à fait sûr si cela répond à la question. Je pense que la question peut-être sur la manière de définir le paramètre dans une stratégie d'annotation, pas nécessairement l'accéder. (Mais je pourrais avoir tort, alors pas voter)
Eh bien, je pense que nous ne pouvons pas simplement ne pas être codée context-param b> en utilisant "annotation" b> car il y a une raison logique derrière ceci: je suis sûr que vous connaissez les annotations est Toujours codé dans le servlet et servlet b> jamais chargé par le conteneur B> dans la mémoire pour servir la demande du client jusqu'à ce que sa première demande soit faite par Client (Lire le cycle de vie de servoulets ) b>. p>
Alors, que se passe-t-il si nous voulons obtenir les valeurs de "context-param" b>, ce qui est codé dur à l'aide d'une annotation dans un autre servlet? Et le servlet enveloppé b> avec context-param b> Annotation n'est toujours pas chargé dans la mémoire, nous ne pouvons donc pas obtenir l'objet pour le contexte B> :) < / p>
Je pense que maintenant vous pouvez facilement deviner pourquoi nous ne pouvons pas utiliser l'annotation en cas de context-param b> car nous devons avoir besoin de codes racontant cette annotation avec n'importe quel servlet spécifique et nous ne pouvons pas le faire. ...... p>
On peut spécifier l'écouteur de contenu de servlet répondant aux données à l'aide de @webservletContextEnger. Par exemple,
@WebServletContextListener public class TestServletContextListener implements javax.servlet.ServletContextListener { public void contextInitialized(ServletContextEvent sce) { } public void contextDestroyed(ServletContextEvent sce) { .... } }
Je ne sais pas si vous pouvez le faire en utilisant des annotations. Les paramètres de contexte de servlet sont à l'échelle du conteneur. Par conséquent, je ne sais même pas où vous devriez les mettre (cela n'a pas beaucoup de sens de les mettre à côté d'un servlet particulier). Un
servletContextinInitializer code> semblerait être le plus adéquat, mais je ne pense pas que ce soit possible.