Spago thread safety BUG
Situazione Lutente richiama una pagina PAGE con publisher jsp (padre) La jsp (padre) di presentazione fa 3 chiamate ajax a 3 PAGE spago diverse
Passo 2 Ogni page richiamata via ajax ha un publisher jsp (figlie) Ogni jsp figlia si limita a mostrare la service response tramite oggetti diversi in tempi diversi: –ResponseContainerAccess.getResponseContainer(request).getServiceResponse() –ResponseContainer.getResponseContainer().getServiceResponse() –E anche dopo un attesa di 100ms. –ResponseContainerAccess.getResponseContainer(request).getServiceResponse() –ResponseContainer.getResponseContainer().getServiceResponse() In teoria le 4 textarea dovrebbero mostrare la service_response prodotta dalla PAGE corrispondente
Codice JSP (figlie) – – ResponseContainerAccess.getResponseContainer(request).getServiceResponse() – – ResponseContainer.getResponseContainer().getServiceResponse() – – Sleep di 100ms –<% –Thread t = new Thread(); –t.sleep(100); –%> – – ResponseContainerAccess.getResponseContainer(request).getServiceResponse() – – ResponseContainer.getResponseContainer().getServiceResponse() –
BUG? In pratica, a fronte di più richieste contemporanee ( es 3 chiamate ajax ) eseguite su pagine diverse il ResponseContainerAccess confonde la service response di request con quella di unaltra. Il risultato è visibile nel seguente screenshoot Nella stessa jsp laccesso alla serviceResponse in istanti diversi produce risultati diversi (sempre nellesecuzione della stessa page)
in particolare la serviceResponse errata visualizzata dalla chiamata ajax 1 è relativa a quella prodotta da unaltra chiamata ajax Page 2 Ajax Page 1 AjaxPage 2 AjaxPage 3