我正在开发一个使用嵌入式jetty web server的小型服务器应用程序。该服务绑定到TCP端口并在后台运行。由于应用程序没有完成(它是一项服务),我必须手动终止该过程才能重新运行它(例如,因为当前进程正在使用TCP端口)。
Eclipse中是否可以在重新启动之前自动终止当前进程?
答案 0 :(得分:1)
你可以用代码的方式来做,而不是使用任何eclipse配置,我更好。启动应用程序时,只需检查系统中正在运行的进程并搜索要启动的进程。如果您发现该应用程序正在运行,请向其发送一个终止信号,然后继续启动。希望有所帮助。如果你还没有使用eclipse,它始终有效。 :P
答案 1 :(得分:1)
这是我在一两年前写过的片段,从那以后一直在做这件事。只需添加包声明即可。从您想要杀死拥有端口的进程的任何地方调用此方法,例如main()。
import java.io.IOException;
public class KillPortHolderSimple {
public static void killHolderOfPort(int port) {
final String how = "-KILL";
try {
Runtime.getRuntime().exec(new String[]{"sh", "-c", "lsof -i :" + port + " -t | xargs kill " + how});
} catch (IOException e) {
e.printStackTrace();
}
}
}
答案 2 :(得分:1)
Jetty还有一个ShutdownHandler,您可以将其连接到您的处理程序链中,该处理程序链将接受来自localhost的连接以及可以触发正常关闭的密钥。
或者,您可以使用对仅侦听另一个端口的Server对象的引用来连接您自己的组件,以便将停止键传递给它。
在命令行上,'jps'是获取java进程列表的最有用方法。
答案 3 :(得分:0)