IBM Support

PI93822: EJB AUTO-LINK FAILS FOR JAVA:GLOBAL WITH BEANNAME PROVIDED

Subscribe to this APAR

By subscribing, you receive periodic emails alerting you to the status of the APAR, along with a link to the fix after it becomes available. You can track this item individually or track all items by product.

Notify me when this APAR changes.

Notify me when an APAR for this component changes.

APAR status

  • Closed as program error.

Error description

  • When an EJB reference is defined in java:global and the option
    "Allow EJB reference targets to resolve automatically" is used
    to deploy the application, the application fails to start.
    
    The following is not working whilest compliant with the jee
    specification:
    @Stateless(name="FooBean")
    @Remote(Foo.class)
    @EJB(beanInterface=Foo.class, beanName="FooBean", name="java:
    global/env/foo")
    public class FooBean implements Foo {
    [...]
    
    during the deployment the following log statements appear:
    [21.11.17 23:40:05:660 MEZ] 000006d0 InjectionProc E
    CWNEN0044E: Es
    wurde keine Ressourcenreferenzenbindung für die
    Ressourcenreferenz java:
    global/env/foo gefunden, die für die Komponente java:global
    definiert
    ist.
    [21.11.17 23:40:05:661 MEZ] 000006d0 InjectionProc E
    CWNEN0011E: Die
    Injektionsengine konnte Bindungen für die Metadaten wegen des
    folgenden
    Fehlers nicht verarbeiten: CWNEN0044E: A resource reference
    binding
    could not be found for the following resource references [java:
    global/env/foo], defined for the java:global component.
    

Local fix

  • N/A
    

Problem summary

  • ****************************************************************
    * USERS AFFECTED:  All users of IBM WebSphere Application      *
    *                  Server with Enterprise JavaBean (EJB)       *
    *                  applications                                *
    ****************************************************************
    * PROBLEM DESCRIPTION: CWNEN0044E occurs for EJB reference     *
    *                      defined in java:global                  *
    ****************************************************************
    * RECOMMENDATION:                                              *
    ****************************************************************
    The error CWNEN0044E occurs for EJB references when a binding
    is not provided to link the reference to an EJB implementation.
    The option "Allow EJB reference targets to resolve
    automatically" may be selected during application deployment
    to request that the application server automatically link an
    EJB to the reference when a binding is not specified in
    ibm-ejb-jar-bnd.xml.
    This auto-link support will only link EJB references to beans
    that are defined in the same application as the reference. For
    EJB references declared in java:global, a binding is required
    since the reference could be to a bean declared in any
    installed application, not just the application where the
    reference is defined.
    However, if an EJB reference is declared in java:global, and
    the EJB reference clearly identifies a bean implementation in
    the same application, then the auto-link support should work,
    and not require a specific binding.
    An example of this scenario is as follows:
    @Stateless(name="FooBean")
    @Remote(Foo.class)
    @EJB(name="java:global/env/foo", beanInterface=Foo.class,
    beanName="FooBean")
    public class FooBean implements Foo {
    In this example, the beanName attribute clearly identifies the
    reference should be linked to the "FooBean" in the same
    application, and therefore the auto-link support should work
    without requiring a binding. Unfortunately, this scenario
    results in an CWNEN0044E error being logged and the appliation
    fails to start.
    

Problem conclusion

  • The EJB auto-link support that is enabled by selecting "Allow
    EJB reference targets to resolve automatically" has been
    changed to correctly link an EJB reference to a bean in the
    same application even when the reference is declared in
    java:global if the following are true:
    
    1 - the EJB reference provides the beanInterface and beanName
    attributes on the @EJB annotation or ejb-link element in
    ejb-jar.xml
    
    2 - no EJB reference with the same java:global name appears in
    other applications
    
    The fix for this APAR is currently targeted for inclusion in
    fix pack 9.0.0.8.  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

    PI93822

  • Reported component name

    WEBS APP SERV N

  • Reported component ID

    5724H8800

  • Reported release

    900

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt / Xsystem

  • Submitted date

    2018-02-14

  • Closed date

    2018-06-13

  • Last modified date

    2018-06-13

  • 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



Document information

More support for: WebSphere Application Server
General

Software version: 900

Reference #: PI93822

Modified date: 13 June 2018


Translate this page: