IBM Support

PM88113: PROBLEM WITH MDB DEPLOYMENT WHEN THE MDB CLASS IMPLEMENTSô CUSTOM INTERFACES.

Subscribe

You can track all active APARs for this component.

APAR status

  • Closed as program error.

Error description

  • Stacktrace:                                                    ￴
    
    [4/15/13 12:53:23:207 CEST] 0000001c annotations   E
    
    AnnotativeMetadataManagerImpl merge Caught exception while
    merging
    com.ibm.wsspi.amm.validate.ValidationException: the class
    <class Name here> contains the @MessageDriven annotation but is
    not a valid message-driven bean: no message listener interface
    can be determined
    at com.ibm.ws.amm.validate.ejb.MessageDrivenValidator.getMessage
    Lis tenerInterface(MessageDrivenValidator.java:136)
    
    at com.ibm.ws.amm.validate.ejb.MessageDrivenValidator.validateEn
    ter priseBean(MessageDrivenValidator.java:78)
    
    at com.ibm.ws.amm.validate.ejb.EnterpriseBeanCommonValidator.val
    ida te(EnterpriseBeanCommonValidator.java:62)
    
    at com.ibm.wsspi.amm.merge.AbstractMergeAction.merge(AbstractMer
    geA ction.java:237)
    

Local fix

  • Candidate to be fixed in next release.
    

Problem summary

  • ****************************************************************
    * USERS AFFECTED:  All users of IBM WebSphere Application      *
    *                  Server V7.0 deploying EJB JAR modules with  *
    *                  Message Driven Beans.                       *
    ****************************************************************
    * PROBLEM DESCRIPTION: A ValidationException is thrown when    *
    *                      a message driven bean has more than     *
    *                      one message listener interface.         *
    ****************************************************************
    * RECOMMENDATION:                                              *
    ****************************************************************
    A message driven bean in an EJB Jar module fails to deploy
    because no message listener interface is found, even though
    a correctly specified message listener interface is present in
    the bean.
    The problem symptom is a validation exception thrown when the
    EJB JAR module is deployed.  The validation exception causes
    the deployment to fail.
    The problem occurs when the entire collection of the message
    driven bean class and its superclasses implements more than
    one interface other than "java.io.Serializable", other than
    "java.io.Externalizable", and other than any interface having
    a qualified name which begins with "javax.ejb".
    Whether the validation exception is correct or incorrect
    depends on the particular interfaces implemented by the
    message driven bean class and its superclasses.  The
    interfaces of the bean class and its superclasses must be
    examined to determine if the validation exception is correct.
    The following messages may be found in the log files:
    AnnotativeMetadataManagerImpl merge Caught exception while
    merging
    com.ibm.wsspi.amm.validate.ValidationException: the class
    < an application class name displayed here> contains the
    @MessageDriven annotation but is not a valid message-driven
    bean: no message listener interface can be determined
    at
    com.ibm.ws.amm.validate.ejb.MessageDrivenValidator.getMessageLis
    tenerInterface(MessageDrivenValidator.java:136)
    at
    com.ibm.ws.amm.validate.ejb.MessageDrivenValidator.validateEnter
    priseBean(MessageDrivenValidator.java:78)
    at
    com.ibm.ws.amm.validate.ejb.EnterpriseBeanCommonValidator.valida
    te(EnterpriseBeanCommonValidator.java:62)
    at
    com.ibm.wsspi.amm.merge.AbstractMergeAction.merge(AbstractMergeA
    ction.java:237)
    at
    com.ibm.ws.amm.AnnotativeMetadataManagerImpl.merge(AnnotativeMet
    adataManagerImpl.java:159)
    at
    com.ibm.ws.amm.commonarchive.AnnotationsProcessorImpl.merge(Anno
    tationsProcessorImpl.java:115)
    at
    org.eclipse.jst.j2ee.commonarchivecore.internal.impl.EJBJarFileI
    mpl.processAnnotations(EJBJarFileImpl.java:673)
    at
    org.eclipse.jst.j2ee.commonarchivecore.internal.impl.EJBJarFileI
    mpl.basicGetDeploymentDescriptor(EJBJarFileImpl.java:581)
    at
    org.eclipse.jst.j2ee.commonarchivecore.internal.impl.EJBJarFileI
    mpl.getDeploymentDescriptor(EJBJarFileImpl.java:429)
    at
    org.eclipse.jst.j2ee.commonarchivecore.internal.impl.EJBJarFileI
    mpl.getDeploymentDescriptor(EJBJarFileImpl.java:297)
    at
    com.ibm.websphere.management.application.AppDeploymentUtil.getMo
    duleVersion(AppDeploymentUtil.java:1442)
    at
    com.ibm.websphere.management.application.AppDeploymentUtil.isEE5
    SchemaDD(AppDeploymentUtil.java:1419)
    at
    com.ibm.ws.management.application.client.AppInstallHelper.checkI
    fEE5ModulesContainXMIBindings(AppInstallHelper.java:1108)
    at
    com.ibm.ws.management.application.client.AppInstallHelper.checkI
    fEE5ModulesContainXMIBindings(AppInstallHelper.java:1095)
    at
    com.ibm.ws.management.application.client.AppInstallHelper.checkF
    orEE5Restrictions(AppInstallHelper.java:355)
    at
    com.ibm.ws.management.application.task.ValidateEE5RestrictionTas
    k.performTask(ValidateEE5RestrictionTask.java:126)
    at
    com.ibm.ws.management.application.SchedulerImpl.run(SchedulerImp
    l.java:294)
    at java.lang.Thread.run(Thread.java:738)
    

