I am attempting to convert the QPID JCA QpidHelloListenerBean example’s
configuration from annotations to the deployment description in ejb-jar.xml
file. However, I am having a problem with the connectionURL and destination
properties.
The annotations for the example look like this:
@MessageDriven (activationConfig = {
@ActivationConfigProperty(propertyName = "acknowledgeMode", propertyValue =
"…"),
@ActivationConfigProperty(propertyName = "destinationType", propertyValue =
"…"),
@ActivationConfigProperty(propertyName = "connectionURL", propertyValue =
"…"),
@ActivationConfigProperty(propertyName = "destination", propertyValue = "…"),
@ActivationConfigProperty(propertyName = "maxSession", propertyValue = "…")
})
My converted ejb-jar.xml file looks like:
<message-driven>
<ejb-name>QpidHelloListenerBean</ejb-name>
<ejb-class>org.apache.qpid.jca.example.ejb.QpidHelloListenerBean</ejb-class>
<transaction-type>Bean</transaction-type>
<message-destination-type>javax.jms.Queue</message-destination-type>
<activation-config>
<activation-config-property>
<activation-config-property-name>connectionURL</activation-config-property-name>
<activation-config-property-value>…</activation-config-property-value>
</activation-config-property>
<activation-config-property>
<activation-config-property-name>destination</activation-config-property-name>
<activation-config-property-value>…</activation-config-property-value>
</activation-config-property>
<activation-config-property>
<activation-config-property-name>destinationType</activation-config-property-name>
<activation-config-property-value>…</activation-config-property-value>
</activation-config-property>
….
</activation-config>
</message-driven>
However, when I attempt to deploy this I get the following error for
connectionURL:
Caused by: java.beans.IntrospectionException: No property found for:
connectionURL on JavaBean:
org.jboss.resource.adapter.jms.inflow.JmsActivationSpec@2b521cd6(ra=null
destination=... destinationType=javax.jms.Queue tx=true durable=false
reconnect=10 provider=java:/DefaultJMSProvider user=null maxMessages=1
minSession=1 maxSession=15 keepAlive=60000 useDLQ=true
DLQHandler=org.jboss.resource.adapter.jms.inflow.dlq.GenericDLQHandler
DLQJndiName=queue/DLQ DLQUser=null DLQMaxResent=5)
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
And for the destination property I get the error:
org.apache.qpid.ra.admin.QpidQueueImpl cannot be cast to
org.jboss.jms.destination.JBossDestination
How should I setup my ejb-jar.xml file to allow me to change the connection URL
and destination without modifying the code? Or is there another way that I am
missing?
I am using JBoss 5.1 AS.