[ https://issues.apache.org/jira/browse/PORTLETBRIDGE-159?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Michael Freedman resolved PORTLETBRIDGE-159. -------------------------------------------- Fix Version/s: 1.0.1 2.0.0 Resolution: Fixed Removed lazy initialization > Race condition in GenericFacesPortlet: mFacesBridge > ---------------------------------------------------- > > Key: PORTLETBRIDGE-159 > URL: https://issues.apache.org/jira/browse/PORTLETBRIDGE-159 > Project: MyFaces Portlet Bridge > Issue Type: Bug > Components: API > Reporter: Karl Krukow > Assignee: Michael Freedman > Fix For: 1.0.1, 2.0.0 > > > GenericFacesPortlet contains an instance variable of type Bridge > private Bridge mFacesBridge = null; > this is "lazily" initialized in "initBridge" called in "" called in "" > initBridge uses the broken "double checked locking" idiom > private void initBridge() throws PortletException > { > // Ensure te Bridge has been constrcuted and initialized > if (mFacesBridge == null) > { > try > { > // ensure we only ever create/init one bridge per portlet > synchronized(mLock) > { > if (mFacesBridge == null) > { > mFacesBridge = mFacesBridgeClass.newInstance(); > mFacesBridge.init(getPortletConfig()); > } > } > } > catch (Exception e) > { > throw new PortletException("doBridgeDisptach: error instantiating > the bridge class", e); > } > } > } > On Java 1.5+ this can be made safe by changing the declaration to: > private volatile Bridge mFacesBridge = null; > at a small synchronization cost. Alternatively consider if a version of Josh > Bloch's static initialization "on demand" could be used -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.