[jboss-user] [JBoss Messaging] - ClassCastException using same jar file
pasalic.zaharije
do-not-reply at jboss.com
Mon Oct 27 18:21:44 EDT 2008
Hi,
we are developing out project from 3 different eclipse projects. One is utils project which expose common.jar file. This file has simple interface that implements Serializable and class which implement :
public interface PublishCommand extends Serializable {
| // some methods
| }
|
| public class PublishBaseCommand implements PublishCommand {
|
| private String operationType;
|
| public PublishBaseCommand() {
| }
| // some get/set methods
| }
This will be class which will be sanded into queue1.
Also, there is second project - Web application (on Spring) which instantiate upper class and send it to queue1. Deploy file is .war, and it contain common.jar in it's WEB-INF/lib path. Code for sending message:
try {
| jmsDistributionTemplate.send(new MessageCreator() {
| public Message createMessage(Session session) throws JMSException {
| ObjectMessage oMessage = session.createObjectMessage();
| oMessage.setObject(new PublishBaseCommand() );
| return oMessage;
| }
| });
| }
| catch(JmsException e) {
| // ...
| }
|
Third application is also Web application (also on Spring). This application contains listener:
public void onMessage(Message message) {
| if (message instanceof ObjectMessage) {
| try {
| ObjectMessage objectMessage = (ObjectMessage)message;
| log.info("MSG === " + objectMessage.getObject());
| log.info("MSG HASH === " + objectMessage.getObject().getClass().hashCode());
| log.info("NED HASH === " + PublishBaseCommand.class.hashCode());
| PublishBaseCommand= (PublishBaseCommand)objectMessage.getObject();
| }
| catch(JMSException e) {
| // ...
| }
| }
| }
main problem is in thrid application - in part where we call getObject and convert it to PublishBaseCommand - we got ClassCastException:
[Thread-22] listener.SimpleMessageListenerContainer (AbstractMessageListenerContainer.java:634) - Execution of JMS message listener failed
| java.lang.ClassCastException: publishing.service.impl.PublishBaseCommand
| at updater.service.impl.PublishListenerImpl.onMessage(PublishListenerImpl.java:33)
| at org.springframework.jms.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:531)
| at org.springframework.jms.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.java:466)
| at org.springframework.jms.listener.AbstractMessageListenerContainer.doExecuteListener(AbstractMessageListenerContainer.java:435)
| at org.springframework.jms.listener.AbstractMessageListenerContainer.executeListener(AbstractMessageListenerContainer.java:407)
| at org.springframework.jms.listener.SimpleMessageListenerContainer.processMessage(SimpleMessageListenerContainer.java:290)
| at org.springframework.jms.listener.SimpleMessageListenerContainer$2.onMessage(SimpleMessageListenerContainer.java:266)
| at org.jboss.jms.client.remoting.MessageCallbackHandler.callOnMessage(MessageCallbackHandler.java:153)
| at org.jboss.jms.client.remoting.MessageCallbackHandler$ListenerRunner.run(MessageCallbackHandler.java:884)
| at EDU.oswego.cs.dl.util.concurrent.QueuedExecutor$RunLoop.run(QueuedExecutor.java:89)
| at java.lang.Thread.run(Unknown Source)
Also following output is traced from upper log.info:
MSG === publishing.service.impl.PublishBaseCommand at 126cb1a
| MSG HASH === 13712958
| NEED HASH === 13628909
P.S.
I removed most of the code for readability.
Thanks,
Zaharije Pasalic
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4184968#4184968
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4184968
More information about the jboss-user
mailing list