Java-只允许应用程序的一个实例

Java-只允许应用程序的一个实例,java,instance,port,Java,Instance,Port,可能的重复项: 实现这一点的好方法是什么?我读过涉及绑定到端口的方法。这会干扰使用相同方法的其他应用程序吗?仅当它们使用相同的端口,并且有很多端口时。只是不要用普通的 一些软件也会使用某种锁文件。因此,如果存在第二个实例,它就不会启动。一般的概念是定义一个TCP端口,然后在应用程序启动时将(侦听器/服务器)绑定到该端口。如果绑定失败,那么您就知道应用程序的另一个实例已经在运行 如果另一个应用程序将同一端口用于其他用途(或出于相同目的),则此操作将失败。因此,将要使用的端口放在存在于可执行文件

可能的重复项:


实现这一点的好方法是什么?我读过涉及绑定到端口的方法。这会干扰使用相同方法的其他应用程序吗?

仅当它们使用相同的端口,并且有很多端口时。只是不要用普通的


一些软件也会使用某种锁文件。因此,如果存在第二个实例,它就不会启动。

一般的概念是定义一个TCP端口,然后在应用程序启动时将(侦听器/服务器)绑定到该端口。如果绑定失败,那么您就知道应用程序的另一个实例已经在运行


如果另一个应用程序将同一端口用于其他用途(或出于相同目的),则此操作将失败。因此,将要使用的端口放在存在于可执行文件之外的配置文件中是有意义的,这样就可以将它配置为使用尚未在相关计算机上使用的端口。

您确实可以将
服务器套接字
绑定到特定的TCP/IP端口。如果该端口已在使用,
bind
将抛出一个
IOException

此方法不会干扰使用相同方法的其他应用程序,除非另一个应用程序恰好打开了相同的端口(TCP/IP端口由16位数字标识)。因此,您应该选择一个固定的端口号,并希望没有其他应用程序碰巧使用相同的端口号


请注意,在Windows上,您可以使用命令
netstat
查看哪些端口正由哪些可执行文件使用。

绑定到端口不好。尝试启动应用程序并重置网络适配器,看看会发生什么。其他应用程序也可能需要使用该端口

我认为最好在外部资源(如文件)上实现锁定,但必须小心:如果电脑重新启动或类似情况,则有必要检测过时的锁定

你检查过Apache commons或JBoss项目了吗?我打赌必须有一个库才能正确执行此操作。

将帖子复制为: