java - 通知单独的 JVM 执行任务
问题描述
所以我正在制作一个一次只运行一个实例的程序,并通过使用这个解决方案来做到这一点
但是现在我想这样做,如果用户尝试启动另一个实例,它将消耗该尝试并通知当前实例显示其 gui。
目前我正在考虑通过使用文件来做到这一点。show.stage
在启动第二个实例时,将创建一个名为的文件。当另一个实例检测到该文件时,它将显示其 gui 并删除该文件。
我知道这行得通,但我想知道是否有更优雅的方式来做到这一点。
我能否设置一个环境标志,其他实例可以检查或通过套接字侦听器通知它,尽管其他实例似乎不鼓励这些。我觉得创建文件将是最简单和最可靠的方法,但我愿意接受任何建议
该程序将在普通窗口上运行。
解决方案
有很多方法可以解决这个问题:
- 正如您已经想到的,文件系统可以用作两个 jvm 之间的通信通道。但这仅适用于在同一台服务器上运行的 jvm。
- 因此,已经建议的套接字解决方案使您能够(稍后)将相同的解决方案应用于分布式环境。缺点是您必须在非常低的级别上实现协议。
- 过去,人们经常求助于消息总线解决方案(例如 ActiveMQ)
- 在 2018 年,另一种选择是实现一个简单的 restful API,例如使用 jaxrs 和 jersey。
如前所述:您要为此付出的努力取决于您的要求。它将使用多长时间?您的解决方案将增长并且必须扩展到多台服务器的可能性有多大?!
推荐阅读
- javascript - THREE.OrbitControls 不是构造函数,不知道该怎么做
- windows - 获取 AD-Computer 不像专有名称
- python - 在元类的情况下,我们如何访问继承的类属性
- c# - 如何退出自定义 ContentDialog
- java - Selenium ChromeDriver 允许 cookie(默认配置文件)
- android - 在android studio中创建新模块时不生成代码
- javascript - Selenium 正在返回 PageSource 的旧状态,并且在 Javascript 执行后没有更新
- javascript - 2020 年是否可以在外部域 iframe 中设置样式?
- ios - 如何处理本机模式取消/错误事件(cordova-plugin-purchase)?
- python - 在 Pandas 中连接整行