在Tomcat服务器上的Spring应用程序中获取端口号和主机名

ome*_*ega 9 java spring spring-mvc

我的应用程序是Spring framework 3.1.2部署在其上的基于Web的应用程序Apache tomcat 6.

我需要在应用程序(服务器)启动时获取正在运行的应用程序端口号主机名.所以我会在属性上覆盖它,并且需要其他bean初始化.

spring是否提供了检索这些详细信息并在Server Startup上设置它的任何选项?

Eds*_*Eds 5

看一下之前提出的两个问题:从tomcat获取服务器端口号而没有请求,我需要知道我的java webapp在webapp启动时运行的HTTP和HTTPS端口.在那里,您将看到如何从连接器获取端口,连接器还具有可为您提供主机名的getDomain方法.

既然你知道如何在没有spring的情况下获得,那么你可以拥有一个获取这些细节的bean,并为需要这些实例化细节的其他bean提供它们.有几种方法可以做到这一点:

1)创建Spring工厂bean,它将获得你想要的端口,主机名和实例化bean

2)拥有单独的bean来保存这些细节,并使用该bean构建其他bean

3)您使用端口和域覆盖应用程序详细信息,并且在实例化需要它们的bean时,有一个init方法可以为新bean读取它们


小智 5

这是获取端口和 Dip 地址的代码

class IPAddressDemo{
    public static String getIpAddressAndPort1() throws MalformedObjectNameException, NullPointerException,
            UnknownHostException {
        MBeanServer beanServer = ManagementFactory.getPlatformMBeanServer();
        Set<ObjectName> objectNames = beanServer.queryNames(new ObjectName("*:type=Connector,*"),
                Query.match(Query.attr("protocol"), Query.value("HTTP/1.1")));
        String host = InetAddress.getLocalHost().getHostAddress();
        String port = objectNames.iterator().next().getKeyProperty("port");
        String ipadd = "http" + "://" + host + ":" + port;
        System.out.println(ipadd);
        return ipadd;
    }
}
Run Code Online (Sandbox Code Playgroud)


Har*_*Raj -3

默认情况下,Tomcat 将在 TCP/IP 端口号上运行8080

脚步

  1. 导航到C:\apache-tomcat-6.0.18\conf\server.xml(安装 tomcat 的位置)
  2. 在 server.xml 文件中,找到如下所示的连接器端口

    <connector port="8080" protocol="HTTP/1.1" connectiontimeout="20000" redirectport="8443">     
    
    </connector>
    
    Run Code Online (Sandbox Code Playgroud)

连接器标签中的端口是您的端口号。

查找主机名:

脚步

1. Navigate to `C:\WINDOWS\system32\drivers\etc` 
Run Code Online (Sandbox Code Playgroud)

或者

开始->所有程序->运行->输入“drivers”(不带引号)->等

  1. 用文本编辑器打开文件host,可以发现
127.0.0.1       localhost
Run Code Online (Sandbox Code Playgroud)

由此您可以了解您的主机名是什么。

谢谢。

  • 我想要在运行时(即以编程方式)这些详细信息(端口号和主机名)。不是手动检查! (2认同)