我的应用是基于 Spring框架3.1.2
的Web应用,部署在 Apache Tomcat 6
上。
我需要在应用(服务器)启动时获取运行中的应用程序的 端口号 和 主机名。这样我就可以将其覆盖到一个属性上,并且其他bean初始化需要使用它。
Spring是否提供了检索这些细节并在服务器启动时设置它们的选项?..
我的应用是基于 Spring框架3.1.2
的Web应用,部署在 Apache Tomcat 6
上。
我需要在应用(服务器)启动时获取运行中的应用程序的 端口号 和 主机名。这样我就可以将其覆盖到一个属性上,并且其他bean初始化需要使用它。
Spring是否提供了检索这些细节并在服务器启动时设置它们的选项?..
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
上。
步骤:
导航到C:\apache-tomcat-6.0.18\conf\server.xml
(您安装Tomcat的位置)
在 server.xml 文件中找到类似以下内容的连接器端口:<connector port="8080" protocol="HTTP/1.1" connectiontimeout="20000" redirectport="8443">
</connector>
Connector标签中的端口是您的端口号。
查找主机名:
步骤
1. Navigate to `C:\WINDOWS\system32\drivers\etc`
或者
开始->所有程序->运行->输入'drivers'(不含引号)->等等
127.0.0.1 localhost
通过这个,你可以了解你的主机名是什么。
谢谢。
已传递到您的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());
}