Wednesday Oct 23, 2013

What causes a JBO-29000 Error

The JBO prefix indicates the message was generated by Oracle Business Components for Java (BC4J). In the early versions of JDeveloper the BC4J was a framework for building and customizing domain-specific components. The BC4J framework evolved into the Application Development Framework (ADF), which is an end-to-end Java EE framework that simplifies application development by providing out-of-the-box infrastructure services and a visual and declarative development experience.  The JBO prefix has been kept for the errors generated from the ADF framework. The JBO-29000 is the following:

JBO-29000: JboException

Cause: If an unexpected exception occurs during a framework operation, this exception is thrown, with the unexpected exception included in the details of this exception.

Action: Fix the cause for the exception in the details for this JboException.

The JBO-29000 JboException is a generic error message that is a wrapper for the actual cause of the issue. The error condition or error code in the message details must be used to find the cause and solution for the issue.  The framework is reporting that it has received an unexpected exception from outside the framework component.  This could be a database error or a Java code exception.  The error trace and code must be analyzed to determine the true cause of the issue.

Example 1:

oracle.jbo.JboException: JBO-29000: Unexpected exception caught: java.sql.SQLDataException, msg=ORA-01882: timezone region not found
    at oracle.jbo.server.OracleSQLBuilderImpl.setSessionTimeZone(OracleSQLBuilderImpl.java:5490)
    at oracle.jbo.server.DBTransactionImpl.refreshConnectionMetadata(DBTransactionImpl.java:5020)
    at oracle.jbo.server.DBTransactionImpl.initTransaction(DBTransactionImpl.java:1132)
    at oracle.jbo.server.DBTransactionImpl.initTxn(DBTransactionImpl.java:6372)
    at oracle.jbo.server.DBTransactionImpl2.connectToDataSource(DBTransactionImpl2.java:286)
Truncated. see log file for complete stacktrace

The cause of the issue is the database reported error: "ORA-01882: timezone region not found" which is an incorrect configuration of the timezone. If the database cannot find it from the V$TIMEZONE_NAMES table, it will generate the error ORA-01882: timezone not found, see Note 756075.1.  

Example 2:

oracle.jbo.JboException: JBO-29000: Unexpected exception caught: java.lang.NullPointerException, msg=null
    at oracle.adf.model.binding.DCIteratorBinding.reportException(DCIteratorBinding.java:372)
    at oracle.adf.model.binding.DCIteratorBinding.callInitSourceRSI(DCIteratorBinding.java:1670)
    at oracle.adf.model.binding.DCIteratorBinding.internalGetRowSetIterator(DCIteratorBinding.java:1630)
    at oracle.adf.model.binding.DCIteratorBinding.getRowSetIterator(DCIteratorBinding.java:1594)
    at oracle.adf.model.binding.DCIteratorBinding.getNavigatableRowIterator(DCIteratorBinding.java:1887)
    at oracle.jbo.uicli.binding.JUCtrlHierBinding.bringNodeToRangeKeyPath(JUCtrlHierBinding.java:771)
    at oracle.adfinternal.view.faces.model.binding.FacesCtrlHierBinding.bringNodeToRangeKeyPath(FacesCtrlHierBinding.java:101)
    at oracle.adfinternal.view.faces.model.binding.RowDataManager.setRowKey(RowDataManager.java:134)
    at oracle.adfinternal.view.faces.model.binding.FacesCtrlHierBinding$FacesModel.setRowKey(FacesCtrlHierBinding.java:633)
    at org.apache.myfaces.trinidad.component.UIXCollection.setRowKey(UIXCollection.java:425)
    at oracle.adfinternal.view.faces.renderkit.rich.TableRendererUtils.decodeSelectedRowKeys(TableRendererUtils.java:660)
    at oracle.adfinternal.view.faces.renderkit.rich.table.BaseTableRenderer.decodeIncompatiblePropertyKey(BaseTableRenderer.java:232)
    at oracle.adf.view.rich.render.RichRenderer.decode(RichRenderer.java:260)
    at org.apache.myfaces.trinidad.component.UIXComponentBase.__rendererDecode(UIXComponentBase.java:1121)

This issue was caused by not setting a Primary Key (PK)  for the View Object (VO.)  Primary Key is mandatory for VO. When VO gets passivation/deactivtion, the exception raises, See Note 1579918.1.

Since the JBO-29000 error can have many different causes, the details of the error message must be examined to lead to the proper solution for the issue, and a search must be made using the error message details along with the JBO-29000 to find information on the issue.

About


This is the official blog of the Java Development Proactive Services Team. Here we will provide information on our activities, publications, product related information and more. We look forward to your feedback to improve what we do!

Search

Archives
« October 2013 »
SunMonTueWedThuFriSat
  
1
2
3
4
5
6
8
10
11
12
13
14
15
16
17
18
19
20
21
22
24
25
26
27
28
29
30
31
  
       
Today