Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ActionScript和JavaEE中静态变量的区别_Java_Apache Flex_Actionscript_Static_Jakarta Ee - Fatal编程技术网

ActionScript和JavaEE中静态变量的区别

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

请核实我的理解。当在JavaEE应用程序中定义静态变量时,该变量是可见的,并且可以由任何其他用户更改。但对于actionscript,静态变量的作用域是在浏览器窗口中运行的应用程序


在这种情况下,是否可以在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,它可以自动将“静态”变量转换为真正静态的、持久的变量,而无需更改代码

您可以通过P2P mesh网络与FP10.1中最近添加的实时媒体流协议共享值。否则,您可以使用远程共享对象在不同的客户端计算机之间共享值(但需要服务器端远程处理解决方案,如FMS、WebOrb、FluorineFX、AMFPHP等)。

“在这种情况下,是否可以在actionscript中定义一个变量,使其行为与J2EE中的静态变量类似…”--你的意思是你想通过几个浏览器和几台计算机共享动作脚本中定义的一个变量的值吗?你想通过这个实现什么?@Ralph。对@普比尔科夫。只是为了获取知识而需要信息。另一种分享价值的方式是为客户建立一个类似点对点的网络——但我相信这在Flash/Flex中是不可能的。我明白了。因此,除了使用一些后端来支持它之外,没有其他方法了,比如java或cold fusion。当您有多台服务器时,iirekm是正确的,但我想这不是您的环境