Wednesday, October 8, 2008

BI Publisher: xdodebug.cfg troubleshooting

Using the xdodebug.cfg file is a great way to debug the BI Publisher API's for custom code that is calling the BI Publisher API's. Below is the metalink note (Note:364547.1) on how to do this but beware.....
Direct report publishing via the XML Publisher Core APIs (without concurrent processing)
1. Connect to the Apache Server as ‘applmgr’. Run the APPSORA.env to set the APPS environment (Windows: envshell.cmd).
2. Create an $XDO_TOP/temp directory.
3. Go to the $OA_JRE_TOP/jre/lib directory.
4. Create an xdodebug.cfg file with the following 2 lines:
LogLevel=STATEMENT
LogDir=[full XDO_TOP]/temp
5. Restart the Apache server.
6. Reproduce the problem.
Unfortunately, Oracle's metalink note is missing one key setup that has to be done. In order for debugging to work you must have a temp directory setup via the template manager. Unbelievably, if you do not have the temp directory setup, debugging actually causes the BI Publisher API's to crash.

The situation is really a quagmire since the reason one would turn on the debugging is to troubleshoot a template issue and in doing so they have exacerbated the issue. Below is the error you can expect to see.

java.io.FileNotFoundException: xdo-1225988068296.tmp (Permission denied)

I retrived this from JSERV log file, see Stack Trace below. Note: We had turned on debugging for the BIPublisher_OAF (bi publisher report pop-ups from forms6i) code to troubleshoot an issue. If your interested in learning how to develop pop bip reports for forms6i, see http://bipublisher.blogspot.com/2008/03/bi-publisher-bip-in-oa-framework-part.html

So, what's happening here is that the bip api's are trying to create a temporary file in $XDO_TOP code tree which only has r-x permissions, hence a file not being able to be created.

The resolution was to setup the temp directory in the template manager (see below) and to do a graceful bounce of apache. Ironically afterwards, there was no issue except turning on the debugging so beware about this configuration in production environments if you have not setup temp directory!


java.io.FileNotFoundException: xdo-1225988068296.tmp (Permission denied)
at java.io.RandomAccessFile.open(Native Method)
at java.io.RandomAccessFile.(RandomAccessFile.java:204)
at java.io.RandomAccessFile.(RandomAccessFile.java:94)
at oracle.apps.xdo.dataengine.ScalableStringList.initSessionIfNecessary(ScalableStringList.java:53)
at oracle.apps.xdo.dataengine.StringList.(StringList.java:51)
at oracle.apps.xdo.dataengine.ScalableStringList.(ScalableStringList.java:38)
at oracle.apps.xdo.dataengine.StringList.createStringList(StringList.java:43)
at oracle.apps.xdo.dataengine.DataGroup.(DataGroup.java:76)
at oracle.apps.xdo.dataengine.DataTemplateParser.groupParser(DataTemplateParser.java:779)
at oracle.apps.xdo.dataengine.DataTemplateParser.dataStructureParser(DataTemplateParser.java:745)
at oracle.apps.xdo.dataengine.DataTemplateParser.templateParser(DataTemplateParser.java:324)
at oracle.apps.xdo.dataengine.XMLPGEN.setDataTemplate(XMLPGEN.java:599)
at oracle.apps.xdo.dataengine.DataProcessor.setDataTemplate(DataProcessor.java:193)
at oracle.apps.xdo.oa.util.DataTemplate.(DataTemplate.java:136)
at oracle.apps.xbol.bipublisher.api.XMLPublisherApi.oaDataEngine(XMLPublisherApi.java:193)
at oracle.apps.xbol.pfp.execsumm.webui.EXECSummGenerator.(EXECSummGenerator.java:92)
at oracle.apps.xbol.pfp.execsumm.webui.EXECSummCO.processRequest(EXECSummCO.java:35)
at oracle.apps.fnd.framework.webui.OAWebBeanHelper.processRequest(OAWebBeanHelper.java:587)
at oracle.apps.fnd.framework.webui.OAWebBeanContainerHelper.processRequest(OAWebBeanContainerHelper.java:247)
at oracle.apps.fnd.framework.webui.OAPageLayoutHelper.processRequest(OAPageLayoutHelper.java:1136)
at oracle.apps.fnd.framework.webui.beans.layout.OAPageLayoutBean.processRequest(OAPageLayoutBean.java:1569)
at oracle.apps.fnd.framework.webui.OAWebBeanHelper.processRequestChildren(OAWebBeanHelper.java:959)
at oracle.apps.fnd.framework.webui.OAWebBeanHelper.processRequestChildren(OAWebBeanHelper.java:926)
at oracle.apps.fnd.framework.webui.OAWebBeanHelper.processRequest(OAWebBeanHelper.java:646)
at oracle.apps.fnd.framework.webui.OAWebBeanContainerHelper.processRequest(OAWebBeanContainerHelper.java:247)
at oracle.apps.fnd.framework.webui.beans.form.OAFormBean.processRequest(OAFormBean.java:385)
at oracle.apps.fnd.framework.webui.OAWebBeanHelper.processRequestChildren(OAWebBeanHelper.java:959)
at oracle.apps.fnd.framework.webui.OAWebBeanHelper.processRequestChildren(OAWebBeanHelper.java:926)
at oracle.apps.fnd.framework.webui.OAWebBeanHelper.processRequest(OAWebBeanHelper.java:646)
at oracle.apps.fnd.framework.webui.OAWebBeanContainerHelper.processRequest(OAWebBeanContainerHelper.java:247)
at oracle.apps.fnd.framework.webui.beans.OABodyBean.processRequest(OABodyBean.java:353)
at oracle.apps.fnd.framework.webui.OAPageBean.processRequest(OAPageBean.java:2335)
at oracle.apps.fnd.framework.webui.OAPageBean.preparePage(OAPageBean.java:1734)
at oracle.apps.fnd.framework.webui.OAPageBean.preparePage(OAPageBean.java:508)
at oracle.apps.fnd.framework.webui.OAPageBean.preparePage(OAPageBean.java:429)
at _oa__html._OA._jspService(_OA.java:85)
at oracle.jsp.runtime.HttpJsp.service(HttpJsp.java:119)
at oracle.jsp.app.JspApplication.dispatchRequest(JspApplication.java:417)
at oracle.jsp.JspServlet.doDispatch(JspServlet.java:267)
at oracle.jsp.JspServlet.internalService(JspServlet.java:186)
at oracle.jsp.JspServlet.service(JspServlet.java:156)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:588)
at oracle.jsp.provider.Jsp20RequestDispatcher.forward(Jsp20RequestDispatcher.java:162)
at oracle.jsp.runtime.OraclePageContext.forward(OraclePageContext.java:187)
at _oa__html._RF._jspService(_RF.java:102)
at oracle.jsp.runtime.HttpJsp.service(HttpJsp.java:119)
at oracle.jsp.app.JspApplication.dispatchRequest(JspApplication.java:417)
at oracle.jsp.JspServlet.doDispatch(JspServlet.java:267)
at oracle.jsp.JspServlet.internalService(JspServlet.java:186)
at oracle.jsp.JspServlet.service(JspServlet.java:156)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:588)
at org.apache.jserv.JServConnection.processRequest(JServConnection.java:456)
at org.apache.jserv.JServConnection.run(JServConnection.java:294)
at java.lang.Thread.run(Thread.java:534)


