deltafoxtrot [
https://community.jboss.org/people/deltafoxtrot] created the discussion
"HornetQMessage ClassCastException during MDB onMessage method (AS 7.1.1 / Remote
HornetQ 2.2.14)"
To view the discussion, visit:
https://community.jboss.org/message/760147#760147
--------------------------------------------------------------
*Synopsis*
Casting Message object passed to MDB onMessage method to HornetQMessage throws a
ClassCastException (java.lang.ClassCastException: org.hornetq.jms.client.HornetQMessage
cannot be cast to org.hornetq.jms.client.HornetQMessage - full stack below). Web
application pom references hornetq-core-client and hornetq-jms-client dependencies with
version 2.2.13.Final (have tried all variations up to 2.2.21.Final). Successfully send
and receive message but apparently different versions of the underlying HornetQMessage
implementation. Any thoughts or suggestions would be much appreciated.*
*
*Environment*
* JBoss AS 7.1.1 (Brontes)
* Remote HornetQ 2.2.14
*JBoss Configuration (+modified standalone.xml+)*
* Added org.jboss.as.messaging extension
* Added mdb configuration in EJB subsystem to point to a resource adapter named
"remote-hornetq-ra" (configured in messaging subsystem)
* Added messaging subsystem based on standalone-full.xml (see below for snippet)
*Messaging Subsystem Configuration*
<subsystem xmlns="urn:jboss:domain:messaging:1.1">
<hornetq-server>
<persistence-enabled>true</persistence-enabled>
<journal-file-size>102400</journal-file-size>
<journal-min-files>2</journal-min-files>
<connectors>
<connector name="remote-jmsxa">
<factory-class>org.hornetq.core.remoting.impl.netty.NettyConnectorFactory</factory-class>
<param key="host"
value="localhost"/>
<param key="port"
value="5445"/>
</connector>
<netty-connector name="netty"
socket-binding="messaging"/>
<netty-connector name="netty-throughput"
socket-binding="messaging-throughput">
<param key="batch-delay"
value="50"/>
</netty-connector>
<in-vm-connector name="in-vm"
server-id="0"/>
</connectors>
<acceptors>
<netty-acceptor name="netty"
socket-binding="messaging"/>
<netty-acceptor name="netty-throughput"
socket-binding="messaging-throughput">
<param key="batch-delay"
value="50"/>
<param key="direct-deliver"
value="false"/>
</netty-acceptor>
<in-vm-acceptor name="in-vm"
server-id="0"/>
</acceptors>
<security-settings>
<security-setting match="#">
<permission type="send"
roles="guest"/>
<permission type="consume"
roles="guest"/>
<permission
type="createNonDurableQueue" roles="guest"/>
<permission
type="deleteNonDurableQueue" roles="guest"/>
</security-setting>
</security-settings>
<address-settings>
<address-setting match="#">
<dead-letter-address>jms.queue.DLQ</dead-letter-address>
<expiry-address>jms.queue.ExpiryQueue</expiry-address>
<redelivery-delay>0</redelivery-delay>
<max-size-bytes>10485760</max-size-bytes>
<address-full-policy>BLOCK</address-full-policy>
<message-counter-history-day-limit>10</message-counter-history-day-limit>
</address-setting>
</address-settings>
<jms-connection-factories>
<connection-factory
name="InVmConnectionFactory">
<connectors>
<connector-ref
connector-name="in-vm"/>
</connectors>
<entries>
<entry
name="java:/ConnectionFactory"/>
</entries>
</connection-factory>
<connection-factory
name="RemoteConnectionFactory">
<connectors>
<connector-ref
connector-name="netty"/>
</connectors>
<entries>
<entry
name="RemoteConnectionFactory"/>
<entry
name="java:jboss/exported/jms/RemoteConnectionFactory"/>
</entries>
</connection-factory>
<pooled-connection-factory
name="hornetq-ra">
<transaction mode="xa"/>
<connectors>
<connector-ref
connector-name="in-vm"/>
</connectors>
<entries>
<entry
name="java:/JmsXA"/>
</entries>
</pooled-connection-factory>
<pooled-connection-factory
name="remote-hornetq-ra">
<transaction mode="xa"/>
<connectors>
<connector-ref
connector-name="remote-jmsxa"/>
</connectors>
<entries>
<entry
name="java:/RemoteJmsXA"/>
</entries>
</pooled-connection-factory>
</jms-connection-factories>
<jms-destinations>
<jms-queue name="testQueue">
<entry name="queue/test"/>
<entry
name="java:jboss/exported/jms/queue/test"/>
</jms-queue>
<jms-topic name="testTopic">
<entry name="topic/test"/>
<entry
name="java:jboss/exported/jms/topic/test"/>
</jms-topic>
</jms-destinations>
</hornetq-server>
</subsystem>
*MDB*
@MessageDriven(name = "LiveMessageMDB", activationConfig = {
@ActivationConfigProperty(propertyName = "destinationType", propertyValue =
"javax.jms.Queue"),
@ActivationConfigProperty(propertyName = "destination", propertyValue =
"queue/appserver.data"),
@ActivationConfigProperty(propertyName = "acknowledgeMode", propertyValue =
"Auto-acknowledge") })
@TransactionManagement(value = TransactionManagementType.CONTAINER)
@TransactionAttribute(value = TransactionAttributeType.REQUIRED)
public class LiveMessageMDB implements MessageListener {
@Override
public void onMessage(Message message) {
try {
HornetQMessage hornetQMessage = (HornetQMessage) message;
System.out.println("successfully cast");
} catch (Throwable t) {
t.printStackTrace();
return;
}
}
}
*Stacktrace*
*
*
13:16:26,699 ERROR [stderr] (Thread-32 (HornetQ-client-global-threads-1369568615))
java.lang.ClassCastException: org.hornetq.jms.client.HornetQMessage cannot be cast to
org.hornetq.jms.client.HornetQMessage
at com.xyz.messaging.LiveMessageMDB.onMessage(LiveMessageMDB.java:47)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at
org.jboss.as.ee.component.ManagedReferenceMethodInterceptorFactory$ManagedReferenceMethodInterceptor.processInvocation(ManagedReferenceMethodInterceptorFactory.java:72)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
at
org.jboss.invocation.InterceptorContext$Invocation.proceed(InterceptorContext.java:374)
at
org.jboss.as.weld.ejb.Jsr299BindingsInterceptor.doMethodInterception(Jsr299BindingsInterceptor.java:127)
at
org.jboss.as.weld.ejb.Jsr299BindingsInterceptor.processInvocation(Jsr299BindingsInterceptor.java:135)
at
org.jboss.as.ee.component.interceptors.UserInterceptorFactory$1.processInvocation(UserInterceptorFactory.java:36)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
at org.jboss.invocation.WeavedInterceptor.processInvocation(WeavedInterceptor.java:53)
at
org.jboss.as.ee.component.interceptors.UserInterceptorFactory$1.processInvocation(UserInterceptorFactory.java:36)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
at
org.jboss.as.weld.ejb.EjbRequestScopeActivationInterceptor.processInvocation(EjbRequestScopeActivationInterceptor.java:101)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
at org.jboss.invocation.InitialInterceptor.processInvocation(InitialInterceptor.java:21)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
at org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61)
at
org.jboss.as.ee.component.interceptors.ComponentDispatcherInterceptor.processInvocation(ComponentDispatcherInterceptor.java:53)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
at
org.jboss.as.ejb3.component.pool.PooledInstanceInterceptor.processInvocation(PooledInstanceInterceptor.java:51)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
at org.jboss.as.ejb3.tx.CMTTxInterceptor.invokeInCallerTx(CMTTxInterceptor.java:202)
at org.jboss.as.ejb3.tx.CMTTxInterceptor.required(CMTTxInterceptor.java:306)
at org.jboss.as.ejb3.tx.CMTTxInterceptor.processInvocation(CMTTxInterceptor.java:190)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
at
org.jboss.as.ejb3.component.interceptors.CurrentInvocationContextInterceptor.processInvocation(CurrentInvocationContextInterceptor.java:41)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
at
org.jboss.as.ejb3.component.interceptors.LoggingInterceptor.processInvocation(LoggingInterceptor.java:59)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
at
org.jboss.as.ee.component.NamespaceContextInterceptor.processInvocation(NamespaceContextInterceptor.java:50)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
at
org.jboss.as.ejb3.component.interceptors.AdditionalSetupInterceptor.processInvocation(AdditionalSetupInterceptor.java:43)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
at
org.jboss.as.ejb3.component.messagedriven.MessageDrivenComponentDescription$5$1.processInvocation(MessageDrivenComponentDescription.java:184)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
at org.jboss.as.ee.component.TCCLInterceptor.processInvocation(TCCLInterceptor.java:45)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
at org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61)
at org.jboss.as.ee.component.ViewService$View.invoke(ViewService.java:165)
at
org.jboss.as.ee.component.ViewDescription$1.processInvocation(ViewDescription.java:173)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
at org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61)
at
org.jboss.as.ee.component.ProxyInvocationHandler.invoke(ProxyInvocationHandler.java:72)
at javax.jms.MessageListener$$$view9.onMessage(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at
org.jboss.as.ejb3.inflow.MessageEndpointInvocationHandler.doInvoke(MessageEndpointInvocationHandler.java:140)
at
org.jboss.as.ejb3.inflow.AbstractInvocationHandler.invoke(AbstractInvocationHandler.java:73)
at $Proxy51.onMessage(Unknown Source)
at org.hornetq.ra.inflow.HornetQMessageHandler.onMessage(HornetQMessageHandler.java:278)
at
org.hornetq.core.client.impl.ClientConsumerImpl.callOnMessage(ClientConsumerImpl.java:983)
at org.hornetq.core.client.impl.ClientConsumerImpl.access$400(ClientConsumerImpl.java:48)
at
org.hornetq.core.client.impl.ClientConsumerImpl$Runner.run(ClientConsumerImpl.java:1113)
at
org.hornetq.utils.OrderedExecutorFactory$OrderedExecutor$1.run(OrderedExecutorFactory.java:100)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
--------------------------------------------------------------
Reply to this message by going to Community
[
https://community.jboss.org/message/760147#760147]
Start a new discussion in JBoss AS 7 Development at Community
[
https://community.jboss.org/choose-container!input.jspa?contentType=1&...]