10

我的应用程序是Spring framework 3.1.2部署在Apache tomcat 6.

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

spring 是否提供任何选项来检索这些详细信息并在服务器启动时设置它?..

4

4 回答 4

6

看看之前提出的两个问题:Get the server port number from tomcat without a request我需要知道我的 java webapp 在 webapp startup 上运行的 HTTP 和 HTTPS 端口。在那里,您将看到如何从连接器获取端口,连接器还具有 getDomain 方法,可以为您提供主机名。

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

1) 创建 Spring 工厂 bean,它将获取端口、主机名并实例化您想要的 bean

2)有一个单独的bean为你保存这些细节,你用那个bean来构造另一个

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

于 2012-12-18T09:03:17.813 回答
3

这是获取端口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;
    }
}
于 2016-08-12T09:46:07.117 回答
-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>
    

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

查找主机名:

脚步

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

或者

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

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

从这里您可以了解您的主机名是什么。

谢谢。

于 2012-12-18T08:51:32.293 回答
-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());
}
于 2012-12-18T09:46:31.997 回答