Hello, I have a rather critical problem. I modified the ADF lifecycle by 
creating a phaseListener that executes some code in the  UPDATE_MODEL_VALUES 
afterPhase and we just realized that only one user can work in the application 
at a time.

This is what happens, user1 opens the jsp and starts working, when a checkbox 
is selected (it also happens with other components) the afterPhase is executed, 
this method does some queries to the database and executes some other 
calculations and it takes about 30 seconds to do everything that it has to do. 
Now, the user2 logs into the system, and tries to go into the same page but the 
application does not respond, once the 30secs are over the application gets 
back to work and now user2 can do whatever he wants, but only after the 
phaseListener that the user1 fired has finished what it was doing, which means 
that during that period of time no one else can use the application!! we didn't 
notice this before because our previous tests took about 2 secs so it wasn't 
noticeable, but now that we are using real data obtained by external 
webServices the response takes a lot longer.

this is my phaseListener


[corresponding imports]

public class LocalRoutinesPhaseListener implements PhaseListener {

    /**
     * Logger
     */
    private static Logger logger = 
Logger.getLogger(LocalRoutinesPhaseListener.class);

    private static final long serialVersionUID = 3576307615728932485L;

    public LocalRoutinesPhaseListener() {
    }

    public void beforePhase(PhaseEvent phaseEvent) {
    }

    public void afterPhase(PhaseEvent phaseEvent) {
        String viewId = phaseEvent.getFacesContext().getViewRoot().getViewId();
        if (viewId.contains(ValidationsPhaseListener.PARSE_WEB) || 
viewId.contains(ValidationsPhaseListener.POPUP_MR)
                || viewId.contains(ValidationsPhaseListener.EDIT_TASK)) {
            Boolean isPopUp = false;

            if (viewId.contains(ValidationsPhaseListener.POPUP_MR)) {
                isPopUp = true;
            }

            BTRenderWebUtil bTRenderWebUtil = new BTRenderWebUtil();
            FisaDataBean dataBean = bTRenderWebUtil.getDataBean();
            if (dataBean != null) {
                CoreInputHidden changedComponent = 
dataBean.getChangedComponent();
                String changedComponentId = null;
                AdfFacesContext adfContext = 
AdfFacesContext.getCurrentInstance();

                if (changedComponent != null && changedComponent.getValue() != 
null) {
                    changedComponentId = changedComponent.getValue().toString();
                    UIComponent component = null;
                    if (changedComponentId != null) {
                        component = new 
BTRenderWebUtil().findComponentInRoot(changedComponentId);

                        if (component != null) {
                            bTRenderWebUtil.executeLocalRutine(component, 
isPopUp); //<---- all the queries and calculations are executed in this method  
                                  }
                        }
                    }
                    changedComponent.setValue(null);
                    adfContext.addPartialTarget(changedComponent);
                    component = null;
                }
            }
        }
    }

    public PhaseId getPhaseId() {
        return PhaseId.UPDATE_MODEL_VALUES;
    }
}

this is the phasesListener configuration:


<phase-listener>com.fisa.efisa.process.render.manage.bean.LocalRoutinesPhaseListener</phase-listener>
 

Please tell me what is it that I'm doing wrong. I really hope you can help me, 
I think this is a serious problem because only one person can use the 
application at a time!!

Thank you so much!!

Tamara

View the original post : 
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4124456#4124456

Reply to the post : 
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4124456
_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to