使用本主题来创建从“带有附件的 SOAP 消息”编码样式映射至 WS-I Attachments Profile V1.0 编码样式的调解。
开始之前
有关将调解与服务集成总线配合使用的简介,请参阅了解调解。有关如何将调解安装到
WebSphere Application Server 中并使它与总线目标相关联的详细信息,请参阅使用调解。
本主题假定您熟悉如何使用
Java Platform Enterprise Edition (Java EE)
会话 Bean 开发环境,如 组装工具 或
IBM® Rational® Application Developer。
本主题中提供的示例调解基于支持绑定附件:WSDL 示例中提供的 WSDL 示例。
关于此任务
可以使用一个调解来实现从消息的“带有附件的 SOAP 消息”编码映射至 WS-I Attachments Profile V1.0 编码。在这两种编码中 WSDL 定义是相同的,因此,如果您创建一个调解,它将重写“内容标识”值以便符合 V1.0 约定,那么服务集成技术将根据 V1.0 的规则来编码消息。
要创建映射调解,请使用
Java Platform
Enterprise Edition (Java EE)
会话 Bean 开发环境以完成以下步骤:
过程
- 创建空的调解处理程序项目。 这将创建该项目并创建实现处理程序接口的处理程序类。有关如何执行此操作的详细指示信息,请参阅编写调解处理程序。
- 使用 EJB 描述符上的调解窗格来将该处理程序类定义为调解处理程序。
注: 执行此操作时,请指定用来标识该调解处理程序列表的名称。请记录此名称以便以后在总线中创建调解时作为参考。
- 将映射函数添加至处理程序中。 在开始之前,请参阅将调解函数添加到处理程序代码中。以下是调解处理程序代码的一个示例,它将重写“内容标识”值以便符合 V1.0 约定:
int uuidBase = 0;
DataObject root = SIMessage.getDataGraph().getRootObject();
List attachments = root.getList("info/attachments");
Iterator entries = attachments.iterator();
while(entries.hasNext()) {
DataObject entry = (DataObject) entries.next();
if(entry.getType().equals("BoundMIMEAttachmentEntryType")) {
String newContentId = entry.getString("messagePart") + "=" +
Integer.toString(uuidBase++) +
"@some.domain";
}
}
注: 对于使用“带有附件引用的 SOAP”(swaref) 或者其他某些 URI 机制来引用附件的消息,可能还需要更新 URI 值以便与新的“内容标识”值相匹配。但是,某些机制通常用来引用非绑定附件。
有关服务集成技术类(包括调解处理程序类)的更多信息,请参阅生成的 API 文档 - 应用程序编程接口。
- 导出映射调解企业应用程序。
下一步做什么
现在,您可以将调解安装到
WebSphere Application Server 中并使它与总线目标相关联,如
使用调解中所述。