java获取jar包启动的端口号

您所在的位置:网站首页 java指定端口号启动 java获取jar包启动的端口号

java获取jar包启动的端口号

2024-07-17 07:05| 来源: 网络整理| 查看: 265

获取Java Jar包启动的端口号

作为一名经验丰富的开发者,你需要教会一位刚入行的小白如何使用Java来获取启动的Jar包的端口号。下面是整个过程的流程和每一步需要做的事情,并附带了相应的代码和代码注释。

流程 步骤 描述 1 获取Jar包的进程ID(PID) 2 获取Jar包进程的所有端口号 3 过滤出Jar包启动的端口号 第一步:获取Jar包的进程ID(PID)

首先,我们需要获取正在运行的Jar包的进程ID(PID)。在Java中,我们可以通过运行时(Runtime)对象的exec()方法来执行操作系统的命令,进而获取进程ID。下面是获取Jar包进程ID的代码:

String processName = "java"; String command = "jps -l | grep " + jarFileName; Process process = Runtime.getRuntime().exec(command);

代码解释:

processName:指定要查找的进程名称,这里我们使用"java"。 command:命令行命令,使用jps -l命令获取所有正在运行的Java进程的进程ID和进程名,并使用grep命令过滤出指定的Jar包进程。 Process:表示正在运行的进程。 第二步:获取Jar包进程的所有端口号

接下来,我们需要获取Jar包进程的所有端口号。在Java中,我们可以通过ManagementFactory类的getPlatformMBeanServer()方法来获取平台MBean服务器,并使用其queryNames()方法获取所有的网络相关的MBean。下面是获取Jar包进程所有端口号的代码:

Set objectNames = ManagementFactory.getPlatformMBeanServer().queryNames(null, null); List portList = new ArrayList(); for (ObjectName name : objectNames) { String className = name.getCanonicalName(); if (className.contains("type=Connector")) { String portString = className.split(",")[1].split("=")[1]; portList.add(Integer.parseInt(portString)); } }

代码解释:

objectNames:存储所有的MBean对象名称。 ManagementFactory.getPlatformMBeanServer().queryNames(null, null):获取所有的MBean对象名称。 for (ObjectName name : objectNames):遍历所有的对象名称。 String className = name.getCanonicalName():获取对象的规范名。 if (className.contains("type=Connector")):筛选出网络相关的MBean对象。 String portString = className.split(",")[1].split("=")[1]:从对象名称中提取端口号。 portList.add(Integer.parseInt(portString)):将端口号添加到端口列表中。 第三步:过滤出Jar包启动的端口号

最后,我们需要过滤出Jar包启动的端口号。可以通过比较Jar包进程的进程ID和已知的进程ID来确定。下面是过滤出Jar包启动的端口号的代码:

int pid = getPid(process); List jarPortList = portList.stream() .filter(port -> isProcessListeningPort(pid, port)) .collect(Collectors.toList());

代码解释:

int pid = getPid(process):获取Jar包进程的进程ID。 isProcessListeningPort(pid, port):判断进程是否正在监听某个端口。 portList.stream().filter(...):使用流过滤出符合条件的端口号。 collect(Collectors.toList()):将过滤出的端口号收集到列表中。 完整代码示例

下面是获取Java Jar包启动的端口号的完整代码示例:

import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.lang.management.ManagementFactory; import java.util.ArrayList; import java.util.List; import java.util.Set; import java.util.stream.Collectors; public class JarPortFinder { public static void main(String[] args) throws IOException { String jarFileName = "your-jar-file-name.jar"; int jarPort = getJarPort(jarFileName); System.out.println("Jar包启动的端口号:" + jarPort); } public static int getJarPort(String jarFileName) throws IOException { String processName = "java";


【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3