2010-03-11 17 views
6

J'utilise Seam et j'obtiens une erreur "Appel simultané à la conversation". Qu'est-ce que ça veut dire?Appel simultané à la conversation

J'ai un bouton qui prend 5 minutes à traiter. Je reçois cette erreur dans les 2 minutes. Définir le délai de requête simultanée à 10 min ne semble pas fonctionner. Y a-t-il un moyen de bloquer toutes les autres demandes jusqu'à ce que la première soit terminée?

+0

@bhargav Pouvez-vous fournir plus d'informations: components.xml, vos haricots, de l'oreille ou une application de guerre ?? –

Répondre

1

ne pense pas que c'est une bonne idée de bloquer toutes les autres demandes pour une telle opération longue, une bien meilleure approche est de l'avoir à fonctionner de manière asynchrone.

Vous pouvez jeter un coup d'oeil ici http://achorniy.wordpress.com/2009/07/14/avoid-concurrent-call-to-conversation/ mais c'est la solution pour vous permettre de bloquer d'autres demandes pendant la courte période de temps (bien sûr il peut les bloquer pendant longtemps mais ce n'est pas une bonne approche en général pour rendre l'utilisateur attendre pour de telles demandes) Vous pouvez jeter un oeil ici pour un bon exemple de comment UI peut être organisé pour fonctionner avec async sur backend (voir richfaces livedemo "Ajax Support" Push/Pull exemples)

0

Voici la solution - utiliser la méthode progressBar, appeler la méthode asynchrone seam pour exécuter long-process et passer le paramètre ProgressBean avec les paramètres à async-method (il doit être accessible depuis yuor bean conversation que vous utilisez dans JSF) et mettre à jour périodiquement l'état de progression à long terme ing tâche Cette approche est expliquée en détail ici [Afficher la progression du processus dynamique dans Seam/RichFaces] [1]

[1] http://achorniy.wordpress.com/2010/10/22/show-dynamic-process-progress-in-seam-richfaces/