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



我的应用程序是基于Spring framework 3.1.2的Web应用程序,该应用已部署在Apache tomcat 6

我需要在application(server)启动上获取运行应用程序 port-number host-name 。这样我就将其覆盖在属性上,并且需要其他bean初始化。

春季是否提供了检索这些详细信息并将其设置在服务器启动上的任何选项?..

请查看以前问的这两个问题:从tomcat中获取服务器端口号,但我需要知道http和https端口,我的java webapp正在WebApp启动上运行我的Java WebApp。在那里,您将看到如何从连接器中获取端口,连接器还具有getDomain方法,可以为您提供主机名。

由于您知道如何在没有春季的情况下获得,因此您可以拥有一个获取这些细节的bean,并为需要这些实例化细节的其他豆提供它们。有几种方法可以做到:

1)创建将获得端口,主机名和实例bean

的spring Factory Bean

2)有单独的豆为您保存这些细节,然后您使用该豆子构造其他

3)您使用端口和域来覆盖应用程序详细信息,当实例化需要它们的bean时,您会有一种启动方法,可以为您的新bean

读取它们

这是用于获取端口和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;
    }
}

tomcat默认将在TCP/IP端口号8080上运行。

步骤

  1. 导航到C:apache-tomcat-6.0.18confserver.xml(您安装了Tomcat的地方)
  2. 在server.xml文件中,查找连接器端口看起来像以下

    <connector port="8080" protocol="HTTP/1.1" connectiontimeout="20000" redirectport="8443">     
    </connector>
    

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

查找主机名:

步骤

1. Navigate to `C:WINDOWSsystem32driversetc` 

开始 ->所有程序 -> run->键入"驱动程序"(无引号) -> etc

  1. 用文本编辑器打开文件主机,您可以找到
127.0.0.1       localhost

您可以理解您的主机名是什么。

谢谢。

已将已传递给Doget的ServletRequest对象,或者Dopost方法具有提供此信息的getServerName()getServerPort()方法。

示例:

public void doGet(ServletRequest request, ServletResponse response) {
    System.out.println("Host Name = " + request.getServerName());
    System.out.println("Port Number = " + request.getServerPort());
}

最新更新