IBM Support

PI80635: CDI implementation does not support batch artifact loading via batch.xml

Fixes are available

17.0.0.2: WebSphere Application Server Liberty 17.0.0.2
17.0.0.3: WebSphere Application Server Liberty 17.0.0.3
17.0.0.4: WebSphere Application Server Liberty 17.0.0.4
18.0.0.1: WebSphere Application Server Liberty 18.0.0.1
18.0.0.2: WebSphere Application Server Liberty 18.0.0.2
18.0.0.3: WebSphere Application Server Liberty 18.0.0.3
18.0.0.4: WebSphere Application Server Liberty 18.0.0.4
19.0.0.1: WebSphere Application Server Liberty 19.0.0.1
19.0.0.2: WebSphere Application Server Liberty 19.0.0.2
19.0.0.3: WebSphere Application Server Liberty 19.0.0.3
19.0.0.4: WebSphere Application Server Liberty 19.0.0.4
19.0.0.5: WebSphere Application Server Liberty 19.0.0.5
19.0.0.6: WebSphere Application Server Liberty 19.0.0.6
19.0.0.7: WebSphere Application Server Liberty 19.0.0.7
19.0.0.8: WebSphere Application Server Liberty 19.0.0.8
19.0.0.9: WebSphere Application Server Liberty 19.0.0.9
19.0.0.10: WebSphere Application Server Liberty 19.0.0.10
19.0.0.11: WebSphere Application Server Liberty 19.0.0.11
19.0.0.12: WebSphere Application Server Liberty 19.0.0.12
20.0.0.1: WebSphere Application Server Liberty 20.0.0.1
20.0.0.2: WebSphere Application Server Liberty 20.0.0.2
20.0.0.3: WebSphere Application Server Liberty 20.0.0.3
20.0.0.4: WebSphere Application Server Liberty 20.0.0.4
20.0.0.5: WebSphere Application Server Liberty 20.0.0.5
20.0.0.6: WebSphere Application Server Liberty 20.0.0.6
20.0.0.7: WebSphere Application Server Liberty 20.0.0.7
20.0.0.8: WebSphere Application Server Liberty 20.0.0.8
20.0.0.9: WebSphere Application Server Liberty 20.0.0.9
20.0.0.10: WebSphere Application Server Liberty 20.0.0.10
20.0.0.11: WebSphere Application Server Liberty 20.0.0.11
20.0.0.12: WebSphere Application Server Liberty 20.0.0.12
21.0.0.3: WebSphere Application Server Liberty 21.0.0.3
21.0.0.4: WebSphere Application Server Liberty 21.0.0.4
21.0.0.5: WebSphere Application Server Liberty 21.0.0.5
21.0.0.6: WebSphere Application Server Liberty 21.0.0.6
21.0.0.7: WebSphere Application Server Liberty 21.0.0.7
21.0.0.8: WebSphere Application Server Liberty 21.0.0.8
21.0.0.9: WebSphere Application Server Liberty 21.0.0.9
21.0.0.1: WebSphere Application Server Liberty 21.0.0.1
21.0.0.2: WebSphere Application Server Liberty 21.0.0.2
21.0.0.10: WebSphere Application Server Liberty 21.0.0.10
21.0.0.11: WebSphere Application Server Liberty 21.0.0.11
21.0.0.12: WebSphere Application Server Liberty 21.0.0.12
22.0.0.1: WebSphere Application Server Liberty 22.0.0.1
22.0.0.2: WebSphere Application Server Liberty 22.0.0.2
22.0.0.3: WebSphere Application Server Liberty 22.0.0.3
22.0.0.4: WebSphere Application Server Liberty 22.0.0.4

Subscribe

You can track all active APARs for this component.

 

APAR status

  • Closed as program error.

