请验证我的理解。当在 Java EE 应用程序中定义静态变量时,该变量是可见的并且可以由任何其他用户更改。但对于 ActionScript ,静态变量的范围是在浏览器窗口中运行的应用程序。
在这种情况下,是否可以在 ActionScript 中定义一个变量,使其行为类似于 Java EE 中的静态变量,因为 ActionScript 是客户端,而 Java EE 是服务器端?
最佳答案
我猜您需要所谓的“单例”对象 - 整个系统都可以访问的一个对象。
即使是 Java 中的“静态”也不会为您提供太多帮助:JavaEE 中静态变量可以有多个副本,例如,当您使用集群时,集群中的每台机器都将运行自己的静态变量副本应用程序,因此将拥有自己的“静态”变量副本。如果您有(比方说)10 个客户端(在 Flash 或 Flex 中)和 10 个集群服务器,每个客户端都可以获得自己的服务器,因此每个客户端都可以在服务器上获得自己的静态变量。
更重要的是,当服务器重新启动,但客户端仍然存在时,所有静态变量都会丢失。
实现真正的系统级单例的唯一方法是使用更复杂的解决方案,例如:
- 将“单例”数据保存到服务器端的某个文件中,以便集群中的所有节点和所有客户端都可以访问该文件;
- 将“单例”数据保存到数据库;
- 使用应用程序范围的 Enterprise Java Bean;
- 使用 Terracotta,它可以自动将“静态”变量转变为真正静态、持久的变量,而无需更改代码。
关于java - ActionScript 和 Java EE 中静态变量的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4345121/