Monday, October 29, 2018

Steps to enable HA in ADF Application


Consider each point if you are planning to deploy your ADF application in a WebLogic clustered server.
1. Expand your View project, WEB-INF, and open the WebLogic.xml file. (Create a WebLogic.xml file if it does not exist). Add the following element inside <weblogic-web-app> in the WebLogic.xml file
weblogic.xml

<session-descriptor>

<persistent-store-type>replicated_if_clustered</persistent-store-type>

</session-descriptor>

 

2. Expand your View project, WEB-INF, and open the web.xml file. Set the parameter org.apache.myfaces.trinidad. CHECK_FILE_MODIFICATION to false

web.xml

<context-param>

<param-name>org.apache.myfaces.trinidad.CHECK_FILE_MODIFICATION</param-name>

<param-value>false</param-value>

</context-param>

 

3. Open your Model project, Open the Application Module, Select the Configurations tab, Click on the link bc4j.xcfg (ADF Business Component Configuration file). Click on the source tab. Add jbo.dofailover=”true” to <AppModuleConfig> element

bc4j.xcfg

<AppModuleConfig ...

 <AM-Pooling jbo.dofailover="true"/>

</AppModuleConfig>

 

4. Click on the Overview tab of the bc4j.xcfg file. Edit each Application module configuration and make sure to toggle on ENABLE APPLICATION MODULE POOLING as shown below

5. Expand the Application Resources, Descriptors, ADF-META-INF, open adf-config.xml file and click on the Source Tab. Add the following element.
adf-config.xml
<adf-controller-config xmlns="http://xmlns.oracle.com/adf/controller/config">
<adf-scope-ha-support>true</adf-scope-ha-support>
</adf-controller-config>

Troubleshooting

ADF_FACES-60098:Faces lifecycle receives unhandled exceptions in phase RENDER_RESPONSE 6
ADF 11.1.2.4.0 I have faced below errors when run the application
ADF ADF_FACES-60098:Faces lifecycle receives unhandled exceptions in phase RENDER_RESPONSE 6
<Oct 29, 2018 11:20:25,928 AM GST> <Warning> <oracle.adfinternal.view.faces.context.RichExceptionHandler> <BEA-000000> <ADF_FACES-60098:Faces lifecycle receives unhandled exceptions in phase RENDER_RESPONSE 6
javax.faces.FacesException: Broken pipe
        at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl._renderResponse(LifecycleImpl.java:1273)
        at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl._executeRenderResponse(LifecycleImpl.java:1107)
        at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl._executePhase(LifecycleImpl.java:348)
        at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:258)
        at javax.faces.webapp.FacesServlet.service(FacesServlet.java:651)
        Truncated. see log file for complete stacktrace
Caused By: java.io.IOException: Broken pipe
        at sun.nio.ch.FileDispatcherImpl.write0(Native Method)
        at sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:47)
        at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:93)
        at sun.nio.ch.IOUtil.write(IOUtil.java:65)
        at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:471)
        Truncated. see log file for complete stacktrace
>
Solution:
When add libraries make sure to check the 'Deployed by Default' option. Otherwise it will not be available in server application deployment folder to refer run time.