2009-04-22 6 views
2

J'ai une application fonctionnant sous Jetty, et je veux que l'application renvoie des URL absolues auto-référencées (lors de la génération d'un flux RSS, un client doit pouvoir travailler sans un contexte "URL courante"). Le problème est que je ne sais pas à l'avance sous quel nom d'hôte l'application sera déployée, et il est fort probable qu'elle sera déployée dans un environnement d'hébergement virtuel où plusieurs noms d'hôte sont mappés sur le même nom. Adresse IP. J'ai essayé d'utiliser HttpServletRequest.getLocalName(), mais cela renvoie le nom d'hôte résolu [1] pour l'adresse IP sur laquelle la demande a été reçue (généralement ce qui est défini dans le fichier hosts local) et non le nom d'hôte de l'URL spécifié par le client la requête HTTP.Obtenir le nom d'hôte réel (virtuel) sous un serveur d'application

Fondamentalement, je veux obtenir ce que sous CGI serait la variable d'environnement SERVER_NAME mais il ne semble pas que l'API Java fournit cela. Toute aide serait appréciée.

[1] seulement si j'ai de la chance - sur certaines configurations, il ne renvoie que l'adresse IP.

Répondre

3

Utilisez ServletRequest.getServerName() pour obtenir le nom d'hôte virtuel à partir de l'en-tête "Host". Ceci est équivalent à la variable SERVER_NAME de CGI.

+0

Merci :-) (c'était un peu idiot de ma part - j'aurais dû le savoir) – Guss

Questions connexes