一尘不染

在应用程序服务器下获取真实(虚拟)主机名

jsp

我有一个在Jetty下运行的应用程序,并且我希望该应用程序返回自我引用的绝对URL(在生成RSS
feed时,因此客户端必须能够在没有“当前URL”上下文的情况下工作)。

问题是我不知道应用程序将在哪个主机名下提前部署,而且很有可能将其部署在虚拟主机环境中,其中多个主机名映射到同一IP地址。我尝试使用HttpServletRequest.getLocalName(),但是返回解析的主机名[1]为接收请求的IP地址(通常是本地主机文件中设置的IP地址),而不是客户端在URL中指定的主机名。
HTTP请求。

基本上,我想获得CGI下的环境变量,SERVER_NAME但是Java API似乎没有提供此功能。任何帮助将不胜感激。

[1]仅在我很幸运的情况下-在某些设置中,它仅返回IP地址。


阅读 347

收藏
2020-06-10

共1个答案

一尘不染

用于ServletRequest.getServerName()从“主机”标题中获取虚拟主机名。这等效于CGI的SERVER_NAME变量。

2020-06-10