0 Replies Latest reply on Feb 2, 2012 8:17 AM by Mario Rossi

    EJB - MDB - Oracle AQ - Deploy Exception - No property found for: destination

    Mario Rossi Newbie

      We are using Jboss 5.1.0 and a Oracle 10g database.

       

       

      <ejb-jar version="3.0" >

      <enterprise-beans>

      <message-driven>

       

      <ejb-name>TriggerEventDispatcher</ejb-name>

      <ejb-class>it.trs.vts.wpo.dispatcher.trigger.TriggerUpdate</ejb-class>

      <transaction-type>Bean</transaction-type>

      <messaging-type>javax.jms.MessageListener</messaging-type>

       

      </message-driven>

      </enterprise-beans>

      <?xml version="1.0" encoding="UTF-8"?>

       

      I created  an Oracle AQ on the db and I am trying to create a MessageDrivenBean so that some Oracle procedure can send message to the MDB.

       

      When i deploy the EJB i see this exception:

       

      org.jboss.deployers.spi.DeploymentException: Error for ActivationSpec class com.sun.genericra.inbound.ActivationSpec as JavaBean
              at org.jboss.deployers.spi.DeploymentException.rethrowAsDeploymentException(DeploymentException.java:49)
              at org.jboss.resource.deployment.ActivationSpecFactory.createActivationSpec(ActivationSpecFactory.java:135)
              at org.jboss.resource.deployers.RARDeployment.createActivationSpec(RARDeployment.java:313)
              at org.jboss.resource.deployers.RARDeployment.internalInvoke(RARDeployment.java:276)
      [...]

       

      Caused by: java.beans.IntrospectionException: No property found for: destination on JavaBean: com.sun.genericra.inbound.ActivationSpec@c806d893{ConnectionFactoryClassName = oracle.jms.AQjmsConnectionFactory},{QueueConnectionFactoryClassName = oracle.jms.AQjmsQueueConnectionFactory},{TopicConnectionFactoryClassName = oracle.jms.AQjmsTopicConnectionFactory},{XAConnectionFactoryClassName = oracle.jms.AQjmsXAConnectionFactory},{XAQueueConnectionFactoryClassName = oracle.jms.AQjmsXAQueueConnectionFactory},{XATopicConnectionFactoryClassName = oracle.jms.AQjmsXATopicConnectionFactory},{QueueClassName = null},{TopicClassName = null},{UnifiedDestinationClassName = oracle.jms.AQjmsDestination},{ConnectionFactoryProperties = null},{JndiProperties = null},{ProviderIntegrationMode = oracle},{CommonSetterMethodName = null},{SupportsXA = false},{RedeliveryInterval = 0},{RedeliveryAttempts = 0},{ClientID = null},{MessageSelector = null},{SubscriptionDurability = Non-Durable},{ConnectionFactoryJNDIName = null},{SubscriptionName = null},{DestinationJNDIName = null},{DestinationType = javax.jms.Destination},{DeadMessageDestinationType = javax.jms.Destination},{MaxPoolSize = 8},{DestinationProperties = null},{DeadMessageDestinationJndiName = null},{DeadMessageConnectionFactoryJndiName = null},{DeadMessageConnectionFactoryProperties = null},{DeadMessageDestinationClassName = null},{DeadMessageDestinationProperties = null},{SendBadMessagesToDMD = false},{EndpointReleaseTimeOut = 180},{InstanceCount = 1},{LoadBalancingRequired = true},{Instance ID = 0},{CustomLoadBalancingMessageSelector = },{ShareClientID = false}
              at org.jboss.util.propertyeditor.PropertyEditors.mapJavaBeanProperties(PropertyEditors.java:354)
              at org.jboss.util.propertyeditor.PropertyEditors.mapJavaBeanProperties(PropertyEditors.java:285)
              at org.jboss.resource.deployment.ActivationSpecFactory.createActivationSpec(ActivationSpecFactory.java:129)
              ... 70 more

       

       

       

      The messageDrivenBean is:

       

       

      @MessageDriven(name = "TriggerUpdate", activationConfig = {
           @ActivationConfigProperty(propertyName="destinationType", propertyValue = "javax.jms.Queue"),
           @ActivationConfigProperty(propertyName="destination", propertyValue = "MY_QUEUE"),
           @ActivationConfigProperty(propertyName="connectionFactoryProperties", propertyValue="jdbc_connect_string=jdbc:oracle:thin:@192.168.13.104:1521:vtsdb,host=192.168.13.104,user=myuser,password=mypassword,port=1521,driver=oracle.jdbc.driver.OracleDriver"),
           @ActivationConfigProperty(propertyName="destinationProperties", propertyValue="owner=wpo,name=MY_QUEUE"),
           @ActivationConfigProperty(propertyName="user", propertyValue="myuser"),
           @ActivationConfigProperty(propertyName="password", propertyValue="mypassword"),
           @ActivationConfigProperty(propertyName="ConnectionFactoryClassName", propertyValue="oracle.jms.AQjmsConnectionFactory"),
           @ActivationConfigProperty(propertyName="QueueConnectionFactoryClassName", propertyValue="oracle.jms.AQjmsQueueConnectionFactory")
           })
      @ResourceAdapter("oracleaq.rar")
      @TransactionManagement(TransactionManagementType.BEAN)
      public class TriggerUpdate  implements MessageListener {

         

       

       

      public void onMessage(Message message) {
                 System.out.println("Message Received");
      }

      }

       

       

      The application is in a EAR.

      The file oracleaq.rar is in the deploy folder of Jboss.

       

      In the jboss.xml file inside the META-INF/ folder of the EJB jar i put:

       

       

      <?xml version="1.0"?>
      <jboss>
          <enterprise-beans>
              <message-driven>
                  <ejb-name>TriggerEventDispatcher</ejb-name>
                         
                <invoker-bindings>
          <invoker>
          <invoker-proxy-binding-name>message-inflow-driven-bean</invoker-proxy-binding-name>
          </invoker>
          </invoker-bindings>
         
          <resource-adapter-name>oracleaq.rar</resource-adapter-name>

               </message-driven>
          </enterprise-beans>
      </jboss>

       

       

      In the ejb-jar.xml:

       

       

       

       

       

      </ejb-jar>

       

       

       

       

      It seems to me that the setting of destination property is correct but probably I am wrong some configuration, because many of the properties in the log are null.

      What can I look for ?