oracle.apps.fnd.framework.OAException: EXECSummGenerator - Failed to generate xml file
at oracle.apps.xbol.pfp.execsumm.webui.EXECSummGenerator.(EXECSummGenerator.java:97)
at oracle.apps.xbol.pfp.execsumm.webui.EXECSummCO.processRequest(EXECSummCO.java:35)
at oracle.apps.fnd.framework.webui.OAWebBeanHelper.processRequest(OAWebBeanHelper.java:587)
at oracle.apps.fnd.framework.webui.OAWebBeanContainerHelper.processRequest(OAWebBeanContainerHelper.java:247)
at oracle.apps.fnd.framework.webui.OAPageLayoutHelper.processRequest(OAPageLayoutHelper.java:1136)
at oracle.apps.fnd.framework.webui.beans.layout.OAPageLayoutBean.processRequest(OAPageLayoutBean.java:1569)
at oracle.apps.fnd.framework.webui.OAWebBeanHelper.processRequestChildren(OAWebBeanHelper.java:959)
at oracle.apps.fnd.framework.webui.OAWebBeanHelper.processRequestChildren(OAWebBeanHelper.java:926)
at oracle.apps.fnd.framework.webui.OAWebBeanHelper.processRequest(OAWebBeanHelper.java:646)
at oracle.apps.fnd.framework.webui.OAWebBeanContainerHelper.processRequest(OAWebBeanContainerHelper.java:247)
at oracle.apps.fnd.framework.webui.beans.form.OAFormBean.processRequest(OAFormBean.java:385)
at oracle.apps.fnd.framework.webui.OAWebBeanHelper.processRequestChildren(OAWebBeanHelper.java:959)
at oracle.apps.fnd.framework.webui.OAWebBeanHelper.processRequestChildren(OAWebBeanHelper.java:926)
at oracle.apps.fnd.framework.webui.OAWebBeanHelper.processRequest(OAWebBeanHelper.java:646)
at oracle.apps.fnd.framework.webui.OAWebBeanContainerHelper.processRequest(OAWebBeanContainerHelper.java:247)
at oracle.apps.fnd.framework.webui.beans.OABodyBean.processRequest(OABodyBean.java:353)
at oracle.apps.fnd.framework.webui.OAPageBean.processRequest(OAPageBean.java:2335)
at oracle.apps.fnd.framework.webui.OAPageBean.preparePage(OAPageBean.java:1734)
at oracle.apps.fnd.framework.webui.OAPageBean.preparePage(OAPageBean.java:508)
at oracle.apps.fnd.framework.webui.OAPageBean.preparePage(OAPageBean.java:429)
at _oa__html._OA._jspService(_OA.java:85)
at oracle.jsp.runtime.HttpJsp.service(HttpJsp.java:119)
at oracle.jsp.app.JspApplication.dispatchRequest(JspApplication.java:417)
at oracle.jsp.JspServlet.doDispatch(JspServlet.java:267)
at oracle.jsp.JspServlet.internalService(JspServlet.java:186)
at oracle.jsp.JspServlet.service(JspServlet.java:156)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:588)
at oracle.jsp.provider.Jsp20RequestDispatcher.forward(Jsp20RequestDispatcher.java:162)
at oracle.jsp.runtime.OraclePageContext.forward(OraclePageContext.java:187)
at _oa__html._RF._jspService(_RF.java:102)
at oracle.jsp.runtime.HttpJsp.service(HttpJsp.java:119)
at oracle.jsp.app.JspApplication.dispatchRequest(JspApplication.java:417)
at oracle.jsp.JspServlet.doDispatch(JspServlet.java:267)
at oracle.jsp.JspServlet.internalService(JspServlet.java:186)
at oracle.jsp.JspServlet.service(JspServlet.java:156)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:588)
at org.apache.jserv.JServConnection.processRequest(JServConnection.java:456)
at org.apache.jserv.JServConnection.run(JServConnection.java:294)
at java.lang.Thread.run(Thread.java:534)

1 comment:

Anonymous said...

No need to restart the Apache afterwards.