« Application Module Pool Empty After a Certain Period of Inactivity | Main | oracle.jbo.Session User Data Hashtable Not Saved Across Passivation and Activation »

Set jbo.ampool.doampooling=false to Reproduce Problems Related to AM Passivation / Activation


Some users report intermittent errors like the following, occurring under heavy load in the Production environment:

oracle.jbo.SQLStmtException:
JBO-27120: SQL error during query execution. Statement: <SQL Statement>
(...)
java.sql.SQLException: Missing IN or OUT parameter at index:: <index number>
or

JBO-27122: SQL error during statement preparation. Statement: <SQL Statement>

or
JBO-30003: The application pool (AppModuleLocal) failed to checkout an application module due to the following exception:
oracle.jbo.JboException: JBO-29000: Unexpected exception caught:
oracle.jbo.common.UnknownSQLTypeException,
msg=JBO-25000: Unknown SQL type: null

These errors are difficult to diagnose as developers cannot reproduce in the Development or Test environments.


There is then a strong suspicion that the problem is related to the Application Module passivation / activation.

To be 100% sure this is the case, you can force it to occur in your Development environment by setting jbo.ampool.doampooling=false (or uncheck the "Enable Application Module Pooling" in your Configuration):

doampooling:


From the ADF Developer's Guide topic "28.3 Controlling the State Management Release Level" ("Note" under 28.3.1 Supported Release Levels):
 "Setting this property [jbo.ampool.doampooling] to false is useful to discover problems in your application logic that might occur when reactivation does occur due to unpredictable load on your system."



If the problem reproduces then, you'll be 100% sure the problem occurs at the reactivation of your Application Module.
Please contact Oracle Support Services then so that a Support Engineer can help you in fixing the problem.

We recommend you to test all your applications in your Development environment with this parameter jbo.ampool.doampooling=false to ensure they are activation-safe, as explained in "28.8 Testing to Ensure Your Application Module is Activation-Safe" of the ADF Developer's Guide.

Forewarned is forarmed...


Comments (10)

Kuba:

Hi,
I recently had an "Unknown SQL type" exception in my web application... I turned off AM Pooling and recreated this exception.
I have parametrized ViewObject with 3 String parameters, jspx site with search form and read only table for search results. Table and search form are based od different iterators (search form iterator is always in findMode). On first search everything seems fine. But when I try to do second search I'm getting "Unknown SQL type: null" exception. It works properly only when all the parameters in the ViewObject are set.
I tried to overload activateState and passivateState methods in VO but result is excactly the same. ActivateState method doesn't even run before exception is thrown... Of course with AM pooling turned on everything works fine :/
If You have any tips I'll be very greatfull.
Thank You

Part of stack trace:
oracle.jbo.common.UnknownSQLTypeException: JBO-25000: Nieznany typ SQL: null at oracle.jbo.domain.NullValue.(NullValue.java:75) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) at java.lang.reflect.Constructor.newInstance(Constructor.java:494) at oracle.jbo.domain.TypeConvMapEntry.convert(TypeConvMapEntry.java:69) at oracle.jbo.domain.TypeFactory.get(TypeFactory.java:739) at oracle.jbo.domain.TypeFactory.getInstance(TypeFactory.java:90) at oracle.jbo.server.AttributeDefImpl.getXMLContentValue(AttributeDefImpl.java:2722) at oracle.jbo.server.ViewObjectImpl.activateParams(ViewObjectImpl.java:13252) at oracle.jbo.server.ViewObjectImpl.doActivateSettings(ViewObjectImpl.java:13306) at oracle.jbo.server.ViewObjectImpl.doActivateSettings(ViewObjectImpl.java:13189) at oracle.jbo.server.ApplicationModuleImpl.activateVOs(ApplicationModuleImpl.java:7139) at oracle.jbo.server.ApplicationModuleImpl.doActivateState(ApplicationModuleImpl.java:6962) at oracle.jbo.server.ApplicationModuleImpl.doActivateAMState(ApplicationModuleImpl.java:6927)

Didier Laurent:

Kuba,

this is a known issue (Bug 5191597) for which a patch exists.
I also answered your OTN post http://forums.oracle.com/forums/thread.jspa?messageID=1581240

Either log a Service Request in Metalink or read instructions from Note 400316.1

Regards,

Didier.

Kuba:

Didier,

Thank You for quick reply. You really helped me a lot!

Regards,
Kuba

Didier Laurent:

You're welcome.
I'm happy I could help.

Didier.

Pat Lee:

Didier,

I saw that this bug is solved with JDeveloper 10.1.3.1.0 Production Release (http://www.oracle.com/technology/products/jdev/htdocs/10.1.3.1/101310fixlist.htm). Would using JDeveloper 10.1.3.1.0 be enough, or do I have to upgrade/patch my application server as well? The application server version is 10.1.3.0.

Regards, Pat

Didier Laurent:

Hi Pat,

as a rule of thumb, I would always advise you to install the ADF Runtime libraries in your iAS after an upgrade of JDeveloper (other than a Service Update that just includes Design Time fixes).
See remark A in the "Application Servers Supported by JDeveloper"

For more information, see the following documents:

Hope this helps,

Didier.

Pat Lee:

Hi Didier,

Thanks for the reply. My concern was indeed how to update without JDeveloper and drive mapping. The stand-alone installer is sufficient for me. (I was not aware of it's existence).

Note that the OTN howto deals with an upgrade from 9.0.5.x to 10g and is dating from August 2004. I think the article needs reviewing to match current technologies.

Thanks again for the help.

Regards,

Pat

Didier Laurent:

Hi Pat,

I'm not aware of changes in the ADF BC APIs, so I think the article is still valid.
However, I agree it would be better to update it to the current releases.

I'll forward your comment to the author.

Thanks,

Didier.

Syed Jabbar:

Hi Didier,

I am using JDeveloper 10.1.3.0.4
I developed an application and deployed to the Oracle Application Server 10g.

When I access the application from the server sometimes I get the error:
Missing IN or OUT parameter at index:: 1

I went through your blog in:
http://blogs.oracle.com/Didier/2006/11/12/

As you asked I un-checked the check box for Enable Application Module Pooling in Application Module configuration.
And the error was re-produced.

Now according to your suggestion, should I contact Oracle Support Services to fix it or you have other suggestions/idea?

Please advice

Thanks

Syed Jabbar

University of Windsor
Windsor, ON, Canada

Didier Laurent:

Hi Syed,

it seems you are hitting Bug 5524157 - INTERMITTENT "MISSING IN OR OUT PARAMETER AT INDEX:: 1" NAMED PARAM ADF/JSF

Please check Note 413797.1 I wrote in Metalink a few months ago.
It includes instructions on how to install a patch to fix the problem.

If you have any further question, please log a SR so that we improve the Note.

NB: Notes in Metalink include the following 2 questions:
. Did this article help solve your problem?
. Would you recommend this document to others?
You can also provide feedback on a Note this way.

Hope this helps,

Didier.

Post a comment

(If you haven't left a comment here before, you may need to be approved by the site owner before your comment will appear. Until then, it won't appear on the entry. Thanks for waiting.)

About This Entry

This page contains a single entry from the blog posted on November 12, 2006 8:35 AM.

The previous post in this blog was Application Module Pool Empty After a Certain Period of Inactivity.

The next post in this blog is oracle.jbo.Session User Data Hashtable Not Saved Across Passivation and Activation.

Many more can be found on the main index page or by looking through the archives.

Powered by
Movable Type and Oracle