簡體   English   中英

ActionScript和Java EE中的靜態變量之間的區別

[英]Difference between static variable in ActionScript and in Java EE

請核實我的理解。 在Java EE應用程序中定義靜態變量時,該變量是可見的,並且可以由任何其他用戶更改。 但是在actionscript的情況下,靜態變量的范圍是在瀏覽器窗口中運行的應用程序。

在這種情況下,是否可以在actionscript中定義一個變量,使其行為類似於Java EE中的靜態變量,因為actionscript是客戶端而Java EE是服務器端?

您對靜電的理解是正確的。

但這導致問題,您想要在幾個客戶端之間共享值。 但是,沒有簡單的解決方案。 您需要的是一個服務器,它存儲該值,客戶端必須向服務器詢問此值並要求服務器更新該值。

我想你需要所謂的'singleton'對象 - 一個對象可以被整個系統訪問。

即使來自Java的'靜態'也不會對你有太大的幫助:JavaEE中可能有多個靜態變量副本,例如當你使用集群時,集群中的每台機器都會運行自己的應用程序副本,因此將擁有自己的“靜態”變量副本。 如果你有(比方說)10個客戶端(在Flash或Flex中)和10個集群服務器,每個客戶端可能會得到自己的服務器,因此每個客戶端可能在服務器上獲得自己的靜態變量。

更重要的是,當服務器重新啟動但客戶端仍處於活動狀態時,所有靜態變量都將丟失。

制作真正的系統級單例的唯一方法是使用更復雜的解決方案,例如:

  • 將“單例”數據保存到服務器端的某個文件中,因此集群中的所有節點和所有客戶端都可以訪問該文件;
  • 將“單一”數據保存到數據庫中;
  • 使用應用程序范圍的Enterprise Java Bean;
  • 使用Terracotta,它可以自動將“靜態”變量轉換為真正的靜態變量,而不會對代碼進行任何更改。

您始終可以通過Javascript將變量傳遞給瀏覽器,或者通過socket / urlloader / javascript傳遞給服務器。

雖然更確切地說,AS3中的靜態變量具有聲明它的范圍 - public,protected,internal,private - 並附加到特定的類定義。

您可以通過P2P網狀網絡與FP10.1中最近添加的實時媒體流協議共享值。 否則,您可以使用遠程共享對象在不同客戶端計算機之間共享值(但需要服務器端遠程處理解決方案,如FMS,WebOrb,FluorineFX,AMFPHP等)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM