在项目启动时(无request)获取Tomcat端口号
来源:互联网 发布:游戏美工收入 编辑:程序博客网 时间:2024/06/13 22:49
上一篇说的将非Spring Boot项目注册到Eureka Server并提供服务也说到,配置文件里eureka.port必须要与本机tomcat端口号相同,但不同环境往往有不同的tomcat端口号,以往我使用不同环境的配置文件以确保eureka服务端口与tomcat一致。
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); }}
那么之前写的将非Boot项目注册到eureka server上怎么动态的拿tomcat端口号呢:
在之前的MyInstanceConfig 中加入方法:
/*** *获取本机启动中tomcat端口号 * @return */ @Override public int getNonSecurePort(){ int tomcatPort; try { MBeanServer beanServer = ManagementFactory.getPlatformMBeanServer(); Set<ObjectName> objectNames = beanServer.queryNames(new ObjectName("*:type=Connector,*"), Query.match(Query.attr("protocol"), Query.value("HTTP/1.1"))); tomcatPort = Integer.valueOf(objectNames.iterator().next().getKeyProperty("port")); }catch (Exception e){ return super.getNonSecurePort(); } return tomcatPort; }
这里的getNonSecurePort其实就是config.properties里面配置的eureka.port可以在PropertiesInstanceConfig的init方法中找到
阅读全文
0 0
- 在项目启动时(无request)获取Tomcat端口号
- tomcat 启动项目时提示端口号被使用
- 获取tomcat端口-不通过request对象
- tomcat启动在80端口
- Tomcat设置默认启动项目 与 修改端口号
- Tomcat启动时提示端口号冲突
- 用tomcat启动项目并且改端口
- 项目无错误Tomcat启动时间过长
- Spring Boot 在程序中获取启动端口号
- 在request中获取项目路径
- tomcat配置多域名,无端口,发布项目
- 启动Tomcat时端口号被占用的情况
- log4j无日志生成? 我将一个web项目部署在tomcat server.xml配置文件中,当我启动tomcat是无日志输出。
- Eclipse使用Maven tomcat:run命令启动web项目时修改默认端口
- 使用Maven tomcat:run命令启动web项目时修改默认端口
- intellij idea 启动项目时后台tomcat 1099端口被占用
- Eclipse使用Maven tomcat:run命令启动web项目时修改默认端口
- tomcat启用不同端口,同时启动多个项目
- Thymeleaf 初步学习
- 日语中的拨音、长音和促音规则
- ZooKeeper
- WebApp验证码生成与使用
- Barracuda
- 在项目启动时(无request)获取Tomcat端口号
- Set集合
- S2SM集成Shiro-登录验证
- 5th 【基础题】组合三角形
- 开源的RippleLayout,点击产生波浪涟漪效果
- ecshop之transport和jquery冲突之完美解决方案
- 【实践】端到端的OCR:验证码识别
- Java菜鸟成长之路__Day_2_Java_方法
- Redis原理详解