写点什么

在项目启动时(无 request)获取 Tomcat 端口号

发布于: 2021 年 03 月 31 日

1.读 tomcat 配置文件


这是最先想到的方法,通过 classpath 一层层找到 conf 下的 server.xml 拿端口号,因为路径基本不会变,所以也是一种方法,由于发现了更好的方法,此处并无代码...


2.通过 Jmx 的 MBeanServer


package com.kowalski.demo;
import javax.management.MBeanServer;import javax.management.MalformedObjectNameException;import javax.management.ObjectName;import javax.management.Query;import java.lang.management.ManagementFactory;import java.net.InetAddress;import java.net.UnknownHostException;import java.util.Set;
public class IPAddressKowalski{ public static String getIpAddressAndPort() 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; }
public static int getTomcatPort() throws MalformedObjectNameException, NullPointerException { MBeanServer beanServer = ManagementFactory.getPlatformMBeanServer(); Set<ObjectName> objectNames = beanServer.queryNames(new ObjectName("*:type=Connector,*"), Query.match(Query.attr("protocol"), Query.value("HTTP/1.1"))); String port = objectNames.iterator().next().getKeyProperty("port"); return Integer.valueOf(port); }}
复制代码


发布于: 2021 年 03 月 31 日阅读数: 12
用户头像

还未添加个人签名 2020.03.30 加入

还未添加个人简介

评论

发布
暂无评论
在项目启动时(无request)获取Tomcat端口号