将Java Applet限制为仅一个实例

时间:2010-07-19 09:57:25

标签: java php applet single-instance

我一直在使用Stackoverflow来寻找我的编程问题的解决方案,但对于当前的问题,我还没有找到有用的解决方案。所以我加入了。

将Java applet限制为仅一个实例的好方法是什么。我正在使用php向最终用户提供applet,因此这是一个选项。

但是如果我能通过Applet本身限制Java Applet的执行,我会更感兴趣。我对Java很陌生,所以我真的不知道从哪里开始寻找类似的结构。

任何建议都将不胜感激。

作为旁注,“ javascript to launch only ONE window for a Java applet with a given URL“将是一个解决方案。虽然我正在将applet嵌入到我正在构建的应用程序中,但我并不热衷于为applet提供弹出窗口。

此致 AltWouss

编辑:
澄清实例限制。我想每台机器只加载一个applet。

4 个答案:

答案 0 :(得分:2)

为什么不在applet的众所周知的端口上启动SocketServer?

如果打开SocketServer,可能是因为另一个已经在运行。然后,您可以显示一条消息。

答案 1 :(得分:1)

如果您使用Java WebStart,则有JNLP SingleInstanceService

答案 2 :(得分:1)

不幸的是,Java不支持命名互斥锁来跨进程锁定。但是,您可以通过在applet启动时在知道位置创建具有已知名称的File来实现原始锁定。如果无法创建该文件,那么您知道该文件已存在,因为该应用程序之前已经启动过一次。要确保在应用程序关闭时删除文件,请简单地调用File.deleteOnExit()方法。

类似的东西:

if(file.createNewFile()) {
    file.deleteOnExit();
} else {
    throw new Exception("Instance already running!");
}

不是一个完美的解决方案,当然也有一些问题......但它可能足以满足您的目标。还可以查看那个可以提供更强大和更合适的解决方案的FileLock类。

答案 3 :(得分:0)

我不确定这会有什么帮助..但是我想到的第一件事是......是否有可能让applet成为单身人士? 对不起,这更像是一个后续问题然后回答......