Some main considerations that you must bear in mind when choosing which JDBC driver to use for your application or applet are:
If you are writing an applet, you must use the JDBC Thin driver. JDBC OCI-based driver classes cannot be downloaded to a Web browser, because they call native (C language) methods.
1> If you desire maximum portability, then choose the JDBC Thin driver. You can connect to an Oracle8 data server from either an application or an applet using the JDBC Thin driver.
2> If you are writing an application and need maximum performance, then choose the JDBC OCI driver.
3> If you are running in the Oracle database server using the Oracle 8.1.5 Java VM, then choose the JDBC Server driver.
Type 2 drivers are generally faster than type 4 drivers because they are directly executed by the computer's CPU.
The type 4 driver's are compiled into byte code and are executed on the Java Virtual Machine, which is then executed by the computer's CPU. The JVM adds an additional layer that affects its performance.
Because the OCI driver uses native code libraries, it executes faster than the thin driver.
There is a significant performance difference between the two drivers when stored procedures are used. The thin driver can take up to twice as long as the OCI driver to execute a stored procedure. Response time can deteriorate quickly if multiple stored procedures are called.
Use the OCI driver if performance is critical to your application or you make heavy use of stored procedures.
Monday, March 23, 2009
JDBC : Drivers
JDBC drivers are divided into four types or levels. The different types of jdbc drivers are:
Type 1: JDBC-ODBC Bridge driver (Bridge)
Type 2: Native-API/partly Java driver (Native)
Type 3: AllJava/Net-protocol driver (Middleware)
Type 4: All Java/Native-protocol driver (Pure)
Type 1 : JDBC Driver(JDBC-ODBC Bridge driver):
The Type 1 driver translates all JDBC calls into ODBC calls and sends them to the ODBC driver. ODBC is a generic API. The JDBC-ODBC Bridge driver is recommended only for experimental use or when no other alternative is available.
Advantage
The JDBC-ODBC Bridge allows access to almost any database, since the database's ODBC drivers are already available.
Disadvantages
1. Since the Bridge driver is not written fully in Java, Type 1 drivers are not portable.
2. A performance issue is seen as a JDBC call goes through the bridge to the ODBC driver, then to the database, and this applies even in the reverse process. They are the slowest of all driver types.
3. The client system requires the ODBC Installation to use the driver.
4. Not good for the Web.
Type 2 JDBC Driver(Native-API/partly Java driver):
The distinctive characteristic of type 2 jdbc drivers are that Type 2 drivers convert JDBC calls into database-specific calls i.e. this driver is specific to a particular database. Some distinctive characteristic of type 2 jdbc drivers are shown below. Example: Oracle will have oracle native api.
Advantage
The distinctive characteristic of type 2 jdbc drivers are that they are typically offer better performance than the JDBC-ODBC Bridge as the layers of communication (tiers) are less than that of Type1 and also it uses Native api which is Database specific.
Disadvantage
1. Native API must be installed in the Client System and hence type
2 drivers cannot be used for the Internet. 2. Like Type 1 drivers, it’s not written in Java Language which forms a portability issue.
3. If we change the Database we have to change the native api as it is specific to a database
4. Mostly obsolete now5. Usually not thread safe.
Type 3 JDBC Driver(All Java/Net-protocol driver):
Type 3 database requests are passed through the network to the middle-tier server. The middle-tier then translates the request to the database. If the middle-tier server can in turn use Type1, Type 2 or Type 4 drivers.
Advantage
1. This driver is server-based, so there is no need for any vendor database library to be present on client machines.
2. This driver is fully written in Java and hence Portable. It is suitable for the web.
3. There are many opportunities to optimize portability, performance, and scalability.
4. The net protocol can be designed to make the client JDBC driver very small and fast to load.
5. The type 3 driver typically provides support for features such as caching (connections, query results, and so on), load balancing, and advanced system administration such as logging and auditing.
6. This driver is very flexible allows access to multiple databases using one driver.
7. They are the most efficient amongst all driver types.
Disadvantage
It requires another server application to install and maintain. Traversing the recordset may take longer, since the data comes through the backend server.
Type 4 JDBC Driver(Native-protocol/all-Java driver):
The Type 4 uses java networking libraries to communicate directly with the database server.
Advantage
1. The major benefit of using a type 4 jdbc drivers are that they are completely written in Java to achieve platform independence and eliminate deployment administration issues. It is most suitable for the web.
2. Number of translation layers is very less i.e. type 4 JDBC drivers don't have to translate database requests to ODBC or a native connectivity interface or to pass the request on to another server, performance is typically quite good.
3. You don’t need to install special software on the client or server. Further, these drivers can be downloaded dynamically.
Disadvantage
4 drivers, the user needs a different driver for each database.
Type 1: JDBC-ODBC Bridge driver (Bridge)
Type 2: Native-API/partly Java driver (Native)
Type 3: AllJava/Net-protocol driver (Middleware)
Type 4: All Java/Native-protocol driver (Pure)
Type 1 : JDBC Driver(JDBC-ODBC Bridge driver):
The Type 1 driver translates all JDBC calls into ODBC calls and sends them to the ODBC driver. ODBC is a generic API. The JDBC-ODBC Bridge driver is recommended only for experimental use or when no other alternative is available.
Advantage
The JDBC-ODBC Bridge allows access to almost any database, since the database's ODBC drivers are already available.
Disadvantages
1. Since the Bridge driver is not written fully in Java, Type 1 drivers are not portable.
2. A performance issue is seen as a JDBC call goes through the bridge to the ODBC driver, then to the database, and this applies even in the reverse process. They are the slowest of all driver types.
3. The client system requires the ODBC Installation to use the driver.
4. Not good for the Web.
Type 2 JDBC Driver(Native-API/partly Java driver):
The distinctive characteristic of type 2 jdbc drivers are that Type 2 drivers convert JDBC calls into database-specific calls i.e. this driver is specific to a particular database. Some distinctive characteristic of type 2 jdbc drivers are shown below. Example: Oracle will have oracle native api.
Advantage
The distinctive characteristic of type 2 jdbc drivers are that they are typically offer better performance than the JDBC-ODBC Bridge as the layers of communication (tiers) are less than that of Type1 and also it uses Native api which is Database specific.
Disadvantage
1. Native API must be installed in the Client System and hence type
2 drivers cannot be used for the Internet. 2. Like Type 1 drivers, it’s not written in Java Language which forms a portability issue.
3. If we change the Database we have to change the native api as it is specific to a database
4. Mostly obsolete now5. Usually not thread safe.
Type 3 JDBC Driver(All Java/Net-protocol driver):
Type 3 database requests are passed through the network to the middle-tier server. The middle-tier then translates the request to the database. If the middle-tier server can in turn use Type1, Type 2 or Type 4 drivers.
Advantage
1. This driver is server-based, so there is no need for any vendor database library to be present on client machines.
2. This driver is fully written in Java and hence Portable. It is suitable for the web.
3. There are many opportunities to optimize portability, performance, and scalability.
4. The net protocol can be designed to make the client JDBC driver very small and fast to load.
5. The type 3 driver typically provides support for features such as caching (connections, query results, and so on), load balancing, and advanced system administration such as logging and auditing.
6. This driver is very flexible allows access to multiple databases using one driver.
7. They are the most efficient amongst all driver types.
Disadvantage
It requires another server application to install and maintain. Traversing the recordset may take longer, since the data comes through the backend server.
Type 4 JDBC Driver(Native-protocol/all-Java driver):
The Type 4 uses java networking libraries to communicate directly with the database server.
Advantage
1. The major benefit of using a type 4 jdbc drivers are that they are completely written in Java to achieve platform independence and eliminate deployment administration issues. It is most suitable for the web.
2. Number of translation layers is very less i.e. type 4 JDBC drivers don't have to translate database requests to ODBC or a native connectivity interface or to pass the request on to another server, performance is typically quite good.
3. You don’t need to install special software on the client or server. Further, these drivers can be downloaded dynamically.
Disadvantage
4 drivers, the user needs a different driver for each database.
Sunday, March 8, 2009
11G : ADF Error Code (JBO) ?
Business Components for Java Error Messages
All messages are prefixed by text that indicates the area of the product where the error occurred. In this case, the prefix "JBO-" signifies that this message was generated by Oracle Business Components for Java.
JBO-25000: UnknownSQLTypeException
Reason: SQLType name passed to NullValue constructor is invalid.
Solution: Provide a valid SQLType name. See oracle.jbo.server.OracleTypeMapEntries.java for a list of valid SQLType names. Names are like "VARCHAR", "CHAR", "NUMBER", etc.
JBO-25001: NameClashException
Reason: A business component of this name already exists in the application module.
Solution: Provide a different name for the business component. If you provide a null value or null string for the name, the framework will create a unique name within the scope of the application module.
JBO-25002: NoDefException
Reason: No business component definition found with the given name in the project classpath.
Solution: Provide a correct name for the business component definition. If the definition is not in the classpath, you must include it there. Names are of the format myProjectPackage.BusinessPackage.BusinessComponent. This error can also occur if there is a case conflict, as when the database expects "DEPTNO" and receives "Deptno" instead.
JBO-25003: NoObjException
Reason: No business component object found with the given name in the application module.
Solution: Provide a different name for the business component object or create a new business component with the given name.
JBO-25004: InvalidDefNameException
Reason: An attempt has been made to associate a definition name with a type for which it is not valid.
Solution: The name should be a valid java-identifier with no spaces or punctuation. Names are of the format myProjectPackage.BusinessPackage.BusinessComponent
JBO-25005: InvalidObjNameException
Reason: An attempt has been made to associate a business component name with an object for which it is not valid.
Solution: The name should be a valid java identifier with no spaces or punctuation. Names are of the format myProjectPackage.BusinessPackage.BusinessComponent.
JBO-25006: InvalidParamException
Reason: The parameters passed to a business component method are invalid.
Solution: See the Javadoc for the method that throws this exception. Expand the call-stack for the correct parameters. e.g., DBTransSolutionImpl.executeCommand() throws this exception when command parameter is null or an empty String.
JBO-25007: InvalidOperException
Reason: Resetting row validation for a default RowIterator of a view object or a RowSet is not permitted.
Solution: Reset the RowValidation flag for the RowSet or view object. This will create another iterator for the RowSet or view object to navigate to another row without validating.
JBO-25008: InvalidOperException
Reason: An attempt has been made to remove a view object that is participating in a view link.
Solution: Remove the view link before removing the view object.
JBO-25009: oracle.jbo.domain.DataCreationException
Reason: A domain object could not be created with the given value. Either a domain constructor that accepts the given value does not exist, or there is no conversion method in the domain object for the given value type, or the domain's constructor threw an unexpected exception.
Solution: Confirm that the value being passed is valid with respect to the domain-type being created. e.g., passing a String value like "One" to the oracle.jbo.domain.Number constructor will throw this exception.
JBO-25010: oracle.jbo.domain.DomainValidationException
Reason: Validation failed with the given value in a domain constructor. This exception is thrown in the validate() method of a domain type.
Solution: Provide a valid value for the domain type.
JBO-25011: InvalidOperException
Reason: An attempt has been made to invoke an invalid navigation method for a forward-only view object or RowSet.
Solution: Either remove the forward-only setting for the view object or RowSet, or do not invoke navigation methods other than next() on the forward-only view object or RowSet.
JBO-25012: InvalidOperException
Reason: The client has attempted to locate view rows that has the given entity row as the primary entity row. However, it has been discovered that the entity row's entity definition does not match the entity definition of the view object's primary entity object base.
Solution: The entity row used to locate view rows must have be based on the same entity definition.
JBO-25013: TooManyObjectsException
Reason: Attempting to add a new entity to the cache with the primary key the same as an existing entity. This exception is thrown when uniquing a newly fetched/created entity with the cached set of entities.
Solution: The primary key value may not be unique for this entity-type. Fix by adding more attributes to the Key definition for this entity type, so that each row for this entity is uniquely identifiable. Or fix the primary key value so that this entity has a unique key identifier.
JBO-25014: RowInconsistentException
Reason: Comparison of the cached entity failed with the values in the database for that entity. This could happen when another user or operation has committed modifications to the same entity-row in the database. This exception can also be thrown if the equals() method on one of the domain-type attributes in the entity fails.
Solution: Choose from the following options:
Verify that another user or operation has not modified the same row in the database. If this entity has attributes of a domain type verify that the equals() method on these domains do not fail when comparing the existing cached value with the newly fetched value.
For any attributes/columns that are updated by the database, modify the entity attribute definition by selecting Refresh after update on the Attribute Settings page of the Entity Object Wizard.
Use view.executeQuery() frequently, especially after any operations that result in data being changed.
JBO-25015: InvalidOperException
Reason: Attempting to execute a query for a view object or RowSet after closing or removing the view object or RowSet.
Solution: Verify that the view object or RowSet is not removed or closed.
JBO-25016: ReadOnlyViewObjectException
Reason: Attempting to modify data for a view object which is declared to be read only. This includes creating a new row for this view object, removing a Row or modifying attributes of a ViewRow for this view object.
Solution: To modify the data, create a view object with ReadOnly flag set to false.
JBO-25017: RowCreateException
Reason: An unexpected exception occurred while creating a new entity instance.
Solution: The entity may not have a public default constructor. Fix the Reason for InstantiationException or IllegalAccessException that appears in the details of this exception.
JBO-25018: RowCreateException
Reason: An unexpected exception occurred while creating a new ViewRow instance.
Solution: The ViewRow may not have a public default constructor. Fix the Reason for InstantiationException or IllegalAccessException that appears in the details of this exception.
JBO-25019: RowNotFoundException
Reason: Attempting to lock a non-existing row in the database. This could occur when the cache has an entity which was subsequently deleted from the database by another user or operation.
Solution: Remove the current entity from the entity-cache by calling remove(). Or re-synchronize the cache with the database, by rolling-back the current transSolution or by committing the existing set of changes and then dropping the entity-cache.
JBO-25020: RowNotFoundException
Reason: Attempting to find a referenced entity in the ViewRow failed due to a changed foreign-key value.
Solution: Provide a valid foreign key value or remove the current one.
JBO-25021: oracle.jbo.domain.DataCreationException
Reason: A domain object could not be created with the given value. Either a domain-constructor that accepts the given value does not exist, or there is no conversion method in the domain object for the given value type, or the domain's constructor threw an unexpected exception.
Solution: Confirm that the value being passed is valid with respect to the domain-type being created. e.g., passing a String value like "One" to oracle.jbo.domain.Number constructor will throw this exception.
JBO-25022: ViewLinkAlreadyExistsException
Reason: Attempting to set the Master RowSet for this RowSet more than once.
Solution: Do not invoke setMasterRowSetIterator more than once on a RowSet.
JBO-25023: oracle.jbo.domain.GenericDomainException
Reason: An expected domain exception occurred.
Solution: Contact Business Components for Java Technical Support.
JBO-25024: JboException
Reason: Attempting to use an obsolete TypeMap constructor.
Solution: Verify that the type maps in use for this version of framework is compatible. See example type maps in oracle.jbo.server.OracleTypeMapEntries.
JBO-25025: ReadXMLException
Reason: An error occurred during reading the XML data for a view object. This exception may contain other ReadXMLExceptions.
Solution: Fix the contained Row- or Attribute-level exceptions in the details for this exception.
JBO-25026: RowReadXMLException
Reason: An error occurred during reading the XML data for a ViewRow. This exception may contain other ReadXMLExceptions for contained RowSets or Attributes.
Solution: Fix the RowSet- or Attribute-level exceptions in the details for this exception.
JBO-25027: AttributeReadXMLException
Reason: An error occurred during reading the XML data for an attribute of a ViewRow. This exception may contain other JboExceptions thrown from the set() method for this attribute.
Solution: Fix the JboException in the details for this exception.
JBO-25028: oracle.jbo.domain.DataCreationException
Reason: A domain object could not be created with the given value. Either a domain-constructor that accepts the given value does not exist, or there is no conversion method in the domain object for the given value type, or the domain's constructor threw an unexpected exception.
Solution: Confirm that the value being passed, is valid with respect to the domain-type being created. e.g., passing a String value like "One" to oracle.jbo.domain.Number constructor will throw this exception.
JBO-25029: oracle.jbo.domain.DataCreationException
Reason: The named data class (may be a domain) could not be found.
Solution: Make sure that the data class is accessible from the CLASSPATH and is a valid data class.
JBO-25030: InvalidOwnerException
Reason: Could not find the container entity for this entity, as this entity is a detail in a composition association. This could occur while creating a new entity instance by passing a non-existing master key value, or when updating the foreign-key value in this entity and there is no master entity with that foreign-key value.
Solution: Provide a valid foreign-key value to the create() method or setAttribute() method so that an appropriate master row is found for this entity.
JBO-25031: RowNotFoundException
Reason: The client has attempted to access an attribute of a view which is mapped to an entity row, but the corresponding entity row is null. If the view object consists of multiple entity object bases and if the secondary entity object bases are reference-only, the entity rows may be null if the FK linking the primary entity object to secondary entity objects is null.
Solution: In such a situation, the user is not allowed to access attributes of missing entity rows.
JBO-25032: JboSerializationException
Reason: Failure trying to make the application module state or transSolution state passive.
Solution: The passivation target store (Database, File or Memory) may have reported an exception. See the details of this exception for errors from the target store.
JBO-25033: JboSerializationException
Reason: Trying to activate the application module state or transSolution state failed.
Solution: The passivation target store (Database, File or Memory) may have reported an exception. See the details of this exception for errors from the target store. The given ID (in case of activation) may be invalid/not found.
JBO-25034: RowNotFoundException
Reason: The client has attempted to locate a row with a row handle, but the row is not found. This error may be raised if the client tries to take a row out of one query collection and use its handle to find a row in another query collection. Note that if the client calls executeQuery on a RowSet, it may receive a new query collection. Thus, you may get this error if the client retrieves a row from a RowSet, takes its row handle, calls executeQuery, and then tries to locate the row using the saved handle.
Solution: Make sure that your row handle is not stale.
JBO-25035: JboException
Reason: An application attempted to change an application module's passivation store after it had been initialized.
Solution:The passivation store (Database, File or Memory) may only be initialized once. If the customer application logic has not specified a passivation store when the serialization framework is invoked, the passivation store is initialized by the Business Components for Java framework. Check the client application logic for invocations of:
ApplicationModuleImpl.setStoreForPassiveState
which are invoked after the application module passivation store has been initialized.
JBO-25036: InvalidObjAccessException
Reason: An application invoked an object operation that is not supported in the object's current state.
Solution: Remove the invalid operation invocation or provide exception handling logic.
JBO-25200: NotConnectedException
Reason: The application module is not connected to the database.
Solution: Provide a valid set of connection credentials to connect to a database.
JBO-25201: AlreadyConnectedException
Reason: Trying to re-establish a database connection.
Solution: Disconnect the current database connection before trying to re-establish the JDBC connection.
JBO-25221: JboException
Reason: Attempting to call a method that is either not implemented or not supported.
Solution: This method is not available on the called object. E.g. setAttribute() in oracle.jbo.Key class is not implemented and will throw this exception.
JBO-25222: ApplicationModuleCreateException
Reason: There are a number of reasons the application module could not be created:
If your business components are deployed in local mode, they may not be on the classpath.
You may have unresolved classes on the server.
You may not have granted Java2 permissions.
Your Java pool size may be too small.
You may not have compiled your classes.
Solution: Depending on the Reason, chose from the following Solutions:
If your business components are deployed in local mode, they may not be on the classpath.If this is the Reason of the error, the exception will usually be followed by a different exception,
JBO-25002: Application Module not found.
If this occurs, make sure you've done all of the following:
Made a library for your business components.
Added a library to your client's project properties.
Included the library on the "libraries" page when you created a deployment profile for your client (whether your client was a web application or a command-line application).
Copied the library with your client to the target platform (whether your client was a web application or a command-line application).
Included all the files you copied (including the library) when you set the classpath on the target platform.
You may have unresolved classes on the server.Try the following procedure to resolve any unresolved classes on Oracle8i.
In the Navigator, right-click the JDBC connection you used to deploy the Business Components project.
Choose Invoke SQL*Plus from the context menu.
Copy and paste the following SQL*Plus script into the SQL*Plus window.
set termout offset echo offset heading offset pages 999set linesize 2000set feedback offselect 'alter java class "' replace(dbms_java.longname(object_name),'/','.')'" resolve;'from user_objectswhere object_type='JAVA CLASS'and status = 'INVALID'spool C:\temp\resolve.sql/spool offset echo onset termout on@C:\temp\resolve.sql
You may not have granted Java2 permissions.If this is the Reason of the error, there will be permissions errors in the database trace file. To correct the problem, see the help topic "Granting Permissions on a Business Components EJB" for information on granting Java2 permissions.
Note: The location of the database trace file varies from installation to installation, but in a default Windows NT installation, the file will be in the directory ORACLE_HOME\admin\orcl\ udump and will have the form orcl????.trc.
Your Java pool size may be too smallBusiness Components for Java deployed as EJBs work best with a Java pool size of at least 50MB. Edit your init.ora file and check the java_pool_size parameter. If it is under 50MB, change it, restart your database, and try your connection again.
You may not have compiled your classesCompile your business component classes and try again.
JBO-25223: ApplicationModuleCreateException
Reason: When business components are running inside JServer, only one root application module may be created. This is beReason JServer (already) provides one transSolution context.
Solution: It is illegal to attempt to create multiple root transSolutions when running inside JServer.
JBO-25224: JboException
Reason: Trying to retain the application module state during a transSolution disconnect failed.
Solution: The disconnect and retain application module state target requires that no database state exist before the transSolution connection is closed. Examples of database state include open database cursors in non-forward only view objects, database locks, and uncommitted database changes. The client should clean up this state by fetching or resetting any open view objects and committing any uncommitted changes.
JBO-25226: ApplicationModuleCreateException
Reason: This application module definition contains recursive references to child application modules. For example, if application module definition appMod1 contains a child application module of appMod2, and appMod2 contains appMod1,this error will be raised.
Solution: Remove recursive application module definition references.
JBO-25301: InvalidOwnerException
Reason: While traversing the parenthood chain for application modules, a child application module was found with no container (parent) application module.
Solution: If this application has added custom business component classes, it may be that the application code is attempting to access a child application module before it is fully initialized. If this is not the case, this error probably represents some internal error in Business Components for Java framework, in which case contact Business Components for Java Technical Support.
JBO-25302: InvalidOwnerException
Reason: A business component is found without a container (parent) application module.
Solution: If this application has added custom business component classes, it may be that the application code is attempting to access a business component before it is fully initialized. If this is not the case, this error probably represents some internal error in Business Components for Java framework, in which case contact Business Components for Java Technical Support.
JBO-26000: JboException
Reason: Attempting to load metadata objects failed. It may have unexpected data or the XML data may be corrupt.
Solution: Verify that the XML metadata for various components is valid.
JBO-26001: NoXMLFileException
Reason: Could not open the named XML file for read.
Solution: 1. Make sure that the file is present. In particular, if the file is to be found in a zip/jar file, make sure that the Zip/JAR file is included in the CLASSPATH.
2. This error is also reported if the name of the XML file does not match the object Name specified in the XML file. If the file system support case insensitive file names (e.g., Windows NT), make sure that the file name matches the object Name in the XML file in case-sensitive fashion.
3. For a .JPX file, this error is reported if the JPX file is missing the JboProject XML tag. Check the JPX file to make sure that the valid tag is in there.
4. One XML file may be extending another XML file (specified by the Extends element in this XML file). This error is reported if the base XML file is not found.
5. When loading the XML file for a package (JboPackage tag), this error is reported if some unexpected error occurs while loading a containee.
In all of the above cases, a more descriptive message may be printed on Diagnostic. If you are not seeing Diagnostic messages, you can run your application with Diagnostic turned on, as in "java -Djbo.debugoutput=console ...", to see Diagnostic messages.
JBO-26002: PersistenceException
Reason: Some XML parsing exception (oracle.xml.parser.v2.XMLParseException) was thrown.
Solution: The XMLParseException information is output to Diagnostic. If you are not seeing diagnostic messages, you can run your application with diagnostic turned on, as in "java -Djbo.debugoutput=console ...", to see diagnostic messages.
JBO-26003: PersistenceException
Reason: An error occurred while loading entity object definitions. An attribute index in the Java class for this entity has a mismatch with the index in the definition, or an attribute index is missing in the Java class.
Solution: Ensure that the indices of attributes in the definition for this entity match the indices defined in the Java class for this entity.
JBO-26004: InvalidOperException
Reason: An attempt was made to set the base definition of another definition object, e.g., setting B's base definition to A (i.e., B Extends A). However, A already extends B. Setting a recursive (circular) subclassing relationship among definition objects is illegal.
Solution: Review your subclassing hierarchy of your definition objects and correct errors.
JBO-26005: PersistenceException
Reason: The fetch mode specified in the view definition XML file is not valid.
Solution: Check the content of the XML file for the view definition. Look for an XML element named "FetchMode". Make sure that the value for that element is valid. Valid values are: "FETCH_AS_NEEDED", "FETCH_ALL", and "FETCH_DEFAULT".
JBO-26006: PersistenceException
Reason: The fetch size specified in the view definition XML file is not valid.
Solution: Check the content of the XML file for the view definition. Look for an XML element named "FetchSize". Make sure that the value for the element is a positive integer.
JBO-26007: PersistenceException
Reason: The maximum fetch size specified in the view definition XML file is not valid.
Solution: Check the content of the XML file for the view definition. Look for an XML element named "MaxFetchSize". Make sure that the value for the element is a non-negative integer, or "MAX_FETCH_UNLIMITED", or "MAX_FETCH_DEFAULT". A MaxFetchSize of 0 is the same as MAX_FETCH_UNLIMITED.
JBO-26008: PersistenceException
Reason: A problem is found in resolving a view link definition or an association. In case of a view link, this error may be Reasond by the fact that the source or destination view object cannot found. Or, if the view link ends have attribute names, this error may indicate that the named attributes cannot be found. Similarly, for an association, this error indicates that either source or destination entity object or attributes involved in the association cannot be found.
Solution: Make sure the XML definition for the view link/association has correct view object/entity object/attribute names.
JBO-26009: PersistenceException
Reason: This error occurs if the application uses meta object serialization files (.ser files) instead of XML files. It indicates that after the .ser file is deserialized, the top level object returned from deserialization is not an instance of oracle.jbo.server.xml.JboElementImpl.
Solution: This probably means that the .ser file is corrupt.
JBO-26010: PersistenceException
Reason: Entity attribute name in the view definition XML file is invalid or is not found.
Solution: Make sure that the entity name is valid. Also, check to make sure that the named attribute does exist in the entity object. The entity object is identified by the EntityUsage element.
JBO-26011: PersistenceException
Reason: Attribute definition found in XML file is invalid. It is missing SQLType value.
Solution: Correct the error in the XML file.
JBO-26012: PersistenceException
Reason: The view link definition in the XML file is missing either the source or destination view link end. For a view link XML file, two elements named ViewLinkDefEnd should be found.
Solution: Correct the error in the XML file.
JBO-26013: PersistenceException
Reason: Meta object name passed for lookup is invalid.
Solution: Normally, the meta object name is a dot-separated name of the meta object. For an entity object named Emp in package1.example, the correct name would be "package1.example.Emp". To correct, locate where the invalid name is coming from (could be meta object names mentioned in an XML file, or the name of the project, etc.) and change the name to a valid one.
JBO-26016: InvalidOperException
Reason: You cannot set customer query (calling setQuery()) on a view object if it is the detail view object in a master detail view link.
Solution: Do not call setQuery() if the view object is a detail.
JBO-26017: PersistenceException
Reason: An entity association definition in an XML file is invalid. In particular, this error means that either of the two association ends ("AssociationEnd" elements in the XML file) are missing "Attributes", which lists source or destination attributes.
Solution: Correct the error(s) in the XML file.
JBO-26018: InvalidOperException
Reason: An attempt was made to post a row with no attribute set. Some databases (in particular Oracle) do not allow an INSERT statement with no VALUE specified.
Solution: Set some attributes on the row before attempting to insert it into the database.
JBO-26019: JboException
Reason: Attempting to remove a master which has detail entities. In the case of a composition, a master cannot be removed if it has details.
Solution: Remove all the details of this master by accessing the details via an association and removing all of them.
JBO-26020: InvalidOperException
Reason: The application code tried to take a row from one row set (or view object) and insert it into another row set (view object). In response, the framework will make a "copy" of the row in the new row set. This new row will share references to the underlying entity objects. However, if the source and destination row sets do not share any entity object bases at all, this operation will fail as it does not find any entity rows to share.
Solution: When attempting to take a row from one row set and insert into another, make sure that they share at least one entity object base.
JBO-26021: PersistenceException
Reason: A NullPointerException was thrown while parsing an XML file. A possible Reason for this is that the DTD file is missing (oracle.jbo.dtd.jbo*.dtd).
Solution: Make sure the appropriate DTD file is present.
JBO-26022: CustomClassNotFoundException
Reason: Custom class could not be found and loaded. The custom class may be for a component (e.g., view object), a definition (e.g., view definition), or a row (e.g., view row, entity row).
Solution: Make sure that the named class is reachable from the CLASSPATH. The detail exception (if present) will give you more specific reasons why the attempt to locate and load the custom class failed.
JBO-26023: CustomClassNotFoundException
Reason: Custom class was found and loaded, but it is invalid in that it is not assignable to a framework (super) class.
Solution: Make sure that the custom class subclasses the appropriate framework (super) class.
JBO-26024: PersistenceException
Reason: An error occurred while creating initial context. This error usually carries a detail exception which will give further information on the Reason of the error.
Solution: If Business Components for Java is running inside JServer, make sure that the database user (schema) has the setContextClassLoader permission. To grant this, the database system administrator can invoke the following PL/SQL procedure: EXEC DBMS_JAVA.GRANT_PERMISSION('&&1', 'SYS:java.lang.RuntimePermission', 'setContextClassLoader', null); /**
JBO-26025: PersistenceException
Reason: An error occurred while trying to get System properties. Specifically, System.getProperties() call failed.
Solution: If Business Components for Java is running inside JServer, make sure that the database user (schema) has the proper property permission. To grant this, database system can invoke the following PL/SQL procedure: EXEC DBMS_JAVA.GRANT_PERMISSION('&&1', 'SYS:java.util.PropertyPermission', '*', 'read');
JBO-26026: PersistenceException
Reason: An error occurred while trying to get load properties.
Solution: Check to see if the named properties file contains valid Java properties.
JBO-26030: AlreadyLockedException
Reason: This row has already been locked by another user or transSolution.
Solution: Try locking the row again and the operation should succeed after the other user or transSolution has released the lock.
JBO-26041: DMLException
Reason: Some database error occurred while posting (writing) an entity to the database. This error normally carries a detail exception from the database which will give further information about the database failure.
Solution: Look at the details of the exception and address the database problem.
JBO-26042: DMLException
Reason: A database failure occurred while trying to generate an object ID (OID) and object reference (REF). When a new row is created on an entity which maps to an Oracle object table, an OID and REF for the new row are generated. This executes a SQL statement like select a.oid, make_ref(, a.oid) ... Somehow, this statement is failing.
Solution: Check the following:
1. Are you using the right version of Oracle database?
2. Is the table in question an object table?
This error normally carries a detail exception from the database, which will give further information about the database failure. Take a look at the detail exception and address the database problem.
JBO-26043: DMLException
Reason: An attempt was made to generate an object ID (OID) and/or a reference (REF) on a database system that does not support Oracle objects.
Solution: Do not try to create OID or REF on a database system that does not support Oracle objects.
JBO-26044: DMLException
Reason: The application tried to get an estimated row count (getEstimatedRowCount()) on a row set. While building the appropriate query statement, executing it, and retrieving the estimated count, an error occurred. This error is accompanied by the SQL statement that Reasond the error. Also, it normally carries a detail exception from database, which will give further information about the database failure.
Solution: Take a look at the SQL statement and the detail exception and address the database problem.
JBO-26045: DMLException
Reason: A database occurred while trying to generate an object ID (OID) from the primary key. This operation is valid only if the table in question is an object table and if the table specifies that the reference (REF) is PK based.
Solution: Check the following:
1. Are you using the right version of Oracle database?
2. Is the table in question an object table?
3. Does this object table use a PK-based REF?
This error normally carries a detail exception from database which will give further information about the database failure. Take a look at the detail exception and address the database problem.
JBO-26060: DMLException
Reason: A SQLException occurred while trying to register a JDBC driver.
Solution: Fix the underlying SQLException.
JBO-26061: DMLException
Reason: A SQLException occurred while trying to open a JDBC connection.
Solution: Fix the underlying SQLException.
JBO-26062: DMLException
Reason: A SQLException occurred while trying to close a JDBC connection.
Solution: Fix the underlying SQLException.
JBO-26064: DMLException
Reason: A SQLException occurred while trying to close a JDBC connection.
Solution: Fix the underlying SQLException.
JBO-26065: DMLException
Reason: A SQLException occurred during the commit phase of this transSolution.
Solution: Fix the underlying SQLException.
JBO-26066: DMLException
Reason: A SQLException occurred during the rollback phase of this transSolution.
Solution: Fix the underlying SQLException.
JBO-26067: JboException
Reason: An exception occurred while adding a JDBC connection to a pool that was already full.
Solution: Modify the class that is using the pool to check the pool size before adding a new connection to the pool.
JBO-26068: JboException
Reason: The user attempted to return a connection to a pool that was not responsible for managing that connection.
Solution: Modify the class that is using the pool to ensure that the connection belongs to the pool before returning the connection to the pool.
JBO-26069: JboException
Reason: A client request was timed out while waiting for a connection to be returned to the pool.
Solution: Increase the maximum pool size in order to accommodate 2x the maximum expected active request size. /**
JBO-26070: DMLException
Reason: A SQLException occurred while setting up metadata JDBC statement.
Solution: Fix the underlying SQLException. There might be a datatype mismatch between the attributes of the view object and columns in the SQL for it.
JBO-26080: DMLException
Reason: An unexpected exception occurred while executing the SQL to fetch data for an entity instance or lock it.
Solution: Fix the Reason for the SQLException in the details of this exception.
JBO-26081: SQLDatumException
Reason: A SQLException occurred when converting data from jdbc to oracle.jbo.domain.Struct attributes.
Solution: Fix the conversion errors as suggested in SQLException.
JBO-26100: AfterCommitException
Reason: An exception occurred in the afterCommit notification phase of the transSolution.
Solution: Verify the exception in the details of this exception. Fix the failing afterCommit() overridden methods in the entities or transient TransSolutionListener objects registered with the transSolution to listen into the commit/rollback cycle.
JBO-26101: AfterPostException
Reason: An exception occurred in the afterPost phase of the transSolution.
Solution: Verify the exception in the details of this exception. Fix the failing afterPost() overridden methods in the entities or transient TransSolutionPostListener objects registered with the transSolution to listen into the post cycle.
JBO-26102: AfterRollbackException
Reason: An exception occurred in afterRollback notification phase of the transSolution.
Solution: Verify the exception in the details of this exception. Fix the failing afterCommit() overridden methods in the entities or transient TransSolutionListener objects registered with the transSolution to listen into the commit/rollback cycle.
JBO-27001: ReadOnlyAttrException
Reason: This association attribute is marked readonly.
Solution: Cannot modify the value of the association attribute as it is marked readonly.
JBO-27002: AttrSetValException
Reason: A custom validation rule failed to validate an attribute value.
Solution: Fix the attribute value so that it passes the custom validation rule.
JBO-27003: ValidationException
Reason: Modified or new entities in this view object failed to validate.
Solution: Fix the failing entity values and revalidate the view object.
JBO-27004: ReadOnlyAttrException
Reason: Attempting to modify a read-only entity-attribute.
Solution: DO not modify a readonly attribute value.
JBO-27005: ValidationException
Reason: Modified or new entities within this application module or nested application module failed to validate.
Solution: Fix the failing entities and then re-validate this application module.
JBO-27006: AttrValException
Reason: An attribute cannot be found by the given name during validation.
Solution: Entity meta-data could be corrupt as there is an attribute which is to be validated but no definition could be found for that attribute in the meta-data.
JBO-27007: ValidationException
Reason: Attempting to validate a View Row failed.
Solution: Fix the failing entities or attributes as found in the details of this exception.
JBO-27008: ReadOnlyAttrException
Reason: Attempting to modify a ViewRow attribute that is readonly
Solution: Either change the Updateable flag for the View Attribute or do not attempt to update readonly attributes.
JBO-27009: ValidationException
Reason: Attempting to validate entities and attributes failed during validation of buffered attributes in Deferred Validation mode. (Not available in 3.x)
Solution: Fix the failure cases.
JBO-27010: ValidatonException
Reason: For strings, the length of the string value provided for an attribute is more than the max-length this attribute expects. For Numeric values, the length of the value (in string form) is more than what the attribute expects.
Solution: Fix the attribute value with respect to the precision and scale information for the failing attribute.
JBO-27011: AttrSetValException
Reason: A validation rule for an attribute failed either due to an unexpected exception in validating the attribute with that rule, or due to failure in evaluating the NOT operation on the rule.
Solution: Fix the attribute value so that it validates against the failing rule.
JBO-27012: ValidationException
Reason: The custom method validator attached to an entity returned false, indicating a failure in the validation for that entity.
Solution: Fix the Reason for failure in the custom validation method for this attribute.
JBO-27013: ValidationException
Reason: The custom method validator attached to an attribute returned 'false' indicating a failure in validation for that attribute in the custom method.
Solution: Fix the Reason for failure in the custom validator method for this attribute.
JBO-27014: AttrValException
Reason: The attribute value cannot be null as it has been marked mandatory.
Solution: Provide non-null values for mandatory attributes.
JBO-27015: ValidationException
Reason: In validating a master, some child entities were found that could not be validated. This occurs only in the case when there is a composition association between the master and detail entities.
Solution: Fix the attribute values in the child entities so that they are valid when the child entities are validated by the master
JBO-27016: InvalidAttrKindException
Reason: An unexpected attribute kind found in the definition for a view object.
Solution: Fix the attribute kind information in the xml-metadata definition for attributes in this view object.
JBO-27017: KeyNotFoundException
Reason: While loading the meta-data definition for this entity, there was no attribute marked as the primary key.
Solution: Set at least one attribute as the primary key for this entity type, so that entities of this type can be uniquely identified.
JBO-27018: AttrSetValException
Reason: The type of attribute value provided as an argument to the set() method for this attribute is not an instance of the Java type that this attribute expects.
Solution: Convert the argument to a proper Java type, such that it is an instance of the Java type that this attribute expects.
JBO-27019: AttrGetValException
Reason: An unexpected exception occurred in setAttribute method. Getter methods should throw a subclass of JboException so that custom exception messages are thrown/shown to the caller. This exception could also be thrown if the getter is not a public Java method.
Solution: Do not throw any exception other than sub-classes of JboException from any business logic code in the getter method for an attribute. Also verify that the getter method is a public Java method.
JBO-27020:
Reason: An unexpected exception occurred in setAttribute method. Setter methods should throw a subclass of JboException so that custom exception messages are thrown/shown to the caller. This exception could also be thrown if the setter is not a public Java method.
Solution: Do not throw any exception other than sub-classes of JboException from any business logic code in the setter method for an attribute. Also verify that the setter method is a public Java method.
JBO-27021: AttributeLoadException
Reason: An unexpected exception occurred during fetching values from a JDBC-resultset into an attribute for a row object. There could be conversion errors between the return type from JDBC for the attribute and it's Java type.
Solution: Verify that the JDBC-SQL type and Java type for the attribute are compatible. Fix any conversion errors or domain exceptions that are in the details of this exception.
JBO-27022: AttributeLoadException
Reason: An unexpected exception occurred during fetching values from a JDBC-resultset into an attribute for a row object. There could be conversion errors between the return type from JDBC for the attribute and it's Java type.
Solution: Verify that the JDBC-SQL type and Java type for the attribute are compatible. Fix any conversion errors or domain exceptions that are in the details of this exception.
JBO-27101: DeadEntityAccessException
Reason: Trying to refer to an invalid/obsolete entity. This could occur if some business logic has held on to an entity reference which was removed and the transSolution has been posted or committed. It could also occur if a reference entity has been removed from the cache and any ViewRow is attempting to access it.
Solution: Use findByPrimaryKey to find a valid entity of the desired key instead of holding on to a reference to an entity instance.
JBO-27102: DeadViewRowAccessException
Reason: Trying to access a ViewRow which is part of an obsolete/invalid collection. This could happen if a reference to the ViewRow is held by some business logic while the containing view object was removed.
Solution: Find the referenced ViewRow either by re-querying or using findByKey methods to get a valid reference to the ViewRow.
JBO-27120: SQLStmtException
Reason: Failed to execute a query. This could occur when trying to execute a query for a SQLValue domain class or a Sequence domain.
Solution: Fix the Reason for the SQLException thrown by JDBC found in the details of this exception.
JBO-27121: SQLStmtException
Reason: Failed to execute a SQL statement.
Solution: Fix the Reason for the SQLException thrown by JDBC found in the details of this exception.
JBO-27122: SQLStmtException
Reason: Failed to prepare a JDBC PreparedStatement.
Solution: Fix the Reason for the SQLException thrown by JDBC found in the details of this exception.
JBO-27123: SQLStmtException
Reason: Failed to prepare a JDBC CallableStatement.
Solution: Fix the Reason for the SQLException thrown by JDBC found in the details of this exception.
JBO-27124: SQLStmtException
Reason: Failed to create a JDBC Statement object with the given set of parameters.
Solution: Fix the Reason for the SQLException thrown by JDBC found in the details of this exception.
JBO-28000: PCollException
Reason: The client specified a custom persistent collection through the jbo.pcoll.mgr property. However, the class specified could not be located or loaded.
Solution: Make sure that the name specified for jbo.pcoll.mgr is for a valid class name. The class name should be fully qualified with the package name. A special keyword None represents no persistent collection manager, i.e., no spilling to disk will occur.
JBO-28001: PCollException
Reason: An error occurred while attempting to get a JDBC connection for persistent collection management.
Solution: Make sure that the database connection URL is correct. The detail to this exception will give further information on the problem.
JBO-28002: PCollException
Reason: An error occurred while creating "persistent collection control table." Normally, the control table's name is PCOLL_CONTROL.
Solution: Check to make sure that the connection has appropriate authority to create a table. The detail to this exception will give further information on the problem.
JBO-28004: PCollException
Reason: An error occurred while trying to lock the persistent collection control row. This error is thrown in two situations:
An unexpected database error occurred while attempting to lock the row.
After the persistent collection manager committed changes to database, it tried to lock the control row. Between the time of commit and lock attempt, another user somehow managed to lock the row and not release it within a set time. In this case, the detail will be null.
Solution: In the first case, see the details of this exception for further information on the database problem. In the second case, make sure that no other user locks the control rows outside the Business Components framework.
JBO-28005: PCollException
Reason: An unexpected error occurred while attempting to update the persistent collection control row.
Solution: Look at the details of this exception for further information on the problem and how to address it.
JBO-28006: PCollException
Reason: An error occurred while attempting to create a database table to store persistent collection material.
Solution: Look at the details of this exception for further information on the problem and how to address it.
JBO-28007: PCollException
Reason: An unexpected error occurred while attempting to commit persistent collection changes.
Solution: Look at the details of this exception for further information on the problem and how to address it.
JBO-28009: PCollException
Reason: An unexpected error occurred while attempting to get the system date from the database. For the Oracle persistent manager, the SQL statement used for this would be "select sysdate from dual".
Solution: Look at the details of this exception for further information on the problem and how to address it.
JBO-28020: PCollException
Reason: An unexpected error occurred while passivating objects into the persistent store. An exception may have been thrown during serialization.
Solution: Look at the details of this exception for further information on the problem and how to address it.
JBO-28021: PCollException
Reason: An unexpected error occurred while activating objects from the persistent store. An exception may have been thrown during deserialization.
Solution: Look at the details of this exception for further information on the problem and how to address it.
JBO-28030: PCollException
Reason: An unexpected error occurred while inserting a passivation row into the persistent store table.
Solution: Look at the details of this exception for further information on the problem and how to address it.
JBO-28031: PCollException
Reason: An unexpected error occurred while updating a passivation row in the persistent store table.
Solution: Look at the details of this exception for further information on the problem and how to address it.
JBO-28032: PCollException
Reason: An unexpected error occurred while deleting a passivation row from the persistent store table.
Solution: Look at the details of this exception for further information on the problem and how to address it.
JBO-28033: PCollException
Reason: An unexpected error occurred while retrieving a passivation row from the persistent store table.
Solution: Look at the details of this exception for further information on the problem and how to address it.
JBO-28034: PCollException
Reason: The client attempted to retrieve a row in a persistent collection by an id, but the by-id access is not enabled on the persistent collection.
Solution: Enable by-id access by calling PCollection.enableIdAccess.
JBO-28035: PCollException
Reason: The client attempted to retrieve a row by an id, but the id value is invalid. The id must be greater than 0.
Solution: Give a valid id.
JBO-28036: PCollException
Reason: While attempting to activate an object of a given id, an internal integrity problem was found. In particular, a node which was thought to be passivated was found to be active.
Solution: Contact Business Components for Java Technical Support with how you ran into the problem.
JBO-28037: PCollException
Reason: While attempting to activate an object of a given id, an internal integrity problem was found. In particular, a child node/element expected to be found in a node is missing.
Solution: Contact Business Components for Java Technical Support with how you ran into the problem.
JBO-28038: PCollException
Reason: An unexpected error occurred while deleting all passivation rows from the persistent store table.
Solution: Look at the details of this exception for further information on the problem and how to address it.
JBO-28039: PCollException
Reason: While attempting to activate an object of a given id, an internal integrity problem was found. In particular, the root node of the persistent collection is no good. It is either (1) null, (2) has younger or older sibling, or (3) has a parent node. None of these should apply to the root node.
Solution: Contact Business Components for Java Technical Support with how you ran into the problem.
JBO-28200: JboException
Reason: Invalid entities still found in the validation list of the transSolution after attempting to validate all invalid entities for the VALIDATION_THRESHOLD 10 times (by default).
Solution: Fix any logic that invalidates entity instances in the validation cycle (perhaps in overridden validateEntity() methods) such that all entities are valid before the VALIDATION_THRESHOLD limit is reached.
JBO-28201: JboException
Reason: There are invalid entities or entities in the post list of the transSolution after trying to post all changes for the POST_THRESHOLD 10 times (by default).
Solution: Fix any logic that places entities in the transSolution's list of entities to be validated or posted in the post cycle, such that all entities get posted before the POST_THRESHOLD is reached.
JBO-28202: JboException
Reason: Invalid entity instances found in the transSolution in the beforeCommit phase.
Solution: Fix any business logic that invalidates entity instances in postChanges() such that there are no more invalid entities after all changes are posted during the commit cycle.
JBO-29000: JboException
Reason: If an unexpected exception occurs during a framework operation, this exception is thrown, with the unexpected exception included in the details of this exception.
Solution: Fix the Reason for the exception in the details for this JboException.
JBO-55001: VariantException
Reason: Unexpected type was provided to Variant utility.
Solution: Provide an expected type as reported in the exception.
JBO-55002: VariantException
Reason: The data-type passed to the Variant utility from a Validation rule is invalid. This could be due to a corrupt XML-metadata definition in the component's XML file.
Solution: Fix the component XML for the offending validation rule.
JBO-55003: VariantException
Reason: The name of the variant type passed to the Variant utility from a Validation rule is invalid. This could be due to a corrupt XML meta data definition in the component's XML file.
Solution: Fix the component XML for the offending validation rule.
All messages are prefixed by text that indicates the area of the product where the error occurred. In this case, the prefix "JBO-" signifies that this message was generated by Oracle Business Components for Java.
JBO-25000: UnknownSQLTypeException
Reason: SQLType name passed to NullValue constructor is invalid.
Solution: Provide a valid SQLType name. See oracle.jbo.server.OracleTypeMapEntries.java for a list of valid SQLType names. Names are like "VARCHAR", "CHAR", "NUMBER", etc.
JBO-25001: NameClashException
Reason: A business component of this name already exists in the application module.
Solution: Provide a different name for the business component. If you provide a null value or null string for the name, the framework will create a unique name within the scope of the application module.
JBO-25002: NoDefException
Reason: No business component definition found with the given name in the project classpath.
Solution: Provide a correct name for the business component definition. If the definition is not in the classpath, you must include it there. Names are of the format myProjectPackage.BusinessPackage.BusinessComponent. This error can also occur if there is a case conflict, as when the database expects "DEPTNO" and receives "Deptno" instead.
JBO-25003: NoObjException
Reason: No business component object found with the given name in the application module.
Solution: Provide a different name for the business component object or create a new business component with the given name.
JBO-25004: InvalidDefNameException
Reason: An attempt has been made to associate a definition name with a type for which it is not valid.
Solution: The name should be a valid java-identifier with no spaces or punctuation. Names are of the format myProjectPackage.BusinessPackage.BusinessComponent
JBO-25005: InvalidObjNameException
Reason: An attempt has been made to associate a business component name with an object for which it is not valid.
Solution: The name should be a valid java identifier with no spaces or punctuation. Names are of the format myProjectPackage.BusinessPackage.BusinessComponent.
JBO-25006: InvalidParamException
Reason: The parameters passed to a business component method are invalid.
Solution: See the Javadoc for the method that throws this exception. Expand the call-stack for the correct parameters. e.g., DBTransSolutionImpl.executeCommand() throws this exception when command parameter is null or an empty String.
JBO-25007: InvalidOperException
Reason: Resetting row validation for a default RowIterator of a view object or a RowSet is not permitted.
Solution: Reset the RowValidation flag for the RowSet or view object. This will create another iterator for the RowSet or view object to navigate to another row without validating.
JBO-25008: InvalidOperException
Reason: An attempt has been made to remove a view object that is participating in a view link.
Solution: Remove the view link before removing the view object.
JBO-25009: oracle.jbo.domain.DataCreationException
Reason: A domain object could not be created with the given value. Either a domain constructor that accepts the given value does not exist, or there is no conversion method in the domain object for the given value type, or the domain's constructor threw an unexpected exception.
Solution: Confirm that the value being passed is valid with respect to the domain-type being created. e.g., passing a String value like "One" to the oracle.jbo.domain.Number constructor will throw this exception.
JBO-25010: oracle.jbo.domain.DomainValidationException
Reason: Validation failed with the given value in a domain constructor. This exception is thrown in the validate() method of a domain type.
Solution: Provide a valid value for the domain type.
JBO-25011: InvalidOperException
Reason: An attempt has been made to invoke an invalid navigation method for a forward-only view object or RowSet.
Solution: Either remove the forward-only setting for the view object or RowSet, or do not invoke navigation methods other than next() on the forward-only view object or RowSet.
JBO-25012: InvalidOperException
Reason: The client has attempted to locate view rows that has the given entity row as the primary entity row. However, it has been discovered that the entity row's entity definition does not match the entity definition of the view object's primary entity object base.
Solution: The entity row used to locate view rows must have be based on the same entity definition.
JBO-25013: TooManyObjectsException
Reason: Attempting to add a new entity to the cache with the primary key the same as an existing entity. This exception is thrown when uniquing a newly fetched/created entity with the cached set of entities.
Solution: The primary key value may not be unique for this entity-type. Fix by adding more attributes to the Key definition for this entity type, so that each row for this entity is uniquely identifiable. Or fix the primary key value so that this entity has a unique key identifier.
JBO-25014: RowInconsistentException
Reason: Comparison of the cached entity failed with the values in the database for that entity. This could happen when another user or operation has committed modifications to the same entity-row in the database. This exception can also be thrown if the equals() method on one of the domain-type attributes in the entity fails.
Solution: Choose from the following options:
Verify that another user or operation has not modified the same row in the database. If this entity has attributes of a domain type verify that the equals() method on these domains do not fail when comparing the existing cached value with the newly fetched value.
For any attributes/columns that are updated by the database, modify the entity attribute definition by selecting Refresh after update on the Attribute Settings page of the Entity Object Wizard.
Use view.executeQuery() frequently, especially after any operations that result in data being changed.
JBO-25015: InvalidOperException
Reason: Attempting to execute a query for a view object or RowSet after closing or removing the view object or RowSet.
Solution: Verify that the view object or RowSet is not removed or closed.
JBO-25016: ReadOnlyViewObjectException
Reason: Attempting to modify data for a view object which is declared to be read only. This includes creating a new row for this view object, removing a Row or modifying attributes of a ViewRow for this view object.
Solution: To modify the data, create a view object with ReadOnly flag set to false.
JBO-25017: RowCreateException
Reason: An unexpected exception occurred while creating a new entity instance.
Solution: The entity may not have a public default constructor. Fix the Reason for InstantiationException or IllegalAccessException that appears in the details of this exception.
JBO-25018: RowCreateException
Reason: An unexpected exception occurred while creating a new ViewRow instance.
Solution: The ViewRow may not have a public default constructor. Fix the Reason for InstantiationException or IllegalAccessException that appears in the details of this exception.
JBO-25019: RowNotFoundException
Reason: Attempting to lock a non-existing row in the database. This could occur when the cache has an entity which was subsequently deleted from the database by another user or operation.
Solution: Remove the current entity from the entity-cache by calling remove(). Or re-synchronize the cache with the database, by rolling-back the current transSolution or by committing the existing set of changes and then dropping the entity-cache.
JBO-25020: RowNotFoundException
Reason: Attempting to find a referenced entity in the ViewRow failed due to a changed foreign-key value.
Solution: Provide a valid foreign key value or remove the current one.
JBO-25021: oracle.jbo.domain.DataCreationException
Reason: A domain object could not be created with the given value. Either a domain-constructor that accepts the given value does not exist, or there is no conversion method in the domain object for the given value type, or the domain's constructor threw an unexpected exception.
Solution: Confirm that the value being passed is valid with respect to the domain-type being created. e.g., passing a String value like "One" to oracle.jbo.domain.Number constructor will throw this exception.
JBO-25022: ViewLinkAlreadyExistsException
Reason: Attempting to set the Master RowSet for this RowSet more than once.
Solution: Do not invoke setMasterRowSetIterator more than once on a RowSet.
JBO-25023: oracle.jbo.domain.GenericDomainException
Reason: An expected domain exception occurred.
Solution: Contact Business Components for Java Technical Support.
JBO-25024: JboException
Reason: Attempting to use an obsolete TypeMap constructor.
Solution: Verify that the type maps in use for this version of framework is compatible. See example type maps in oracle.jbo.server.OracleTypeMapEntries.
JBO-25025: ReadXMLException
Reason: An error occurred during reading the XML data for a view object. This exception may contain other ReadXMLExceptions.
Solution: Fix the contained Row- or Attribute-level exceptions in the details for this exception.
JBO-25026: RowReadXMLException
Reason: An error occurred during reading the XML data for a ViewRow. This exception may contain other ReadXMLExceptions for contained RowSets or Attributes.
Solution: Fix the RowSet- or Attribute-level exceptions in the details for this exception.
JBO-25027: AttributeReadXMLException
Reason: An error occurred during reading the XML data for an attribute of a ViewRow. This exception may contain other JboExceptions thrown from the set() method for this attribute.
Solution: Fix the JboException in the details for this exception.
JBO-25028: oracle.jbo.domain.DataCreationException
Reason: A domain object could not be created with the given value. Either a domain-constructor that accepts the given value does not exist, or there is no conversion method in the domain object for the given value type, or the domain's constructor threw an unexpected exception.
Solution: Confirm that the value being passed, is valid with respect to the domain-type being created. e.g., passing a String value like "One" to oracle.jbo.domain.Number constructor will throw this exception.
JBO-25029: oracle.jbo.domain.DataCreationException
Reason: The named data class (may be a domain) could not be found.
Solution: Make sure that the data class is accessible from the CLASSPATH and is a valid data class.
JBO-25030: InvalidOwnerException
Reason: Could not find the container entity for this entity, as this entity is a detail in a composition association. This could occur while creating a new entity instance by passing a non-existing master key value, or when updating the foreign-key value in this entity and there is no master entity with that foreign-key value.
Solution: Provide a valid foreign-key value to the create() method or setAttribute() method so that an appropriate master row is found for this entity.
JBO-25031: RowNotFoundException
Reason: The client has attempted to access an attribute of a view which is mapped to an entity row, but the corresponding entity row is null. If the view object consists of multiple entity object bases and if the secondary entity object bases are reference-only, the entity rows may be null if the FK linking the primary entity object to secondary entity objects is null.
Solution: In such a situation, the user is not allowed to access attributes of missing entity rows.
JBO-25032: JboSerializationException
Reason: Failure trying to make the application module state or transSolution state passive.
Solution: The passivation target store (Database, File or Memory) may have reported an exception. See the details of this exception for errors from the target store.
JBO-25033: JboSerializationException
Reason: Trying to activate the application module state or transSolution state failed.
Solution: The passivation target store (Database, File or Memory) may have reported an exception. See the details of this exception for errors from the target store. The given ID (in case of activation) may be invalid/not found.
JBO-25034: RowNotFoundException
Reason: The client has attempted to locate a row with a row handle, but the row is not found. This error may be raised if the client tries to take a row out of one query collection and use its handle to find a row in another query collection. Note that if the client calls executeQuery on a RowSet, it may receive a new query collection. Thus, you may get this error if the client retrieves a row from a RowSet, takes its row handle, calls executeQuery, and then tries to locate the row using the saved handle.
Solution: Make sure that your row handle is not stale.
JBO-25035: JboException
Reason: An application attempted to change an application module's passivation store after it had been initialized.
Solution:The passivation store (Database, File or Memory) may only be initialized once. If the customer application logic has not specified a passivation store when the serialization framework is invoked, the passivation store is initialized by the Business Components for Java framework. Check the client application logic for invocations of:
ApplicationModuleImpl.setStoreForPassiveState
which are invoked after the application module passivation store has been initialized.
JBO-25036: InvalidObjAccessException
Reason: An application invoked an object operation that is not supported in the object's current state.
Solution: Remove the invalid operation invocation or provide exception handling logic.
JBO-25200: NotConnectedException
Reason: The application module is not connected to the database.
Solution: Provide a valid set of connection credentials to connect to a database.
JBO-25201: AlreadyConnectedException
Reason: Trying to re-establish a database connection.
Solution: Disconnect the current database connection before trying to re-establish the JDBC connection.
JBO-25221: JboException
Reason: Attempting to call a method that is either not implemented or not supported.
Solution: This method is not available on the called object. E.g. setAttribute() in oracle.jbo.Key class is not implemented and will throw this exception.
JBO-25222: ApplicationModuleCreateException
Reason: There are a number of reasons the application module could not be created:
If your business components are deployed in local mode, they may not be on the classpath.
You may have unresolved classes on the server.
You may not have granted Java2 permissions.
Your Java pool size may be too small.
You may not have compiled your classes.
Solution: Depending on the Reason, chose from the following Solutions:
If your business components are deployed in local mode, they may not be on the classpath.If this is the Reason of the error, the exception will usually be followed by a different exception,
JBO-25002: Application Module not found.
If this occurs, make sure you've done all of the following:
Made a library for your business components.
Added a library to your client's project properties.
Included the library on the "libraries" page when you created a deployment profile for your client (whether your client was a web application or a command-line application).
Copied the library with your client to the target platform (whether your client was a web application or a command-line application).
Included all the files you copied (including the library) when you set the classpath on the target platform.
You may have unresolved classes on the server.Try the following procedure to resolve any unresolved classes on Oracle8i.
In the Navigator, right-click the JDBC connection you used to deploy the Business Components project.
Choose Invoke SQL*Plus from the context menu.
Copy and paste the following SQL*Plus script into the SQL*Plus window.
set termout offset echo offset heading offset pages 999set linesize 2000set feedback offselect 'alter java class "' replace(dbms_java.longname(object_name),'/','.')'" resolve;'from user_objectswhere object_type='JAVA CLASS'and status = 'INVALID'spool C:\temp\resolve.sql/spool offset echo onset termout on@C:\temp\resolve.sql
You may not have granted Java2 permissions.If this is the Reason of the error, there will be permissions errors in the database trace file. To correct the problem, see the help topic "Granting Permissions on a Business Components EJB" for information on granting Java2 permissions.
Note: The location of the database trace file varies from installation to installation, but in a default Windows NT installation, the file will be in the directory ORACLE_HOME\admin\orcl\ udump and will have the form orcl????.trc.
Your Java pool size may be too smallBusiness Components for Java deployed as EJBs work best with a Java pool size of at least 50MB. Edit your init.ora file and check the java_pool_size parameter. If it is under 50MB, change it, restart your database, and try your connection again.
You may not have compiled your classesCompile your business component classes and try again.
JBO-25223: ApplicationModuleCreateException
Reason: When business components are running inside JServer, only one root application module may be created. This is beReason JServer (already) provides one transSolution context.
Solution: It is illegal to attempt to create multiple root transSolutions when running inside JServer.
JBO-25224: JboException
Reason: Trying to retain the application module state during a transSolution disconnect failed.
Solution: The disconnect and retain application module state target requires that no database state exist before the transSolution connection is closed. Examples of database state include open database cursors in non-forward only view objects, database locks, and uncommitted database changes. The client should clean up this state by fetching or resetting any open view objects and committing any uncommitted changes.
JBO-25226: ApplicationModuleCreateException
Reason: This application module definition contains recursive references to child application modules. For example, if application module definition appMod1 contains a child application module of appMod2, and appMod2 contains appMod1,this error will be raised.
Solution: Remove recursive application module definition references.
JBO-25301: InvalidOwnerException
Reason: While traversing the parenthood chain for application modules, a child application module was found with no container (parent) application module.
Solution: If this application has added custom business component classes, it may be that the application code is attempting to access a child application module before it is fully initialized. If this is not the case, this error probably represents some internal error in Business Components for Java framework, in which case contact Business Components for Java Technical Support.
JBO-25302: InvalidOwnerException
Reason: A business component is found without a container (parent) application module.
Solution: If this application has added custom business component classes, it may be that the application code is attempting to access a business component before it is fully initialized. If this is not the case, this error probably represents some internal error in Business Components for Java framework, in which case contact Business Components for Java Technical Support.
JBO-26000: JboException
Reason: Attempting to load metadata objects failed. It may have unexpected data or the XML data may be corrupt.
Solution: Verify that the XML metadata for various components is valid.
JBO-26001: NoXMLFileException
Reason: Could not open the named XML file for read.
Solution: 1. Make sure that the file is present. In particular, if the file is to be found in a zip/jar file, make sure that the Zip/JAR file is included in the CLASSPATH.
2. This error is also reported if the name of the XML file does not match the object Name specified in the XML file. If the file system support case insensitive file names (e.g., Windows NT), make sure that the file name matches the object Name in the XML file in case-sensitive fashion.
3. For a .JPX file, this error is reported if the JPX file is missing the JboProject XML tag. Check the JPX file to make sure that the valid tag is in there.
4. One XML file may be extending another XML file (specified by the Extends element in this XML file). This error is reported if the base XML file is not found.
5. When loading the XML file for a package (JboPackage tag), this error is reported if some unexpected error occurs while loading a containee.
In all of the above cases, a more descriptive message may be printed on Diagnostic. If you are not seeing Diagnostic messages, you can run your application with Diagnostic turned on, as in "java -Djbo.debugoutput=console ...", to see Diagnostic messages.
JBO-26002: PersistenceException
Reason: Some XML parsing exception (oracle.xml.parser.v2.XMLParseException) was thrown.
Solution: The XMLParseException information is output to Diagnostic. If you are not seeing diagnostic messages, you can run your application with diagnostic turned on, as in "java -Djbo.debugoutput=console ...", to see diagnostic messages.
JBO-26003: PersistenceException
Reason: An error occurred while loading entity object definitions. An attribute index in the Java class for this entity has a mismatch with the index in the definition, or an attribute index is missing in the Java class.
Solution: Ensure that the indices of attributes in the definition for this entity match the indices defined in the Java class for this entity.
JBO-26004: InvalidOperException
Reason: An attempt was made to set the base definition of another definition object, e.g., setting B's base definition to A (i.e., B Extends A). However, A already extends B. Setting a recursive (circular) subclassing relationship among definition objects is illegal.
Solution: Review your subclassing hierarchy of your definition objects and correct errors.
JBO-26005: PersistenceException
Reason: The fetch mode specified in the view definition XML file is not valid.
Solution: Check the content of the XML file for the view definition. Look for an XML element named "FetchMode". Make sure that the value for that element is valid. Valid values are: "FETCH_AS_NEEDED", "FETCH_ALL", and "FETCH_DEFAULT".
JBO-26006: PersistenceException
Reason: The fetch size specified in the view definition XML file is not valid.
Solution: Check the content of the XML file for the view definition. Look for an XML element named "FetchSize". Make sure that the value for the element is a positive integer.
JBO-26007: PersistenceException
Reason: The maximum fetch size specified in the view definition XML file is not valid.
Solution: Check the content of the XML file for the view definition. Look for an XML element named "MaxFetchSize". Make sure that the value for the element is a non-negative integer, or "MAX_FETCH_UNLIMITED", or "MAX_FETCH_DEFAULT". A MaxFetchSize of 0 is the same as MAX_FETCH_UNLIMITED.
JBO-26008: PersistenceException
Reason: A problem is found in resolving a view link definition or an association. In case of a view link, this error may be Reasond by the fact that the source or destination view object cannot found. Or, if the view link ends have attribute names, this error may indicate that the named attributes cannot be found. Similarly, for an association, this error indicates that either source or destination entity object or attributes involved in the association cannot be found.
Solution: Make sure the XML definition for the view link/association has correct view object/entity object/attribute names.
JBO-26009: PersistenceException
Reason: This error occurs if the application uses meta object serialization files (.ser files) instead of XML files. It indicates that after the .ser file is deserialized, the top level object returned from deserialization is not an instance of oracle.jbo.server.xml.JboElementImpl.
Solution: This probably means that the .ser file is corrupt.
JBO-26010: PersistenceException
Reason: Entity attribute name in the view definition XML file is invalid or is not found.
Solution: Make sure that the entity name is valid. Also, check to make sure that the named attribute does exist in the entity object. The entity object is identified by the EntityUsage element.
JBO-26011: PersistenceException
Reason: Attribute definition found in XML file is invalid. It is missing SQLType value.
Solution: Correct the error in the XML file.
JBO-26012: PersistenceException
Reason: The view link definition in the XML file is missing either the source or destination view link end. For a view link XML file, two elements named ViewLinkDefEnd should be found.
Solution: Correct the error in the XML file.
JBO-26013: PersistenceException
Reason: Meta object name passed for lookup is invalid.
Solution: Normally, the meta object name is a dot-separated name of the meta object. For an entity object named Emp in package1.example, the correct name would be "package1.example.Emp". To correct, locate where the invalid name is coming from (could be meta object names mentioned in an XML file, or the name of the project, etc.) and change the name to a valid one.
JBO-26016: InvalidOperException
Reason: You cannot set customer query (calling setQuery()) on a view object if it is the detail view object in a master detail view link.
Solution: Do not call setQuery() if the view object is a detail.
JBO-26017: PersistenceException
Reason: An entity association definition in an XML file is invalid. In particular, this error means that either of the two association ends ("AssociationEnd" elements in the XML file) are missing "Attributes", which lists source or destination attributes.
Solution: Correct the error(s) in the XML file.
JBO-26018: InvalidOperException
Reason: An attempt was made to post a row with no attribute set. Some databases (in particular Oracle) do not allow an INSERT statement with no VALUE specified.
Solution: Set some attributes on the row before attempting to insert it into the database.
JBO-26019: JboException
Reason: Attempting to remove a master which has detail entities. In the case of a composition, a master cannot be removed if it has details.
Solution: Remove all the details of this master by accessing the details via an association and removing all of them.
JBO-26020: InvalidOperException
Reason: The application code tried to take a row from one row set (or view object) and insert it into another row set (view object). In response, the framework will make a "copy" of the row in the new row set. This new row will share references to the underlying entity objects. However, if the source and destination row sets do not share any entity object bases at all, this operation will fail as it does not find any entity rows to share.
Solution: When attempting to take a row from one row set and insert into another, make sure that they share at least one entity object base.
JBO-26021: PersistenceException
Reason: A NullPointerException was thrown while parsing an XML file. A possible Reason for this is that the DTD file is missing (oracle.jbo.dtd.jbo*.dtd).
Solution: Make sure the appropriate DTD file is present.
JBO-26022: CustomClassNotFoundException
Reason: Custom class could not be found and loaded. The custom class may be for a component (e.g., view object), a definition (e.g., view definition), or a row (e.g., view row, entity row).
Solution: Make sure that the named class is reachable from the CLASSPATH. The detail exception (if present) will give you more specific reasons why the attempt to locate and load the custom class failed.
JBO-26023: CustomClassNotFoundException
Reason: Custom class was found and loaded, but it is invalid in that it is not assignable to a framework (super) class.
Solution: Make sure that the custom class subclasses the appropriate framework (super) class.
JBO-26024: PersistenceException
Reason: An error occurred while creating initial context. This error usually carries a detail exception which will give further information on the Reason of the error.
Solution: If Business Components for Java is running inside JServer, make sure that the database user (schema) has the setContextClassLoader permission. To grant this, the database system administrator can invoke the following PL/SQL procedure: EXEC DBMS_JAVA.GRANT_PERMISSION('&&1', 'SYS:java.lang.RuntimePermission', 'setContextClassLoader', null); /**
JBO-26025: PersistenceException
Reason: An error occurred while trying to get System properties. Specifically, System.getProperties() call failed.
Solution: If Business Components for Java is running inside JServer, make sure that the database user (schema) has the proper property permission. To grant this, database system can invoke the following PL/SQL procedure: EXEC DBMS_JAVA.GRANT_PERMISSION('&&1', 'SYS:java.util.PropertyPermission', '*', 'read');
JBO-26026: PersistenceException
Reason: An error occurred while trying to get load properties.
Solution: Check to see if the named properties file contains valid Java properties.
JBO-26030: AlreadyLockedException
Reason: This row has already been locked by another user or transSolution.
Solution: Try locking the row again and the operation should succeed after the other user or transSolution has released the lock.
JBO-26041: DMLException
Reason: Some database error occurred while posting (writing) an entity to the database. This error normally carries a detail exception from the database which will give further information about the database failure.
Solution: Look at the details of the exception and address the database problem.
JBO-26042: DMLException
Reason: A database failure occurred while trying to generate an object ID (OID) and object reference (REF). When a new row is created on an entity which maps to an Oracle object table, an OID and REF for the new row are generated. This executes a SQL statement like select a.oid, make_ref(, a.oid) ... Somehow, this statement is failing.
Solution: Check the following:
1. Are you using the right version of Oracle database?
2. Is the table in question an object table?
This error normally carries a detail exception from the database, which will give further information about the database failure. Take a look at the detail exception and address the database problem.
JBO-26043: DMLException
Reason: An attempt was made to generate an object ID (OID) and/or a reference (REF) on a database system that does not support Oracle objects.
Solution: Do not try to create OID or REF on a database system that does not support Oracle objects.
JBO-26044: DMLException
Reason: The application tried to get an estimated row count (getEstimatedRowCount()) on a row set. While building the appropriate query statement, executing it, and retrieving the estimated count, an error occurred. This error is accompanied by the SQL statement that Reasond the error. Also, it normally carries a detail exception from database, which will give further information about the database failure.
Solution: Take a look at the SQL statement and the detail exception and address the database problem.
JBO-26045: DMLException
Reason: A database occurred while trying to generate an object ID (OID) from the primary key. This operation is valid only if the table in question is an object table and if the table specifies that the reference (REF) is PK based.
Solution: Check the following:
1. Are you using the right version of Oracle database?
2. Is the table in question an object table?
3. Does this object table use a PK-based REF?
This error normally carries a detail exception from database which will give further information about the database failure. Take a look at the detail exception and address the database problem.
JBO-26060: DMLException
Reason: A SQLException occurred while trying to register a JDBC driver.
Solution: Fix the underlying SQLException.
JBO-26061: DMLException
Reason: A SQLException occurred while trying to open a JDBC connection.
Solution: Fix the underlying SQLException.
JBO-26062: DMLException
Reason: A SQLException occurred while trying to close a JDBC connection.
Solution: Fix the underlying SQLException.
JBO-26064: DMLException
Reason: A SQLException occurred while trying to close a JDBC connection.
Solution: Fix the underlying SQLException.
JBO-26065: DMLException
Reason: A SQLException occurred during the commit phase of this transSolution.
Solution: Fix the underlying SQLException.
JBO-26066: DMLException
Reason: A SQLException occurred during the rollback phase of this transSolution.
Solution: Fix the underlying SQLException.
JBO-26067: JboException
Reason: An exception occurred while adding a JDBC connection to a pool that was already full.
Solution: Modify the class that is using the pool to check the pool size before adding a new connection to the pool.
JBO-26068: JboException
Reason: The user attempted to return a connection to a pool that was not responsible for managing that connection.
Solution: Modify the class that is using the pool to ensure that the connection belongs to the pool before returning the connection to the pool.
JBO-26069: JboException
Reason: A client request was timed out while waiting for a connection to be returned to the pool.
Solution: Increase the maximum pool size in order to accommodate 2x the maximum expected active request size. /**
JBO-26070: DMLException
Reason: A SQLException occurred while setting up metadata JDBC statement.
Solution: Fix the underlying SQLException. There might be a datatype mismatch between the attributes of the view object and columns in the SQL for it.
JBO-26080: DMLException
Reason: An unexpected exception occurred while executing the SQL to fetch data for an entity instance or lock it.
Solution: Fix the Reason for the SQLException in the details of this exception.
JBO-26081: SQLDatumException
Reason: A SQLException occurred when converting data from jdbc to oracle.jbo.domain.Struct attributes.
Solution: Fix the conversion errors as suggested in SQLException.
JBO-26100: AfterCommitException
Reason: An exception occurred in the afterCommit notification phase of the transSolution.
Solution: Verify the exception in the details of this exception. Fix the failing afterCommit() overridden methods in the entities or transient TransSolutionListener objects registered with the transSolution to listen into the commit/rollback cycle.
JBO-26101: AfterPostException
Reason: An exception occurred in the afterPost phase of the transSolution.
Solution: Verify the exception in the details of this exception. Fix the failing afterPost() overridden methods in the entities or transient TransSolutionPostListener objects registered with the transSolution to listen into the post cycle.
JBO-26102: AfterRollbackException
Reason: An exception occurred in afterRollback notification phase of the transSolution.
Solution: Verify the exception in the details of this exception. Fix the failing afterCommit() overridden methods in the entities or transient TransSolutionListener objects registered with the transSolution to listen into the commit/rollback cycle.
JBO-27001: ReadOnlyAttrException
Reason: This association attribute is marked readonly.
Solution: Cannot modify the value of the association attribute as it is marked readonly.
JBO-27002: AttrSetValException
Reason: A custom validation rule failed to validate an attribute value.
Solution: Fix the attribute value so that it passes the custom validation rule.
JBO-27003: ValidationException
Reason: Modified or new entities in this view object failed to validate.
Solution: Fix the failing entity values and revalidate the view object.
JBO-27004: ReadOnlyAttrException
Reason: Attempting to modify a read-only entity-attribute.
Solution: DO not modify a readonly attribute value.
JBO-27005: ValidationException
Reason: Modified or new entities within this application module or nested application module failed to validate.
Solution: Fix the failing entities and then re-validate this application module.
JBO-27006: AttrValException
Reason: An attribute cannot be found by the given name during validation.
Solution: Entity meta-data could be corrupt as there is an attribute which is to be validated but no definition could be found for that attribute in the meta-data.
JBO-27007: ValidationException
Reason: Attempting to validate a View Row failed.
Solution: Fix the failing entities or attributes as found in the details of this exception.
JBO-27008: ReadOnlyAttrException
Reason: Attempting to modify a ViewRow attribute that is readonly
Solution: Either change the Updateable flag for the View Attribute or do not attempt to update readonly attributes.
JBO-27009: ValidationException
Reason: Attempting to validate entities and attributes failed during validation of buffered attributes in Deferred Validation mode. (Not available in 3.x)
Solution: Fix the failure cases.
JBO-27010: ValidatonException
Reason: For strings, the length of the string value provided for an attribute is more than the max-length this attribute expects. For Numeric values, the length of the value (in string form) is more than what the attribute expects.
Solution: Fix the attribute value with respect to the precision and scale information for the failing attribute.
JBO-27011: AttrSetValException
Reason: A validation rule for an attribute failed either due to an unexpected exception in validating the attribute with that rule, or due to failure in evaluating the NOT operation on the rule.
Solution: Fix the attribute value so that it validates against the failing rule.
JBO-27012: ValidationException
Reason: The custom method validator attached to an entity returned false, indicating a failure in the validation for that entity.
Solution: Fix the Reason for failure in the custom validation method for this attribute.
JBO-27013: ValidationException
Reason: The custom method validator attached to an attribute returned 'false' indicating a failure in validation for that attribute in the custom method.
Solution: Fix the Reason for failure in the custom validator method for this attribute.
JBO-27014: AttrValException
Reason: The attribute value cannot be null as it has been marked mandatory.
Solution: Provide non-null values for mandatory attributes.
JBO-27015: ValidationException
Reason: In validating a master, some child entities were found that could not be validated. This occurs only in the case when there is a composition association between the master and detail entities.
Solution: Fix the attribute values in the child entities so that they are valid when the child entities are validated by the master
JBO-27016: InvalidAttrKindException
Reason: An unexpected attribute kind found in the definition for a view object.
Solution: Fix the attribute kind information in the xml-metadata definition for attributes in this view object.
JBO-27017: KeyNotFoundException
Reason: While loading the meta-data definition for this entity, there was no attribute marked as the primary key.
Solution: Set at least one attribute as the primary key for this entity type, so that entities of this type can be uniquely identified.
JBO-27018: AttrSetValException
Reason: The type of attribute value provided as an argument to the set() method for this attribute is not an instance of the Java type that this attribute expects.
Solution: Convert the argument to a proper Java type, such that it is an instance of the Java type that this attribute expects.
JBO-27019: AttrGetValException
Reason: An unexpected exception occurred in setAttribute method. Getter methods should throw a subclass of JboException so that custom exception messages are thrown/shown to the caller. This exception could also be thrown if the getter is not a public Java method.
Solution: Do not throw any exception other than sub-classes of JboException from any business logic code in the getter method for an attribute. Also verify that the getter method is a public Java method.
JBO-27020:
Reason: An unexpected exception occurred in setAttribute method. Setter methods should throw a subclass of JboException so that custom exception messages are thrown/shown to the caller. This exception could also be thrown if the setter is not a public Java method.
Solution: Do not throw any exception other than sub-classes of JboException from any business logic code in the setter method for an attribute. Also verify that the setter method is a public Java method.
JBO-27021: AttributeLoadException
Reason: An unexpected exception occurred during fetching values from a JDBC-resultset into an attribute for a row object. There could be conversion errors between the return type from JDBC for the attribute and it's Java type.
Solution: Verify that the JDBC-SQL type and Java type for the attribute are compatible. Fix any conversion errors or domain exceptions that are in the details of this exception.
JBO-27022: AttributeLoadException
Reason: An unexpected exception occurred during fetching values from a JDBC-resultset into an attribute for a row object. There could be conversion errors between the return type from JDBC for the attribute and it's Java type.
Solution: Verify that the JDBC-SQL type and Java type for the attribute are compatible. Fix any conversion errors or domain exceptions that are in the details of this exception.
JBO-27101: DeadEntityAccessException
Reason: Trying to refer to an invalid/obsolete entity. This could occur if some business logic has held on to an entity reference which was removed and the transSolution has been posted or committed. It could also occur if a reference entity has been removed from the cache and any ViewRow is attempting to access it.
Solution: Use findByPrimaryKey to find a valid entity of the desired key instead of holding on to a reference to an entity instance.
JBO-27102: DeadViewRowAccessException
Reason: Trying to access a ViewRow which is part of an obsolete/invalid collection. This could happen if a reference to the ViewRow is held by some business logic while the containing view object was removed.
Solution: Find the referenced ViewRow either by re-querying or using findByKey methods to get a valid reference to the ViewRow.
JBO-27120: SQLStmtException
Reason: Failed to execute a query. This could occur when trying to execute a query for a SQLValue domain class or a Sequence domain.
Solution: Fix the Reason for the SQLException thrown by JDBC found in the details of this exception.
JBO-27121: SQLStmtException
Reason: Failed to execute a SQL statement.
Solution: Fix the Reason for the SQLException thrown by JDBC found in the details of this exception.
JBO-27122: SQLStmtException
Reason: Failed to prepare a JDBC PreparedStatement.
Solution: Fix the Reason for the SQLException thrown by JDBC found in the details of this exception.
JBO-27123: SQLStmtException
Reason: Failed to prepare a JDBC CallableStatement.
Solution: Fix the Reason for the SQLException thrown by JDBC found in the details of this exception.
JBO-27124: SQLStmtException
Reason: Failed to create a JDBC Statement object with the given set of parameters.
Solution: Fix the Reason for the SQLException thrown by JDBC found in the details of this exception.
JBO-28000: PCollException
Reason: The client specified a custom persistent collection through the jbo.pcoll.mgr property. However, the class specified could not be located or loaded.
Solution: Make sure that the name specified for jbo.pcoll.mgr is for a valid class name. The class name should be fully qualified with the package name. A special keyword None represents no persistent collection manager, i.e., no spilling to disk will occur.
JBO-28001: PCollException
Reason: An error occurred while attempting to get a JDBC connection for persistent collection management.
Solution: Make sure that the database connection URL is correct. The detail to this exception will give further information on the problem.
JBO-28002: PCollException
Reason: An error occurred while creating "persistent collection control table." Normally, the control table's name is PCOLL_CONTROL.
Solution: Check to make sure that the connection has appropriate authority to create a table. The detail to this exception will give further information on the problem.
JBO-28004: PCollException
Reason: An error occurred while trying to lock the persistent collection control row. This error is thrown in two situations:
An unexpected database error occurred while attempting to lock the row.
After the persistent collection manager committed changes to database, it tried to lock the control row. Between the time of commit and lock attempt, another user somehow managed to lock the row and not release it within a set time. In this case, the detail will be null.
Solution: In the first case, see the details of this exception for further information on the database problem. In the second case, make sure that no other user locks the control rows outside the Business Components framework.
JBO-28005: PCollException
Reason: An unexpected error occurred while attempting to update the persistent collection control row.
Solution: Look at the details of this exception for further information on the problem and how to address it.
JBO-28006: PCollException
Reason: An error occurred while attempting to create a database table to store persistent collection material.
Solution: Look at the details of this exception for further information on the problem and how to address it.
JBO-28007: PCollException
Reason: An unexpected error occurred while attempting to commit persistent collection changes.
Solution: Look at the details of this exception for further information on the problem and how to address it.
JBO-28009: PCollException
Reason: An unexpected error occurred while attempting to get the system date from the database. For the Oracle persistent manager, the SQL statement used for this would be "select sysdate from dual".
Solution: Look at the details of this exception for further information on the problem and how to address it.
JBO-28020: PCollException
Reason: An unexpected error occurred while passivating objects into the persistent store. An exception may have been thrown during serialization.
Solution: Look at the details of this exception for further information on the problem and how to address it.
JBO-28021: PCollException
Reason: An unexpected error occurred while activating objects from the persistent store. An exception may have been thrown during deserialization.
Solution: Look at the details of this exception for further information on the problem and how to address it.
JBO-28030: PCollException
Reason: An unexpected error occurred while inserting a passivation row into the persistent store table.
Solution: Look at the details of this exception for further information on the problem and how to address it.
JBO-28031: PCollException
Reason: An unexpected error occurred while updating a passivation row in the persistent store table.
Solution: Look at the details of this exception for further information on the problem and how to address it.
JBO-28032: PCollException
Reason: An unexpected error occurred while deleting a passivation row from the persistent store table.
Solution: Look at the details of this exception for further information on the problem and how to address it.
JBO-28033: PCollException
Reason: An unexpected error occurred while retrieving a passivation row from the persistent store table.
Solution: Look at the details of this exception for further information on the problem and how to address it.
JBO-28034: PCollException
Reason: The client attempted to retrieve a row in a persistent collection by an id, but the by-id access is not enabled on the persistent collection.
Solution: Enable by-id access by calling PCollection.enableIdAccess.
JBO-28035: PCollException
Reason: The client attempted to retrieve a row by an id, but the id value is invalid. The id must be greater than 0.
Solution: Give a valid id.
JBO-28036: PCollException
Reason: While attempting to activate an object of a given id, an internal integrity problem was found. In particular, a node which was thought to be passivated was found to be active.
Solution: Contact Business Components for Java Technical Support with how you ran into the problem.
JBO-28037: PCollException
Reason: While attempting to activate an object of a given id, an internal integrity problem was found. In particular, a child node/element expected to be found in a node is missing.
Solution: Contact Business Components for Java Technical Support with how you ran into the problem.
JBO-28038: PCollException
Reason: An unexpected error occurred while deleting all passivation rows from the persistent store table.
Solution: Look at the details of this exception for further information on the problem and how to address it.
JBO-28039: PCollException
Reason: While attempting to activate an object of a given id, an internal integrity problem was found. In particular, the root node of the persistent collection is no good. It is either (1) null, (2) has younger or older sibling, or (3) has a parent node. None of these should apply to the root node.
Solution: Contact Business Components for Java Technical Support with how you ran into the problem.
JBO-28200: JboException
Reason: Invalid entities still found in the validation list of the transSolution after attempting to validate all invalid entities for the VALIDATION_THRESHOLD 10 times (by default).
Solution: Fix any logic that invalidates entity instances in the validation cycle (perhaps in overridden validateEntity() methods) such that all entities are valid before the VALIDATION_THRESHOLD limit is reached.
JBO-28201: JboException
Reason: There are invalid entities or entities in the post list of the transSolution after trying to post all changes for the POST_THRESHOLD 10 times (by default).
Solution: Fix any logic that places entities in the transSolution's list of entities to be validated or posted in the post cycle, such that all entities get posted before the POST_THRESHOLD is reached.
JBO-28202: JboException
Reason: Invalid entity instances found in the transSolution in the beforeCommit phase.
Solution: Fix any business logic that invalidates entity instances in postChanges() such that there are no more invalid entities after all changes are posted during the commit cycle.
JBO-29000: JboException
Reason: If an unexpected exception occurs during a framework operation, this exception is thrown, with the unexpected exception included in the details of this exception.
Solution: Fix the Reason for the exception in the details for this JboException.
JBO-55001: VariantException
Reason: Unexpected type was provided to Variant utility.
Solution: Provide an expected type as reported in the exception.
JBO-55002: VariantException
Reason: The data-type passed to the Variant utility from a Validation rule is invalid. This could be due to a corrupt XML-metadata definition in the component's XML file.
Solution: Fix the component XML for the offending validation rule.
JBO-55003: VariantException
Reason: The name of the variant type passed to the Variant utility from a Validation rule is invalid. This could be due to a corrupt XML meta data definition in the component's XML file.
Solution: Fix the component XML for the offending validation rule.