Details
-
Type: Bug
-
Status: Closed
-
Priority: Major
-
Resolution: Fixed
-
Affects Version/s: 1.6DR#5
-
Component/s: Framework
-
Labels:None
-
Environment:ICEfaces 1.6DR5, Seam 1.2
-
ICEsoft Forum Reference:
Description
Rapidly clicking on a button causes exceptions to be thrown
13:33:50,218 ERROR [D2DFaceletViewHandler] Problem in renderResponse:
/pricing/viewAdjustPremium.jspx @39,80 itemValue="${layer.value}":
/pricing/viewAdjustPremium.jspx @38,110 items="#{ctrl.pricingConversation.x}":
Exception getting value of property pricingConversation of base of type :
com.agcs.pricing.web.controller.ViewAdjustPremiumController_$$_javassist_39
javax.faces.el.EvaluationException: /pricing/viewAdjustPremium.jspx @39,80 itemValue="${x.value}":
/pricing/viewAdjustPremium.jspx @38,110 items="#{viewadjustpremiumcontroller.pricingConversation.x}":
Exception getting value of property pricingConversation of base of type :
com.agcs.pricing.web.controller.ViewAdjustPremiumController_$$_javassist_39
at com.sun.facelets.el.LegacyValueBinding.getValue(LegacyValueBinding.java:60)
....
The following change has been suggested, however, synchronization must be considered carefully as it can lead to deadlock or performance problems:
public class ViewBoundAdaptingServlet extends BasicAdaptingServlet {
synchronized public void service(HttpServletRequest request, HttpServletResponse response) throws Exception {
...
}
}
Making the "service" method synchronized is good enough for now.
It looks like that when the "service" method is run by two different threads one of them will trigger "view.release()" which will clear-up data that the other thread is still working with.