2012-04-24 26 views
1

我发送简单的java bean过JMS到另一个Java应用程序的Java应用程序。通过Tibco的JMS发送序列化对象将引发反序列化失败的错误

这项工作完全没ActiveMQ的,但是当我切换到Tibco的JMS经纪人引发错误的接收应用程序。 bean实现了序列化接口,并且两个应用程序从包含bean的类相同的罐子运行。

我开始使用TIBCO JMS tibjmsd.exe。版本是4.1.0。

从发送Java客户端内的简单的检查产生下面的错误:

代码:

.. 
.... 
MyBean bean = new MyBean(1,”Test”); 
final ObjectMessage msg = jmssession.createObjectMessage(bean); 
    try { 
     msg.getObject(); 
    } catch (Exception e) { 
     LOG.error("Problem with storing bean", e); 
    } 
.... 
.. 

从上面的代码的错误消息:

javax.jms.MessageFormatException: Deserialization failed: [Ljava.lang.String; 
    at com.tibco.tibjms.TibjmsObjectMessage.getObject(TibjmsObjectMessage.java:199) 

相同的代码工作没有错误运行ActiveMQ 有什么我可以做或检查?

+0

发送应用程序使用JMS – ManojGumber 2012-04-24 12:07:17

+0

的执行发送应用程序使用客户端的Tibco罐。连接是通过一个通用的JMS实现,即Context.lookup连接工厂,得到连接等 – Ben 2012-04-24 15:14:14

+0

进一步的研究发现,当JavaBean的具有基本数组错误“反序列化”的发生做出(即字符串[])。更改为列表修复了问题,但是这确实是这种情况,Tibco无法接受包含原始阵列的对象? – Ben 2012-04-24 16:49:09

回答

1

首先,你需要找出linkedExceptionJMSException

catch(MessageFormatException mfe) 
{ 
     mfe.printStackTrace(); // what you told us 
     mfe.getLinkedException().printStackTrace(); // the interesting one 
} 

我有这将关系到他们TibjmsObjectMessage$CLOIS.resolveClass无法正确解析类名的本地阵列的感觉。

看来,一些有麻烦有,即使在他们的信息简单longhttps://jira.springsource.org/browse/SPR-1231?page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel

以及建议的解决方案,将工作,是给自己的序列化对象,并使用javax.jms.BytesMessage

相关问题