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 ?