
动态调用
开发和部署调解模块时,通过此模块的消息流由组件的连接确定。 组件的配置用于确定所要调用的外部服务。
在运行时,应用程序可以覆盖或更改配置以及重新路由消息。 可以通过覆盖对端点地址指定的值以动态方式完成此任务。 另外,还可以选择新的目标导入。 在这两种情况下,消息流都将根据消息中的信息进行更改。
例如,可以使用 Integration Designer 在导入时创建绑定。 此导入包含端点信息,从而指定远程服务的位置。 此固定端点信息可以由消息中包含的信息以动态方式覆盖。
如果在调解模块中动态更改消息流,那么新路径将仅应用于该消息以及返回的任何响应。 如果该消息已发送完毕,并且任何响应均已返回,那么将废弃动态路由更改,并且将再次使用模块中定义的原始固定值作为缺省值。 任何对动态调用的响应都将使用该动态调用的路径返回。
动态调用可以通过三种主要的方法进行:
- 动态地覆盖固定端点,在这种情况下,将使用任何受支持的导入绑定来调用服务。 此服务由不同于最初创建和部署调解模块时指定的端点的端点提供。
- 使用目标导入进行动态调用,在这种情况下,将使用任何受支持的导入绑定来调用服务。 此绑定必须已存在于调解模块中。 在运行时,将根据消息中包含的信息进行选择。
- 纯动态调用,在这种情况下,不需要调解模块中的导入即可调用服务。 除了消息中的详细信息以外,不需要其他信息。
请求消息中的端点引用 (EPR) 结构用于提供动态调用所需的信息。 您可以通过从适当的存储位置(例如 WSRR 或数据库)检索关于端点的信息来获取关于 EPR 的详细信息。 此信息用于通过 SCA 端点引用 API 来设置消息的 EPR 详细信息。 SMO 结构如下所示:
/headers/SMOHeader/Target/address
/headers/SMOHeader/Target/@bindingType
/headers/SMOHeader/Target/@import
/headers/SMOHeader/AlternateTarget/address
/headers/SMOHeader/AlternateTarget/@bindingType
/headers/SMOHeader/AlternateTarget/@import在动态调用期间,通过检查端点 URI 来标识目标端点类型。
- 如果 URI 以
sca开头,那么这指示 SCA 组件。 - 缺省情况下,假定 URI 前缀为
http或jms,以指示 Web Service 端点。 - 缺省情况下,
http的 URI 前缀不会指示 HTTP 服务,而jms的 URI 前缀不会指示 JMS 服务。 但是,如果将此引用连接到导入,或者对目标导入指定了 JMS 或 HTTP 绑定,那么将假定 URI 为 JMS 或 HTTP,而不是 Web Service。- 可以使用端点引用中的
bindingType字段来更改此值。 例如,使用 SCA 端点引用 API 将bindingType字段设置为值EndpointReference.BINDING_TYPE_HTTP,或者使用调解流将Target@bindingType属性设置为 HTTP,这将导致 EPR 中的 URI 前缀http被解释为指示该消息的 HTTP 绑定。
- 可以使用端点引用中的
This topic only applies to BAW, and is located in the BAW repository. Last updated on 2025-01-20 10:38