Rich/Daryl-- Hey, I've run into a thread deadlock problem in the interaction between Controls and Page Flow that happens in the following circumstance:
thread1: acquire lock on FooPageFlow (during FlowController.execute) thread2: acquire lock on BeanContextServicesSupport.globalHierarchyLock (JDK class) thread1: acquire lock on BarControlBean (ControlBean.ensureControl()) thread2: wait for lock on BarControlBean (BeanContextSupport.remove()) thread1: wait for lock on BeanContextServicesSupport.globalHierarchyLock (JDK class) So, the problem is that the same JPF is being both created and destroyed by two different threads. It appears that the "destroy" phase of the JPF lifecycle is entirely unsynchronized and can freely acquire Control locks without having serialized access to the Page Flow itself. My thought is to add a synchronization point in JavaControlUtils.uninitJavaControls that locks on the PageFlowManagedObject as this would serialize access to the Page Flow. But, I seem to recall some threading issues with locking on a JPF during the "destroy" part of the lifecycle and don't want to resurrect those. Any suggestions about how best to make this fix? Eddie
