cen*_*cen 7 java debugging jms java-ee
我正在使用Java EE JMS队列.我正在将对象发送到队列中,然后使用MDB接收它们.当将消息体(使用getBody())读入对象时,我得到以下异常:
javax.jms.MessageFormatException: Body not assignable to class ...
Run Code Online (Sandbox Code Playgroud)
是否有任何方法可以从中获得更具描述性的错误,这将告诉为什么它不可分配?我也尝试进入调试模式,看看哪种消息对象到达MDB但是我已经看到它被序列化,所以它并没有真正有用.
在将对象类型发送到队列之前,可以在调试器中正确识别它.
附加信息:如果我手动创建一个空对象并发送它,则可以正确识别它.生产对象来自REST端点,包含许多属性,并在此过程中进行了多次转换.某些数据必须阻止分配,但逐步调试每个属性将是一种痛苦,并且只是作为最后的手段.
对于如何在Java中测试类正确实现Serializable(不仅仅是Serializable的实例)的每个答案,对象都被确认为可序列化的
对象发送方式为:
jmsContext.createProducer().send(queue, object);
我设法通过将所有属性设置为null然后逐个评论它直到它工作来缩小范围.事实证明,持续时间类型属性不正确?初始化导致问题.在另一种情况下,导致它的是XMLGregorianCalendar属性.尽管如此,这是一种非常hacky的调试方式,我仍然不知道为什么分配失败,我只知道哪个属性导致它.
暂时我最终将实体ID传递到队列而不是完整对象,我通过ID从数据库中检索它们.
完整stacktrace的Pastebin:http://pastebin.com/vWvhDTcr
| 归档时间: |
|
| 查看次数: |
928 次 |
| 最近记录: |