1 Reply Latest reply on May 16, 2008 12:36 PM by Adrian Brock

    Deploying legacy (EJB2.x) MDB on JBoss 4.2 gives error

    whafrog Newbie

      As there seems to be a basic incompatibility with version 4.2.0 connecting to a message queue hosted on legacy version 3.0.3 (issue posted on the JNDI board), I thought I'd just move the legacy app containing the message bean to version 4.2.0. In theory I should just be able to take the .jar file containing the message bean and deploy it. No special configuration required as the legacy app uses "queue/testQueue".

      After fixing an ejb-jar.xml issue that 3.0.3 didn't have a problem with, I now get this error on 4.2.0:

      13:57:43,375 WARN [verifier] EJB spec violation:
      Bean : AutoCreditMessageBean
      Section: 15.7.2
      Warning: A message driven bean must implement, directly or indirectly, the message listener class


      But it does:

      public class AutoCreditMessageBean implements javax.ejb.MessageDrivenBean, javax.jms.MessageListener
      {
      ...
      }


      And the deployment descriptor specifies it.

      ejb-jar.xml:
      <?xml version="1.0" encoding="UTF-8"?>
      <!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN" "http://java.sun.com/dtd/ejb-jar_2_0.dtd">
      
      <ejb-jar>
       <enterprise-beans>
       <message-driven>
      
       <ejb-name>AutoCreditMessageBean</ejb-name>
       <ejb-class>org.myorg.AutoCreditMessageBean</ejb-class>
      
       <transaction-type>Container</transaction-type>
       <message-selector>messageType = 'request'</message-selector>
       <messaging-type>javax.jms.MessageListener</messaging-type>
      
       <acknowledge-mode>Auto-acknowledge</acknowledge-mode>
      
       <message-driven-destination>
       <destination-type>javax.jms.Queue</destination-type>
       </message-driven-destination>
      
       </message-driven>
      
       </enterprise-beans>
      
       <assembly-descriptor>
       </assembly-descriptor>
      
      </ejb-jar>


      jboss.xml:
      <?xml version="1.0" encoding="UTF-8"?>
      
      <jboss>
      
      <secure>false</secure>
      
      <container-configurations />
      
      <resource-managers />
      
      <enterprise-beans>
      
       <message-driven>
       <ejb-name>AutoCreditMessageBean</ejb-name>
       <destination-jndi-name>queue/testQueue</destination-jndi-name>
       </message-driven>
      
      </enterprise-beans>
      </jboss>


      Any thoughts? Or do I have to rewrite this to EJB3?