ActionScript和JavaEE中静态变量的区别
请核实我的理解。当在JavaEE应用程序中定义静态变量时,该变量是可见的,并且可以由任何其他用户更改。但对于actionscript,静态变量的作用域是在浏览器窗口中运行的应用程序ActionScript和JavaEE中静态变量的区别,java,apache-flex,actionscript,static,jakarta-ee,Java,Apache Flex,Actionscript,Static,Jakarta Ee,请核实我的理解。当在JavaEE应用程序中定义静态变量时,该变量是可见的,并且可以由任何其他用户更改。但对于actionscript,静态变量的作用域是在浏览器窗口中运行的应用程序 在这种情况下,是否可以在actionscript中定义一个变量,使其行为类似于Java EE中的静态变量,因为actionscript是客户端,Java EE是服务器端?您始终可以通过Javascript将变量传递给浏览器,或通过socket/urlloader/Javascript将变量传递给服务器 更准确地说,A
在这种情况下,是否可以在actionscript中定义一个变量,使其行为类似于Java EE中的静态变量,因为actionscript是客户端,Java EE是服务器端?您始终可以通过Javascript将变量传递给浏览器,或通过socket/urlloader/Javascript将变量传递给服务器
更准确地说,AS3中的静态变量具有声明的作用域—public、protected、internal、private—并附加到特定的类定义。您对静态的理解是正确的
但这就引出了一个问题,即您希望在多个客户机之间共享价值。但没有简单的解决办法。您需要的是一个服务器,它存储值,客户端必须向服务器请求该值并要求服务器更新该值。我想您需要所谓的“singleton”对象—一个由整个系统访问的对象 即使来自Java的“静态”也不会对您有太多帮助:JavaEE中可能有一个以上的静态变量副本,例如,当您使用集群时,集群中的每台机器都将运行自己的应用程序副本,因此将有自己的“静态”变量副本。如果您有(比方说)10个客户端(在Flash或Flex中)和10个集群服务器,那么每个客户端都可能有自己的服务器,因此每个客户端都可能在服务器上有自己的静态变量 更重要的是,当服务器重新启动,但客户端仍然处于活动状态时,所有静态变量都将丢失 实现真正的系统级单例的唯一方法是使用更复杂的解决方案,如:
- 将“singleton”数据保存到服务器端的某个文件中,这样集群中的所有节点和所有客户端都可以访问该文件李>
- 将“单例”数据保存到数据库中李>
- 使用应用程序范围的企业JavaBean李>
- 使用Terracotta,它可以自动将“静态”变量转换为真正静态的、持久的变量,而无需更改代码