Wednesday 19 August 2020

ADF application gives error while running it on the Production Server

Problem: Oracle ADF application is running fine when I am running it on my local system, but when i deploy the application on the Production Server then the application crashes.

Error log:

<Error> <org.apache.myfaces.trinidad.webapp.UIXComponentELTag> <BEA-000000> <Error when processing tag for component with id: "ot7". The scoped id of the parent component is ":r1:pc1:t1:c1".
javax.faces.FacesException: javax.el.PropertyNotFoundException: Target Unreachable, 'null' returned null
    at com.sun.faces.application.ApplicationImpl.createComponentApplyAnnotations(ApplicationImpl.java:1952)
    at com.sun.faces.application.ApplicationImpl.createComponent(ApplicationImpl.java:447)
    at javax.faces.webapp.UIComponentELTag.createComponent(UIComponentELTag.java:222)
    at org.apache.myfaces.trinidad.webapp.UIXComponentELTag.createComponent(UIXComponentELTag.java:225)
    at javax.faces.webapp.UIComponentClassicTagBase.createChild(UIComponentClassicTagBase.java:506)
    at javax.faces.webapp.UIComponentClassicTagBase.findComponent(UIComponentClassicTagBase.java:744)
    at javax.faces.webapp.UIComponentClassicTagBase.doStartTag(UIComponentClassicTagBase.java:1311)
    at org.apache.myfaces.trinidad.webapp.UIXComponentELTag.doStartTag(UIXComponentELTag.java:115)
    at oracle.adfinternal.view.faces.unified.taglib.output.UnifiedOutputTextTag.doStartTag(UnifiedOutputTextTag.java:55)
    at oracle.jsp.runtime.tree.OracleJspBodyTagNode.executeHandler(OracleJspBodyTagNode.java:50)
    at oracle.jsp.runtime.tree.OracleJspCustomTagNode.execute(OracleJspCustomTagNode.java:263)
    at oracle.jsp.runtime.tree.OracleJspClassicTagNode.evalBody(OracleJspClassicTagNode.java:87)
    at oracle.jsp.runtime.tree.OracleJspBodyTagNode.executeHandler(OracleJspBodyTagNode.java:58)
    at oracle.jsp.runtime.tree.OracleJspCustomTagNode.execute(OracleJspCustomTagNode.java:263)
    at oracle.jsp.runtime.tree.OracleJspClassicTagNode.evalBody(OracleJspClassicTagNode.java:87)
    at oracle.jsp.runtime.tree.OracleJspBodyTagNode.executeHandler(OracleJspBodyTagNode.java:58)
    at oracle.jsp.runtime.tree.OracleJspCustomTagNode.execute(OracleJspCustomTagNode.java:263)

Possible solutions: There can be two possible reasons of this error. 

1. PPR (Partial Page Rendering) 

PPR stands for Partial Page Rendering and it as used in oracle ADF to refresh some particular part of the page if some data changes on the page or on trigger event. This helps in optimizing the performance of the application as for data refresh the whole page is not loaded, instead some part of the page which is required to be refreshed is loaded. But there are some bugs in ADF due to which this behaves in strange way. If this is the cause then you can resolve this issue by disabling PPR in the Page or in the Application. 

Caution: This may lead to another issues related to component refresh on the page as this disables the automatic refresh, you may have to write some code to refresh the page at certain point. While doing this it is must to check if all the functionality of the application is working as it is supposed to be or not. 

How to disable PPR?? 

PPR can be disabled from two levels.

  1. Application Level: By diabling PPR at Application level this is default properties of all the pages. This can be done in the adf-config file.



  2. Page Level: This can be done to the iterators of the in the pagedef of the page.

     

2. PageDef Filename conflict

If we are running an application is production environment and if two application has pageDef, page name, taskflow name, package name same then this error comes up. This majorly comes up due to same pageDef name.

So when you run you application then the clash doesn't happen, but when your is running it with all other applications then this conflict happens and the framework is confused which file to consider for the page. In that case this issue comes up.

Solution:

Rename the pageDef or page for which this issue is coming by clicking on the refactor in the JDeveloper.

How to avoid this??

Make sure that all the applications are having a different package name. This will avoid this condition.

I will try to update this post with actual error log which comes up in case of PageDef conflict..