Search Results qp_java_engine_support_pvt




Overview

QP_JAVA_ENGINE_SUPPORT_PVT is a private (PVT) PL/SQL package body owned by the APPS schema in Oracle E-Business Suite Release 12.1.1 and 12.2.2. As its name implies, the package provides supporting infrastructure for the Oracle Advanced Pricing Java engine, which handles pricing engine execution outside the core PL/SQL pricing logic. The specific responsibility of this package, as documented in the ETRM metadata, is to provide a thin wrapper around the Oracle DBMS_LOCK built-in package so that the Java pricing engine and its surrounding PL/SQL components can request and release named user locks in a controlled, consistent manner.

Because the package is classified as PVT rather than PUBLIC, it is not intended as a supported extension point for customer code. It is an internal utility consumed by Oracle's own Advanced Pricing modules. Its narrow scope — allocating, requesting, and releasing serialized locks by name — reflects a common EBS design pattern in which concurrent or parallel pricing operations must coordinate access to shared resources without relying on row-level database locks that could be held across transaction boundaries in unpredictable ways.

Key Procedures and Functions

  • REQUEST_LOCK — Acquires a named lock on behalf of the caller. Two overloaded forms are documented: one accepting a numeric release-on-commit flag and one accepting a boolean release-on-commit parameter. The numeric form converts the flag to boolean and delegates to the boolean form. The boolean form allocates a unique lock handle for the supplied lock name via DBMS_LOCK.ALLOCATE_UNIQUE, then calls DBMS_LOCK.REQUEST with the requested lock mode, timeout, and release-on-commit behavior. The numeric status code returned by DBMS_LOCK.REQUEST is passed back to the caller. Both forms are declared with PRAGMA AUTONOMOUS_TRANSACTION, ensuring that the lock request is committed independently of the caller's transaction and is not rolled back if the caller later fails.
  • RELEASE_LOCK — Releases a previously requested named lock. It allocates the unique handle for the given lock name and invokes DBMS_LOCK.RELEASE, returning the resulting status code to the caller. This allows the pricing engine to free a serialization point explicitly once a critical section has completed, rather than waiting for session termination or commit.

Tables Accessed

The package does not read or write any application tables. Its only external dependency is the Oracle-supplied DBMS_LOCK package, referenced through an APPS synonym as documented in the ETRM metadata. Lock handles and lock state are maintained internally by DBMS_LOCK in the database's lock management structures and the DBMS_LOCK_ALLOCATED dictionary view; no Advanced Pricing or Oracle EBS base tables are touched by this code.

Usage Notes

This package is invoked internally by Oracle Advanced Pricing components that require cross-session serialization, typically when the Java pricing engine must ensure that only one process manipulates a given pricing entity or cache region at a time. It is not designed to be called directly from Oracle Forms or concurrent program definitions. Custom code should not depend on this private package, since its signature and behavior are subject to change without notice in Oracle patches and upgrades. Where customers need similar serialization, they should call DBMS_LOCK directly or use Oracle's documented locking facilities. The PRAGMA AUTONOMOUS_TRANSACTION declarations in both lock functions are significant: they mean locks are acquired and released independently of the calling transaction's commit or rollback semantics, which is essential when the caller may be a long-running Java engine process managing its own transaction boundaries.