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

时间:2012-12-18 08:33:40

标签: java spring spring-mvc

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

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

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

4 个答案:

答案 0 :(得分:5)

查看之前提出的两个问题:Get the server port number from tomcat with out a requestI need to know the HTTP and HTTPS port my java webapp is running on webapp startup。在那里,您将看到如何从连接器获取端口,连接器还具有可为您提供主机名的getDomain方法。

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

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

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

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

答案 1 :(得分:2)

以下是获取端口地址的代码

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;
    }
}

答案 2 :(得分:-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>
    
  3. Connector标记中的

    端口是您的端口号。

    查找主机名:

    步骤

    1. Navigate to `C:\WINDOWS\system32\drivers\etc` 
    

    或者

      

    开始 - &gt;所有程序 - &gt;运行 - &gt;输入'drivers'(不含引号) - &gt; etc

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

      通过此,您可以了解您的主机名是什么。

      感谢。

答案 3 :(得分:-4)

已传递给您的doGet或doPost方法的ServletRequest对象具有提供此信息的getServerName()getServerPort()方法。

示例:

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