IBM Support

PM62774: CDI POSTCONSTRUCT INJECTION DOES NOT WORK IN @STARTUP EJBS

Subscribe

You can track all active APARs for this component.

 

APAR status

  • Closed as program error.

Error description

  • Contexts and Dependency Injection (CDI) constructor injection
    DOES NOT work in @Startup EJBs
    
    OWB keys its various services by classloader. All EJBs in an ear
    share the same classloader, so to make things work we do not
    start the CDI contexts or provide bean information until all ejb
    modules have started (basically when the ear finishes startup).
    To do so any earlier would mean we would only have partial
    information about the EJBs & classes in those services.
    
    Effectively that means we can not provide injection into
    @Startup EJBs, because they start when the individual EJB
    modules start and none of the OWB services are started yet. The
    CDI 1.0 spec itself doesn't talk about @Startup EJB and how that
    affects life cycles, which is why this is a bit of a grey area.
    

Local fix

Problem summary

  • ****************************************************************
    * USERS AFFECTED:  IBM WebSphere Application Server version 8  *
    *                  users of CDI with EJB.                      *
    ****************************************************************
    * PROBLEM DESCRIPTION: @Singleton @Startup EJBs that reference *
    *                      a                                       *
    *                      CDI injected object in an               *
    *                      @PostConstruct                          *
    *                      method will fail.                       *
    ****************************************************************
    * RECOMMENDATION:                                              *
    ****************************************************************
    The CDI Container starts its lifecycle too late during the
    startup of an application to be active when the PostConstruct
    method of an @Singleton @Startup ejb is run, leading to a null
    BeanManager and inactive scopes.
    

Problem conclusion

  • A JVM property "com.ibm.ws.cdi.immediate.ejb.start" has been
    introduced that defaults to false.  When this property is set
    to true, the CDI container and its lifecycles will start for
    all EJB modules as soon as the application begins to start.
    
    The fix for this APAR is currently targeted for inclusion in
    fix packs 8.0.0.4 and 8.5.0.1.  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

    PM62774

  • Reported component name

    WEBS APP SERV N

  • Reported component ID

    5724H8800

  • Reported release

    800

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt

  • Submitted date

    2012-04-18

  • Closed date

    2012-07-09

  • Last modified date

    2012-07-09

  • 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

    WEBS APP SERV N

  • Fixed component ID

    5724H8800

Applicable component levels

  • R800 PSY

       UP

  • R850 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":"8.0","Line of Business":{"code":"LOB45","label":"Automation"}}]

Document Information

Modified date:
28 October 2021