2010-12-03 25 views
0

Veuillez vérifier ma compréhension. Lorsqu'une variable statique est définie dans une application Java EE, la variable est visible et peut être modifiée par tout autre utilisateur. Mais dans le cas d'actionscript, la portée de la variable statique est l'application qui s'exécute dans la fenêtre du navigateur.Différence entre une variable statique dans ActionScript et Java EE

Dans ce cas, est-il possible de définir une variable dans actionscript pour se comporter comme la variable statique dans Java EE, parce que actionscript est côté client et Java EE est côté serveur?

+0

"Dans ce cas, est-il possible de définir une variable dans actionscript pour se comporter comme la variable statique dans J2EE ...?" - Voulez-vous dire que vous voulez partager la valeur d'une variable définie dans le script Action, en parcourant plusieurs Browser et plusieurs Computer? – Ralph

+1

que voulez-vous obtenir par ceci? – Pbirkoff

+0

@Ralph. Oui. @Pbirkoff. Je voulais juste des informations pour la connaissance. – Prabhat

Répondre

1

Je suppose que vous avez besoin d'un objet appelé 'singleton' - un objet auquel accède tout votre système.

Même 'static' de Java ne vous aidera pas trop ici: il peut y avoir plus d'une copie d'une variable statique dans JavaEE, par exemple lorsque vous utilisez le clustering, chaque machine du cluster exécutera sa propre copie de l'application, aura donc sa propre copie de la variable «statique». Si vous avez (disons) 10 clients (en Flash ou Flex) et 10 serveurs en cluster, chaque client peut avoir son propre serveur, de sorte que chaque client peut avoir sa propre variable statique sur le serveur. De plus, lorsque le serveur est redémarré, mais que le client est toujours actif, toutes vos variables statiques sont perdues.

La seule façon de rendre le vrai, singleton au niveau du système est d'utiliser une solution plus complexe, comme:

  • enregistrer les données du « singleton » à un certain fichier sur le côté serveur, de sorte que tous les nœuds le cluster et tous les clients peuvent accéder à ce fichier; Enregistrer les données 'singleton' dans la base de données;
  • ;
  • utiliser des beans Java Enterprise à portée applicative;
  • utilisez Terracotta, qui peut automatiquement transformer les variables 'statiques' en variables statiques et persistantes sans modifier votre code.
0

Vous pouvez toujours passer la variable au navigateur via Javascript ou au serveur via socket/urlloader/javascript.

Bien que pour être plus précis, la variable statique dans AS3 a la portée que vous le déclarez - public, protégé, interne, privé - et est attachée à la définition de classe spécifique.

1

Votre compréhension de l'électricité statique est correcte.

Mais cela a permis au problème, que vous souhaitez partager des valeurs entre plusieurs clients. Mais il n'y a pas de solution simple. Ce dont vous avez besoin, c'est d'un serveur qui stocke la valeur et les clients doivent demander au serveur cette valeur et demander au serveur de mettre à jour la valeur.

+0

Sur l'autre façon de partager la valeur est de construire quelque chose comme un réseau peer-to-peer pour les clients - mais je crois que ce n'est pas possible avec Flash/Flex. – Ralph

+0

Je vois.Il n'y a donc pas d'autre moyen que d'utiliser un back-end pour le supporter, comme java ou cold fusion. – Prabhat

+0

iirekm est juste quand vous avez plus d'un serveur - mais je suppose que ce n'est pas votre environnement – Ralph

0

Vous pouvez partager des valeurs via un réseau maillé P2P avec le protocole Real Time Media Flow récemment ajouté dans FP10.1. Sinon, vous pouvez utiliser un objet partagé distant pour partager des valeurs entre différentes machines clientes (mais nécessite des solutions d'accès distant côté serveur telles que FMS, WebOrb, FluorineFX, AMFPHP, etc.).