我有一个基于Websphere和MQ的应用程序,它在JMS消息头中需要一个具有XML值的属性。
test="<any_value></any_value>"
这在像Sibus这样的消息传递系统上运行正常,但在MQ上,结果如下:
<test><any_value> </any_value></test>
并且消费者抱怨无法找到该属性或更多可能解析内容。 我无法控制设计,我知道这应该是身体本身的一部分而不是标题。我想知道是否其他人遇到了同样的问题,或者有一个解决方案可以保留XML标签。 感谢
答案 0 :(得分:0)
如果可以将未修改的XML插入属性,则可以包含关闭属性标记,然后将任意属性插入到系统文件夹中。因此,在不知道代码如何工作的情况下,必须假设实体在将值放入消息时被正确转换。换句话说,假设MQ和SIBus都使用转换为实体的XML特殊字符存储数据。
如果是这种情况,那么有几种可能性。最有可能的是两个IBM产品中的一个,只有一个在读取属性值时正确解码实体。
考虑到这一点,我必须提供的唯一答案是打开PMR,并且确保包含它与SIBus一起按预期工作的信息,并且失败了MQ 。如果您只描述PMR中的MQ行为,您可能会回复“按设计工作”,并带有一条说明,要求您解析代码中的实体。但是如果你指出同一个函数在两个实现相同JMS规范的IBM产品中表现出两种不同的行为,那么你更有可能得到一个答案来协调两种不同的行为和一些方法或修复被破坏的行为。
幸运的是,该修复将使MQ像SIBus一样工作,而不是相反。但一切皆有可能。