Разница между статической переменной в ActionScript и в Java EE - PullRequest
0 голосов
/ 03 декабря 2010

Пожалуйста, подтвердите мое понимание. Когда в приложении Java EE определена статическая переменная, она видна и может быть изменена любым другим пользователем. Но в случае ActionScript областью действия статической переменной является приложение, работающее в окне браузера.

В этом случае возможно ли определить переменную в ActionScript, которая будет вести себя как статическая переменная в Java EE, потому что Actionscript - на стороне клиента, а Java EE - на стороне сервера?

Ответы [ 4 ]

1 голос
/ 03 декабря 2010

Ваше понимание статики верно.

Но это привело к проблеме, заключающейся в том, что вы хотите разделить значения между несколькими Клиентами. Но простого решения не существует. Вам нужен сервер, который хранит значение, и клиенты должны запросить у сервера это значение и попросить сервер обновить значение.

1 голос
/ 03 декабря 2010

Полагаю, вам нужен так называемый «синглтонный» объект - один объект, к которому обращается вся ваша система.

Даже «статический» из Java не слишком вам здесь поможет: может быть большечем одна копия статической переменной в JavaEE, например, когда вы используете кластеризацию, каждая машина в кластере будет запускать свою собственную копию приложения, поэтому будет иметь свою собственную копию «статической» переменной.Если у вас есть (скажем, 10 клиентов (во Flash или Flex) и 10 кластерных серверов, каждый клиент может получить свой собственный сервер, поэтому каждый клиент может получить свою собственную статическую переменную на сервере.

Более тогоКогда сервер перезагружается, но клиент все еще жив, все ваши статические переменные теряются.

Единственный способ сделать единый пакет на системном уровне - использовать более сложное решение, например:

  • сохранить данные 'singleton' в некоторый файл на стороне сервера, чтобы все узлы в кластере и все клиенты могли получить доступ к этому файлу;
  • сохранить данные 'singleton' вбаза данных;
  • использовать Enterprise Java Beans в области приложения;
  • использовать Terracotta, который может автоматически превращать «статические» переменные в действительно статические, постоянные без изменений в вашем коде.1017 *
0 голосов
/ 06 декабря 2010

Вы можете поделиться значениями через ячеистую сеть P2P с недавно добавленным протоколом потоков мультимедиа в реальном времени в FP10.1. В противном случае вы можете использовать удаленный общий объект для обмена значениями между различными клиентскими машинами (но для этого требуются решения удаленного взаимодействия на стороне сервера, такие как FMS, WebOrb, FluorineFX, AMFPHP и т. Д.).

0 голосов
/ 03 декабря 2010

Вы всегда можете передать переменную в браузер через Javascript или на сервер через socket / urlloader / javascript.

Хотя, если быть более точным, статическая переменная в AS3 имеет область действия, как вы ее объявляете, - public, protected,внутренний, частный - и привязан к определению определенного класса.

...