java - ActionScript 和 Java EE 中静态变量的区别

标签 java apache-flex actionscript static jakarta-ee

请验证我的理解。当在 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/

相关文章:

使用 ScheduledExecutorService 时 Java webapp 内存泄漏

java - Redirect from CustomLogoutHandler to 'login?logout' 被重定向到 'login'

apache-flex - 在弹出文本输入控件上设置焦点

apache-flex - 尝试获取数据网格所选项目的全局 y 坐标

android - 使用 applicationDPI mxml 属性集在 Google Play 上发布 Flex 应用程序

actionscript - 是否存在一个好的 swf 到 exe 包装器开源?

java - SONAR 实现是否将伴随类视为公共(public)类的一部分 - 指标

java - 循环中 java.util.Map.putAll(Map<>) 和 java.util.Map.put(Integer, Object) 有什么区别

javascript - Flex vs ExtJS 用于内部系统前端,它们的优缺点是什么?

apache-flex - Flex : Render an unrealized UIComponent to BitmapData?