Est-il correct de stocker des objets (composant java par exemple) dans une variable d'application?

StackOverflow https://stackoverflow.com/questions/2851251

Question

Je développe une application en ce moment qui crée et stocke une connexion à un serveur XMPP local dans le champ d'application. Les méthodes de connexion sont stockées dans un cfc qui fait que le Application.XMPPConnection est connecté et autorisé chaque fois qu'il est utilisé, et utilise la connexion pour envoyer des événements en direct aux utilisateurs. Pour autant que je peux dire, cela fonctionne très bien. Mais il n'a pas été testé sous toute forme de stress.

Ma question est: Cette configuration cause des problèmes plus tard Je demande seulement parce que je ne peux pas trouver des preuves d'autres personnes en utilisant des variables d'application de cette façon?. Si je ne l'utilise Railo je serais en utilisant la passerelle d'événements de CF au lieu d'accomplir la même tâche.

Était-ce utile?

La solution

Taille lui-même est pas un problème. Si vous deviez initialiser un objet par demande, vous souhaitez brûler beaucoup plus de mémoire. Le problème est l'accès.

Si vous avez un grand nombre de demandes concurrentes pour le même objet, vous devez mesurer le temps d'accès à cet objet par rapport à l'instanciation. Gardez à l'esprit que, pour les objets de données, plus d'un thread peut les lire. Si je comprends bien, cependant, est que lorsqu'une fonction de l'objet est appelée, elle verrouille l'objet d'autres threads jusqu'à ce que le retour de la fonction.

En outre, si l'objet maintient l'état, vous devez considérer ce qu'il faut faire lorsque plusieurs threads obtiennent / réglage que les données. Voulez-vous retrouver avec des conditions de course?

Vous pourriez envisager de manipuler cet objet dans le cadre de la session, de sorte qu'il est seulement instancié par utilisateur (qui, probablement, ne fera que faire une ou deux requêtes simultanées).

Autres conseils

Bien sûr, vous pouvez utiliser champ d'application pour le stockage de ces composants si elles sont utilisées par tous les utilisateurs dans les différentes parties d'application. Maintenant, les problèmes possibles sont:

  1. taille du composant (s)
  2. temps nécessaire pour l'initialisation si ceux-ci sont définies lors du démarrage de l'application
  3. les conditions de course entre les états de réglage / obtenir de ces composants

Pour la première, il existe des moyens pour calculer la taille d'un composant dans la mémoire. Ces derniers temps, il y avait beaucoup de messages sur ce sujet il serait facile de trouver. Si vous n'avez pas une grande structure ou requête enregistrée à l'intérieur, je suppose que vous êtes ok ici.

En second lieu, encore une fois, si vous ne comblent pas ce cfc avec une grande requête de DB ou de faire une analyse syntaxique lente, vous êtes ok ici.

Troisièmement, faire attention à des situations possibles, où les utilisateurs sont plus en train de changer les états de ces composants. Dans ce cas l'utilisation cflock sur chaque réglage des composants de l'état.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top