IBM Support

PI41728: An inherited qualifier with a value is overridden but the more d istant value's ancestor is applied to a bean.

Subscribe

You can track all active APARs for this component.

 

APAR status

  • Closed as program error.

Error description

  • When inherited qualifiers are overridden Liberty profile will
    discard one of the two instances of the qualifier. However
    it did not guarantee that it would discard the qualifier
    attached to the class' more distant ancestor.
    
    When using qualifiers in CDI the runtime may not correctly
    resolve to the correct qualifier when multiple qualifiers
    and class inheritence are used together.
    

Local fix

Problem summary

  • ****************************************************************
    * USERS AFFECTED:  All users of IBM WebSphere Application      *
    *                  Server Liberty Profile - Contexts and       *
    *                  Dependency Injection (CDI)                  *
    ****************************************************************
    * PROBLEM DESCRIPTION: An inherited qualifier with a value is  *
    *                      overridden but the more distant value's *
    *                      ancestor is applied to a bean.          *
    ****************************************************************
    * RECOMMENDATION:                                              *
    ****************************************************************
    When using Qualifiers in CDI the runtime may apply the qualifier
    to the injected object from any ancestor class rather than the
    closest ancestor class with that qualifier
    

Problem conclusion

  • When Liberty profile's CDI implementation is scanning beans for
    annotations it recursively climbs the bean's type hierarchy in
    order to search for any annotations it inherits. If it finds any
    inherited types it puts them into a set. At a later point types
    are taken out of that set, and any duplicates are discarded.
    
    The problem is the set does not preserve the origin point of
    these inherited annotations. As a result it might select an
    annotation from a grandparent and then discard the same
    annotation from a parent as a duplicate. If the values in that
    annotation were changed by the parent this could result in
    errors
    
    We now check for duplicates at the point we detect annotations
    and use that to ensure we take the instance from the closest
    ancestor.
    
    The fix for this APAR is currently targeted for inclusion in fix
    pack 8.5.5.6.  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

    PI41728

  • Reported component name

    WAS LIBERTY COR

  • Reported component ID

    5725L2900

  • Reported release

    855

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt / Xsystem

  • Submitted date

    2015-05-26

  • Closed date

    2015-05-27

  • Last modified date

    2015-05-27

  • 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

    WAS LIBERTY COR

  • Fixed component ID

    5725L2900

Applicable component levels

  • R855 PSY

       UP

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

Document Information

Modified date:
28 April 2022