Java applet静态类

时间:2011-07-26 08:19:11

标签: java applet persistence next-generation-plugin

我的问题是在applet中存储一些用户输入以减少用户操作。 我为此使用静态字段。但是我注意到,如果用户进入浏览器中的几个选项卡 - 启动了新的“线程”(或类似的东西),并且这个新线程中的静态类是空的。也许有另一种解决方案可以在applet中保存一些数据?

修改

确定。更多细节。我有一个数字签名小程序。用户一旦选择证书(X509Certificate)并用它来签署所有文件。我有一个这样的课:

   public class CertificateContainer
    {
        private static X509Certificate certificate;
        ...

3 个答案:

答案 0 :(得分:3)

使用静态字段在应用程序的各个部分之间传递用户输入是非常糟糕的做法。数据应存储在必要时传递的对象中。

但在您的情况下,要在多个小程序之间共享数据,最佳解决方案是使用java.net.CookieHandler将其存储在浏览器Cookie中

答案 1 :(得分:2)

不同浏览器标签中的Applet是独立程序。根据浏览器和Java-Plugin,它们甚至可以在不同的VM中运行,但即使在同一个VM中,它们也很可能具有独立的类加载器,并且无法通过静态变量进行通信。

如果您需要存储用户数据,可以使用JNLP API,例如PersistenceService。

使用1.6 Sun插件,只有当您的applet由JNLP加载时才可用,在IcedTea插件中(与某些版本的OpenJDK一起分发),它也可用于通常的applet标签加载的applet(没有JNLP)

(我不知道Applet如何使用CookieHandler。)

答案 2 :(得分:0)

听起来你不应该使用静态字段来存储用户数据。此外,我认为新的浏览器选项卡不会创建新线程,因为它应该是您的applet的完全独立的实例。