使用消息上下文
可以使用消息属性来影响消息的调解方式。
开始之前
关于此任务
接口 SIMessageContext 具有超级接口 MessageContext。MessageContext 中的方法使您能够管理一组消息属性,这些属性使处理程序链中的处理程序能够共享与处理相关的状态。最重要的是,您可以使用 getProperty 方法从 MessageContext 中获取特定属性的值,并且可以使用 setProperty 方法来设置与 MessageContext 相关联的属性的名称和值。还可以查看此 MessageContext 中属性的名称以及从 MessageContext 中移除属性(即,“名称/值”对)。
在调解运行时,配置期间已经为当前调解设置的所有用户定义的属性(请参阅配置调解上下文属性)将应用于 MediationContext 属性集。
过程
- 在调解处理程序的方法 handle (MessageContext context) 中找到要插入功能性调解代码的位置。因为您正在使用的 MessageContext 方法允许您访问消息属性,所以不必将接口强制转型为 SIMessageContext,除非您对 SIMessageContext 提供的方法也感兴趣。
- 从 MessageContext 对象中获取 SIMessage。例如,SIMessage message = ((SIMessageContext)context).getSIMessage();
- 使用 MessageContext 方法来检索或设置属性。例如,如果配置期间已使用名称 streetName、类型 String 和值“Main Street”定义某个属性,那么用来检索和打印街道名称的代码可能类似于以下内容:
示例
public boolean handle(MessageContext context) throws MessageContextException {
........
{
/* Retrieve the street name property */
String myStreetName;
myStreetName = (String) getProperty(streetName);
/* Display property value */
WSSubject.setRunAsSubject(mySubject);
}
}