Skip to Main Content

Java Database Connectivity (JDBC)

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

java.lang.ArrayIndexOutOfBoundsException: -32503

KeithWilliamsDec 16 2007 — edited Nov 13 2009
I am getting this error in setupBindBuffers() when I issue an executeBatch() using the JDBC 11.1.0.6.0 driver. This code works fine with all of the 10.x drivers.

Here is the stack trace:

java.lang.ArrayIndexOutOfBoundsException: -32503
at oracle.jdbc.driver.OraclePreparedStatement.setupBindBuffers(OraclePreparedStatement.java:2677)
at oracle.jdbc.driver.OraclePreparedStatement.executeBatch(OraclePreparedStatement.java:9255)
at oracle.jdbc.driver.OracleStatementWrapper.executeBatch(OracleStatementWrapper.java:210)
at org.apache.tomcat.dbcp.dbcp.DelegatingStatement.executeBatch(DelegatingStatement.java:294)
at com.troux.servercommon.db.BulkTableAdder.flushToDatabase(BulkTableAdder.java:242)
at com.troux.tux.TUXManagerImpl.flushToDatabase(TUXManagerImpl.java:156)
at com.troux.tux.TUXManagerFactory.updateBatches(TUXManagerFactory.java:184)
at com.troux.tux.TUXManagerFactory.commitBatches(TUXManagerFactory.java:189)
at com.troux.tux.stage.StageAPIImpl.processCounters(StageAPIImpl.java:201)
at com.troux.tux.stage.StageAPIImpl.saveObject(StageAPIImpl.java:165)
at com.troux.tux.processor.extract.sax.ComponentHandler.verifyAndSave(ComponentHandler.java:674)
at com.troux.tux.processor.extract.sax.ComponentHandler.endElement(ComponentHandler.java:319)
at com.troux.tux.processor.extract.sax.SaxElementProcessor.endElement(SaxElementProcessor.java:232)
at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source)
at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanEndElement(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at com.troux.tux.processor.extract.steps.ExtractProcessingStep.runStep(ExtractProcessingStep.java:123)
at com.troux.tux.processor.TUXJobProcessorImpl.runAllSteps(TUXJobProcessorImpl.java:88)
at com.troux.tux.processor.extract.ExtractProcessorImpl.doRunJobWork(ExtractProcessorImpl.java:191)
at com.troux.tux.processor.JobProcessorImpl.runJob(JobProcessorImpl.java:80)
at com.troux.tux.jobmanager.jobrunners.TUXJobRunner.doRunJob(TUXJobRunner.java:110)
at com.troux.tux.jobmanager.jobrunners.TUXJobRunner$1.doWork(TUXJobRunner.java:36)
at com.troux.tux.jobmanager.jobrunners.TUXJobRunner.impersonateJobUser(TUXJobRunner.java:91)
at com.troux.tux.jobmanager.jobrunners.TUXJobRunner.runJob(TUXJobRunner.java:51)
at com.troux.tux.jobmanager.jobrunners.TUXSimpleJobRunnerThread.processObject(TUXSimpleJobRunnerThread.java:29)
at com.troux.common.ThreadPool$PooledThread.run(ThreadPool.java:211)
at java.lang.Thread.run(Thread.java:595)

Comments

Need more details, including the Forms and DB versions you are using.
Are you using Forms blocks based on DB (i.e. "Data Blocks") or you are executing your own DML and populating (and altering) fields or both? And, how are you "committing" (COMMIT_FORM, or Save button or something else)? Be specific; if you are executing the "COMMIT" - are you using COMMIT or COMMIT_FORM?

MarcLaf

Using Oracle Forms 12c and Oracle DB 19. Yes, I'm using data blocks, based on tables from DB. User clicks a button to save and I'm doing a COMMIT_FORM.
Thanks,
Marc L

MarcLaf

Here's part of my Key-Commit code:
image.pngMarc L

Hmmm - If you are using a true "data block", there is often little reason to execute your own POST. Forms will do this automatically as soon as a the first change is made. This will result in a record lock. I'm not saying that doing a POST (or COMMIT_FORM) is a bad thing. I'm just saying that in a block managed by Forms, most of the "right" processing will happen automatically (a benefit of using Forms).
To your question, I have not tested, but suspect the behavior based on your description of what you are doing, is correct. Validation must occur upon POSTing, but also again when COMMITing. If you look at the Builder Help related to POST and COMMIT_FORM you will see that it supports this belief.
If you wanted to continue on this path, it might help to change the Validation Unit property (form level), as this might offer some relief. Of course doing this could also change the desired behavior of something else. Again, check the Builder Help for details on this property.

1 - 4
Locked Post
New comments cannot be posted to this locked post.

Post Details

Locked on Dec 11 2009
Added on Dec 16 2007
18 comments
38,289 views