Problem conclusion

  • The correct requirement for message listener interfaces is
    that the message driven bean must either:
    
    1) Have a message listener interface specified by a
    "listener-type" element in the EJB JAR deployment descriptor.
    
    2) Have a message listener interface specified by a
    "messageListenerInterface" value through the "@MessageDriven"
    annotation of the message driven bean.  For the message
    listener interface to be valid the bean class must implement
    the message listener interface.
    
    3) Have a message listener interface as identified by the
    actual interfaces message driven bean class.
    
    Case (1) supersedes cases (2) and (3).  Case (2) supersedes
    case (3).
    
    For case (3), the identification of the message listener
    interface from the message driven bean class requires that the
    bean class or one of its superclasses implement exactly one
    interface other than "java.io.Serializable", other than
    "java.io.Externalizable", and other than any interface having
    a qualified name which begins with "javax.ejb".
    
    The identification of the message listener interface, when
    correctly implemented, separately tests the declared
    interfaces of the message driven bean class, and separately
    tests the declared interfaces of each of the superclasses of
    the message driven bean class.  A message listener interface
    is identified if a class implementing exactly one interface is
    located before a class implementing more than one such
    interface is located.  (Considering only interfaces other than
    "java.io.Serializable", other than "java.io.Externalizable",
    and other than any with a qualified name which starts with
    "javax.ejb".)
    
    Prior to this fix, the implementation incorrectly obtained all
    interfaces of the message driven bean class and its
    superclasses, and selected the message listener interface from
    that entire collection of interfaces.  This fix corrects the
    implementation to separately test the message driven bean
    class and to separately test each superclasses of the message
    driven bean class.
    The fix for this APAR is currently targeted for inclusion in
    fix pack 7.0.0.31.  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

    PM88113

  • Reported component name

    WEBSPHERE APP S

  • Reported component ID

    5724J0800

  • Reported release

    700

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt

  • Submitted date

    2013-04-30

  • Closed date

    2013-06-11

  • Last modified date

    2013-06-11

  • 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

    WEBSPHERE APP S

  • Fixed component ID

    5724J0800

Applicable component levels

  • R700 PSY

       UP



Document information

More support for: WebSphere Application Server
General

Software version: 7.0

Reference #: PM88113

Modified date: 11 June 2013