网上搜的都不靠谱,自己整一个

package utility;

import javax.management.MBeanServer;
import javax.management.ObjectName;
import javax.management.Query;
import java.lang.management.ManagementFactory;
import java.net.InetAddress;
import java.util.*;

/**
 * Created by tanmingxin on 2017/9/18.
 */
public class SystemInfo {

    public static TomcatInfo getInfo() throws Exception {
        String[] ph = ManagementFactory.getRuntimeMXBean().getName().split("@");
        SystemInfo.TomcatInfo tomcatInfo = new SystemInfo.TomcatInfo();
        tomcatInfo.setPid(ph[0]);
        tomcatInfo.setHostname(ph[1]);
        tomcatInfo.setHostaddress(InetAddress.getLocalHost().getHostAddress());
        MBeanServer mBeanServer = ManagementFactory.getPlatformMBeanServer();
        Set<ObjectName> names = mBeanServer.queryNames(new ObjectName("Catalina:type=Connector,*"),  Query.match(Query.attr("protocol"), Query.value("HTTP/1.1")));
        for (Iterator<ObjectName> i = names.iterator(); i.hasNext(); ) {
            ObjectName obj = i.next();
            Object scheme = mBeanServer.getAttribute(obj, "scheme");
            String port = obj.getKeyProperty("port");
            tomcatInfo.setPort(port);
            tomcatInfo.setScheme(Objects.isNull(scheme) ? null : scheme.toString());
        }
        return tomcatInfo;
    }

    public static class TomcatInfo {
        private String port; // ie. <Connector port="8080"
        private String scheme; // http or https
        private String pid; // tomcat prosess id
        private String hostname; // machine name

        private String hostaddress; // ip

        public TomcatInfo () {}

        public TomcatInfo(String port, String scheme, String pid, String hostname, String hostaddress) {
            this.port = port;
            this.scheme = scheme;
            this.pid = pid;
            this.hostname = hostname;
            this.hostaddress = hostaddress;
        }

        public String getPort() {
            return port;
        }

        public void setPort(String port) {
            this.port = port;
        }

        public String getScheme() {
            return scheme;
        }

        public void setScheme(String scheme) {
            this.scheme = scheme;
        }

        public String getPid() {
            return pid;
        }

        public void setPid(String pid) {
            this.pid = pid;
        }

        public String getHostname() {
            return hostname;
        }

        public void setHostname(String hostname) {
            this.hostname = hostname;
        }

        public String getHostaddress() {
            return hostaddress;
        }

        public void setHostaddress(String hostaddress) {
            this.hostaddress = hostaddress;
        }

        @Override
        public String toString() {
            return "TomcatInfo{" +
                    "port='" + port + '\'' +
                    ", scheme='" + scheme + '\'' +
                    ", pid='" + pid + '\'' +
                    ", hostname='" + hostname + '\'' +
                    ", hostaddress='" + hostaddress + '\'' +
                    '}';
        }
    }

}
最后修改:2019 年 02 月 23 日
如果觉得我的文章对你有用,请随意赞赏