2009-08-21 4 views
0

Je souhaite exécuter une servlet pour obtenir le nom du serveur, le port du serveur et ContextPath à partir de la requête. Mais je ne veux pas invoquer servlet par l'interaction de l'utilisateur. Je veux excuter cette servlet par code Java. Je ne suis pas sûr que ce soit possible. S'il vous plaît donnez-moi une recommandation.Comment exécuter une servlet sans que l'utilisateur interagisse

+0

Qu'entendez-vous par run? Instancier une servlet ou réellement frapper l'une des méthodes doX? –

+0

Veuillez clarifier ce que vous essayez de faire. – pjp

+1

Pour faire une demande vous avez déjà besoin de l'URL, du port, etc. Quelle est la fonctionnalité que vous essayez d'atteindre ici? Il y aura un moyen d'y parvenir, j'en suis sûr, mais pas avec le mécanisme que vous proposez. –

Répondre

3

Pourquoi ne pas simplement utiliser URL pour demander le servlet.

Pour une utilisation plus sophistiquée, essayez HttpClient.

+0

Si c'est ce que Chan essaie de faire, je pense que la question serait de savoir ce qui rend «l'utilisation de l'URL», puis ouvre la question de savoir quels devraient être les paramètres pour une telle demande. –

+0

Oui, même j'ai essayé de le deviner intelligemment. La première partie n'est toujours pas claire pour moi, je veux dire "..pour obtenir le nom du serveur etc ..". –

+0

Donc, essentiellement pour faire une demande à une servlet pour le démarrer sans faire une demande, vous faites une demande :) – pjp

2

Si vous voulez simplement exécuter du code pour extraire des informations de la requête, pourquoi essayez-vous d'appeler une servlet? Écrivez simplement une méthode quelque part, et appelez-la.

Vous pouvez également utiliser un filtre de servlet pour extraire cette information à chaque requête, ajouter les résultats à l'objet HttpServletRequest en tant qu'attribut, afin que tous les autres servlets qui traitent la requête puissent le trouver et l'utiliser.

Si vous voulez dire que vous voulez faire la charge de servlet au démarrage, vous pouvez ajouter ceci dans la configuration web.xml:

<servlet> 
    ... 
    <load-on-startup>1</load-on-startup> 
</servlet> 
1

Si votre servlet fait quelque chose comme appeler un service toutes les x minutes sans interaction de l'utilisateur, alors vous voulez probablement faire quelque chose de différent.

Vous pouvez utiliser un ServletContextListener pour écouter lorsque le contexte Web est démarré et pour démarrer le code souhaité.

http://java.sun.com/javaee/5/docs/api/javax/servlet/ServletContextListener.html

+1

Vous l'avez deviné aussi, n'est-ce pas. :) –

0

Merci pour vos réponses En fait, mon problème est: J'ai une application web et un WebService (sur le serveur diferent). Je souhaite que l'application web appelle webservice (après une durée spécifique) pour envoyer des données (domaine, port, chemin de contexte ..) au service web afin que je sache où mon application web est déployée.

Pour résoudre ce problème j'ai créé une servlet pour appeler WebService et en utilisant cette servlet j'ai l'objet HttpServletRequest et je peux obtenir le domaine, le port, le chemin de contexte. Ensuite, je peux envoyer des données au webservice. Mais je ne sais pas comment exécuter cette servlet (après une durée spécifique) sans intervention de l'utilisateur

Questions connexes