Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java类中检索当前服务器FQDN_Java_Jsp_Web Applications - Fatal编程技术网

如何在java类中检索当前服务器FQDN

如何在java类中检索当前服务器FQDN,java,jsp,web-applications,Java,Jsp,Web Applications,我需要根据运行web应用程序的当前主机编写一个动态URL。 我在启动时通过ServletContextListener启动了一个backgrund进程 此线程必须向客户发送带有注册票证的电子邮件。在电子邮件文本中,我需要打印我的webapp和servlet的完整URL。比如说“单击此处确认订阅或复制粘贴blabla…”之类的电子邮件 我如何获取我正在运行的Web应用的FQDN? 它不是一个servlet,因此我无法中继HttpServletRequest实例,并且服务器有许多虚拟主机 下面是我启

我需要根据运行web应用程序的当前主机编写一个动态URL。 我在启动时通过ServletContextListener启动了一个backgrund进程

此线程必须向客户发送带有注册票证的电子邮件。在电子邮件文本中,我需要打印我的webapp和servlet的完整URL。比如说“单击此处确认订阅或复制粘贴blabla…”之类的电子邮件

我如何获取我正在运行的Web应用的FQDN? 它不是一个servlet,因此我无法中继HttpServletRequest实例,并且服务器有许多虚拟主机

下面是我启动线程的地方:

public class Initializer implements ServletContextListener {
    @Override
    public void contextInitialized(ServletContextEvent arg0) {
        Log.addItem("SYSTEM START");

        PasswordRecoveryListener pwlisten = new PasswordRecoveryListener(1000 * 60 * 1);
        pwlisten.start();
    }
}
在arg0.getServletContext().getContextPath()中,我只找到了路径


我在上下文中查找了主机名(我有其他常量),但没有成功。

我想你不能……你不能确定你的web应用程序中的“外部”FQDN是什么。您可能会从请求中获得它(或者请求中可能包含FQDN)@PeterLiljenberg我想您是对的,说到多虚拟主机环境,不使用外部请求就无法通过编程确定FQDN…使用InetAddress.getLocalHost().getCanonicalHostName()正如@Bart所建议的,它将返回服务器上配置的主机名,该主机名与虚拟主机名没有任何共同之处,但至少我可以区分开发系统(返回本地主机)和生产系统,并使用上下文存储静态(但可自定义)名称。这不是我想要的,但这是一个可以接受的改进