在消息格式之间进行代码转换

调解可将消息从一种格式转换为另一种格式,而无需更改消息的语义。此操作称为对消息进行代码转换。

以下代码为对消息进行代码转换以将其转换为新消息格式的示例调解处理程序(假定消息可进行代码转换):
private static final String NEW_FORMAT = "JMS:text";

public boolean(MessageContext context) throws MessageContextException
{
  try
  {
    SIMessageContext   msgCtx  = (SIMessageContext)context;
    SIMessage          msg     = msgCtx.getMessage();
    DataGraph        newDg   = msg.getNewDataGraph(NEW_FORMAT);

    msg.setDataGraph(newDg,NEW_FORMAT);
    		return true;
  }
  catch(Exception e)
  {
    // Reroute the original message to the exception destination
    MessageContextException mce = 
      new MessageContextException("Unable to transcode to "+NEW_FORMAT",e);
    throw mce;
  }
}
下表描述可以对其进行代码转换的消息,并提供每个格式对的输出。请注意,缩写 DG 代表“数据图”。表中带有方括号的数字解释如下:
  • (1) 格式为 JMS: 的消息无法具有有效内容。它不会携带除了消息属性之外的任何消息数据。如果调解对格式为 JMS: 的消息调用 getDataGraph(),那么会始终返回 null。 所有其他消息格式必须具有消息有效内容。这意味着无法对格式为 JMS: 的消息进行代码转换以将其转换为其他格式。如果调解需要将格式为 JMS: 的消息更改为任何其他格式的消息,那么调解需要对 SIMessage 对象调用方法 SIDataGraphFactory.getInstance().createDataGraph(newFormat)setDataGraph,以更改消息内容。
  • (2) 如果调解对格式为 JMS: 的消息调用 getDataGraph(),那么会始终返回 null
  • (3) 调解可以对消息调用方法 getNewDataGraph(),以返回格式与消息相同的数据图副本。可以编辑副本,同时保留原始消息不变。对于 SOAP 和 Bean,您可以通过编辑格式字符串来更改“:”后的值,以更改消息模型。
表 1. 消息代码转换. 该表包含可用于将消息从一种格式转换为另一种格式的不同格式。该表显示了在不同格式之间可能进行的代码转换的选项,还提供了转换对消息的影响。
  到 JMS: 到 JMS:text 到 JMS:bytes 到 JMS:stream 到 JMS:object 到 SOAP: 到 Bean:
从 JMS: DG=null (1) DG=null (1) DG=null (1) DG=null (1) DG=null (1) DG=null (1) DG=null (1)
从 JMS:text DG=null (2) 是 (3) 是,字节包含 UTF-8 是,如果文本包含符合正确模式的 XML。 是,如果消息内容为有效 SOAP。 是,如果消息内容为有效 SOAP。
从 JMS:bytes DG=null (2) 是,但仅在字节可正确解释为 UTF-8 字符串时。 是 (3) 是,如果字节包含符合正确模式的 XML。 是,假定字节为序列化对象。 是,如果消息内容为有效 SOAP。 是,如果消息内容为有效 SOAP。
从 JMS:stream DG=null (2) 是,文本正在进行 XML 代码转换。 是,字节包含 XML 代码转换。 是 (3)
从 JMS:object DG=null (2) 是,字节包含对象序列化。 是 (3)
从 SOAP: DG=null (2) Yes (3) - 如果消息内容匹配新 WSDL。
从 Bean: DG=null (2) Yes (3) - 如果消息内容匹配新 WSDL。

指示主题类型的图标 参考主题



时间戳记图标 最近一次更新时间: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=transcode_msg_formats
文件名:transcode_msg_formats.html