java获取tomcat运行的端口号
import io.micrometer.core.instrument.util.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.management.MBeanServer;
import javax.management.MalformedObjectNameException;
import javax.management.ObjectName;
import javax.management.Query;
import java.lang.management.ManagementFactory;
import java.util.NoSuchElementException;
import java.util.Set;
@RestController
public class Controller {
@RequestMapping("test2")
public Object test2() {
return getLocalPort();
}
public static Integer getLocalPort() {
MBeanServer beanServer = ManagementFactory.getPlatformMBeanServer();
Set<ObjectName> objectNames;
try {
objectNames = beanServer.queryNames(new ObjectName("*:type=Connector,*"), Query.match(Query.attr("protocol"), Query.value("HTTP/1.1")));
} catch (MalformedObjectNameException e) {
return null;
}
String port;
try {
port = objectNames.iterator().next().getKeyProperty("port");
} catch (NoSuchElementException e) {
return null;
}
Integer portInt = null;
if (StringUtils.isNotEmpty(port)) {
portInt = Integer.valueOf(port);
}
return portInt;
}
}