My Oracle Support Banner

How Should Static Variables Be Used In Java Batch Programs? (Doc ID 1081090.1)

Last updated on MARCH 25, 2019

Applies to:

Oracle Utilities Customer Care and Billing - Version 2.0.1 to 2.3.0.0.0 [Release 2.0 to 2.3]
Information in this document applies to any platform.

Goal

Why are values sometimes saved correct or incorrectly when stored in static variables during a batch run specifically batch executed using thread pool?


EXAMPLE 1: Static Variable used as counter

X is a static variable

Start Batch Run 1: X = 0, 0 is the default value for integer
End Batch Run 1: X = 5
Start Batch Run 2: X = 5

JVM threadpools are started each time for the batch run but the threadpool seems to remember the previous value.

Why does X retain its value from the previous batch run?




EXAMPLE 2: Static Variable used to store batch parameter value

X is a static variable

Batch Parameter = A
Batch Run 1: X = A

Batch Parameter = B
Batch Run 2: X can either be A, B or blank.

The batch parameter Report Name value was change so when the batch was executed, the batch raised a null pointer exception since the static variable didn't have any value. But when the batch was executed again, it now has a value.

Why is that there are times when the variable stores different value?

Solution

To view full details, sign in with your My Oracle Support account.

Don't have a My Oracle Support account? Click to get started!


In this Document
Goal
Solution
References


My Oracle Support provides customers with access to over a million knowledge articles and a vibrant support community of peers and Oracle experts.