2016-03-10 1 views
0

J'ai une ActionForm sérialisable qui contient une instance d'un autre objet Serializable. Cet objet a une méthode synchronisée que je ne peux pas changer en ce moment.Méthode synchronisée dans ActionForm

Je veux savoir si mon objet de formulaire est le même pour différentes demandes, car l'application est confrontée à une certaine lenteur exactement avant cette méthode synchornisée.

Ceci est mon ActionMapping:

<action attribute="myActionForm" 
      name="myActionForm" 
      path="/myAction" 
      type="myAction" 
      parameter="task" 
      scope="session" 
      validate="false"> 
     <forward name="tasks" path=".tasks.new" />    
    </action> 

Et voici mon action:

public ActionForward taskName(ActionMapping mapping, ActionForm frm, HttpServletRequest request, HttpServletResponse response) throws IntegrationException { 
    MyForm form = (MyForm) frm; 

    form.getObjectX().executeSynchronizedMethodX(); 

    return mapping.findForward("tasks"); 
} 

Ce formulaire est renvoyé de la vue à la même ActionForward.

Répondre

1

C'est le même bean dans la même session; c'est ce que signifie la portée de la session.

En travers demandes dépend si les demandes sont faites dans la même session.

+0

Merci Dave, je n'ai pas pu le tester avant. Mais nous avons remarqué que le même utilisateur avait le problème parce qu'il faisait beaucoup de demandes simultanément. Donc, il "rivalisait avec lui-même" pour accéder à la méthode. – dinhokz

+0

@dinhokz Correcte; Si le même utilisateur est sur le même navigateur et a plusieurs fenêtres/onglets ouverts, cet utilisateur a la même session (normalement). –

+0

Je le sais. La question était de savoir si l'objet de formulaire est exactement la même instance à travers différentes demandes. – dinhokz