Error description

  • The batch runtime provides a few options to load batch
    artifacts referenced from the job definition XML (JSL) file.
    In the presence of a feature enabling CDI (such as cdi-1.2),
    batch will first try to load the batch artifacts through the
    CDI engine, as CDI managed beans.  If it cannot, batch will
    load and instantiate by plain Java reflection
    (Class.newInstance()).
    
    Whether the batch artifacts are loaded as CDI beans or not,
    the batch contexts and properties will be injected, either
    by CDI or a custom batch injection routine.   However,
    injection of other CDI "application-level" beans will only
    occur in the cases when artifacts are loaded as CDI beans,
    and will be performed by the CDI engine.
    
    A batch.xml side file can be used in artifact loading to
    provide naming indirection, e.g. to map a short name to a
    fully-qualified class name, e.g.
    
    <ref id="myDecider"
    class="com.ibm.samples.TransitionDecider" />
    
    The batch runtime was, incorrectly, always loading such
    batch.xml-mapped objects using the non-CDI loading
    mechanism, and failing to perform injection of application
    beans (other than batch contexts and properties).
    

Local fix

Problem summary

  • ****************************************************************
    * USERS AFFECTED:  All users of IBM WebSphere Application      *
    *                  Server Liberty- Batch                       *
    ****************************************************************
    * PROBLEM DESCRIPTION: Batch artifacts loaded via batch.xml    *
    *                      entries are not loaded as CDI beans     *
    ****************************************************************
    * RECOMMENDATION:                                              *
    ****************************************************************
    The batch runtime provides a few options to load batch artifacts
    referenced from the job definition XML (JSL) file.   In the
    presence of a feature enabling CDI (such as cdi-1.2), batch will
    first try to load the batch artifacts through the CDI engine, as
    CDI managed beans.  If it cannot, batch will load and
    instantiate by plain Java reflection (Class.newInstance()).
    
    Whether the batch artifacts are loaded as CDI beans or not, the
    batch contexts and properties will be injected, either by CDI or
    a custom batch injection routine.   However, injection of other
    CDI "application-level" beans will only occur in the cases when
    artifacts are loaded as CDI beans, and will be performed by the
    CDI engine.
    
    A batch.xml side file can be used in artifact loading to provide
    naming indirection, e.g. to map a short name to a fully-
    qualified class name, e.g.
    
        <ref id="myDecider"
    class="com.ibm.samples.TransitionDecider" />
    
    The batch runtime was, incorrectly, always loading such
    batch.xml-mapped objects using the non-CDI loading mechanism,
    and failing to perform injection of application beans (other
    than batch contexts and properties).
    

Problem conclusion

  • Changed artifact loading so that the runtime will first attempt
    to load a fully-qualified class name in a batch.xml entry
    referenced from JSL as a CDI bean, and only upon failure attempt
    to load this as a non-CDI bean.
    
    More generally, we added a warning message (CWWKY0041W) when the
    user has CDI active (through a feature like cdi-1.2), but is not
    using CDI to inject their batch artifacts.    This will help in
    cases like the originally reported problem where the user
    intended to use CDI but is not.  It also serves as a general
    warning that integration with CDI is a best practice that we
    encourage.
    
    The issuing of this message is tracked to avoid being
    exceedingly verbose.
    
    The fix for this APAR is currently targeted for inclusion in fix
    pack 17.0.0.2.  Please refer to the Recommended Updates page for
    delivery information:
    http://www.ibm.com/support/docview.wss?rs=180&uid=swg27004980
    

Temporary fix

Comments

APAR Information

  • APAR number

    PI80635

  • Reported component name

    LIBERTY PROFILE

  • Reported component ID

    5724J0814

  • Reported release

    CD0

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt / Xsystem

  • Submitted date

    2017-04-26

  • Closed date

    2017-05-22

  • Last modified date

    2017-05-22

  • APAR is sysrouted FROM one or more of the following:

  • APAR is sysrouted TO one or more of the following:

Fix information

  • Fixed component name

    LIBERTY PROFILE

  • Fixed component ID

    5724J0814

Applicable component levels

  • RCD0 PSY

       UP

[{"Business Unit":{"code":"BU059","label":"IBM Software w\/o TPS"},"Product":{"code":"SSEQTP","label":"WebSphere Application Server"},"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"CD0","Line of Business":{"code":"LOB45","label":"Automation"}}]

Document Information

Modified date:
04 May 2022