2010-12-03 2 views
0

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

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

+0

«В этом случае можно ли определить переменную в actionscript, чтобы вести себя как статическая переменная в J2EE ...?» - Вы имеете в виду, что хотите поделиться значением переменной, определенной в Action script, accoss несколько браузеров и нескольких компьютеров? – Ralph 2010-12-03 11:37:29

+1

что вы хотите достичь этим? – Pbirkoff 2010-12-03 11:37:34

ответ

1

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

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

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

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

  • сохранить данные в «Синглтоне» в какой-то файл на стороне сервера, поэтому все узлы кластер и все клиенты могут получить доступ к этому файлу;
  • сохранять данные «singleton» в базе данных;
  • применение Java-бобы с применением приложений;
  • использовать Terracotta, который может превращать «статические» переменные в действительно статические, постоянные автоматически без каких-либо изменений в вашем коде.
0

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

Скорее всего, статическая переменная в AS3 имеет область видимости - общедоступную, защищенную, внутреннюю, частную - и привязана к определенному определению класса.

1

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

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

0

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

Смежные вопросы