我正在将构建为在WSO2 ESB 4.0上运行的服务迁移到WSO2 ESB 4.7并遇到问题 . 我正在迁移的服务是带有SOAP 1.2绑定接口的自定义代理 . 此代理对基于SOAP 1.1的服务进行出站调用 .
ESB 4.0服务器正在使用Http NIO传输,看起来传输将使用消息格式化器(我猜)在向客户端发送响应消息时管理SOAP 1.1和1.2之间的ESB中的SOAP消息转换 .
ESB 4.7使用的是Http PassThrough传输,它没有SOAP消息转换功能,因此必须按顺序手动更改SOAP信封命名空间和HTTP头信息 .
是否可以将Http PassThrough和Http NIO配置为在同一ESB上处于活动状态,并将各个服务配置为使用其中一个?我已经尝试过,并且没有成功,到目前为止我的研究似乎表明了其中一个 .
EDIT1 - 对RaviU的回应:
谢谢RaviU . 如果将ESB 4.7.0配置为使用HTTP NIO传输,则它将支持自动将SOAP 1.1转换为1.2 . 换句话说,它的行为类似于ESB 4.0服务器 . 当ESB 4.7.0配置为使用HttpPassThrough传输时,似乎不会自动将SOAP 1.1转换为1.2 . 这是有道理的,因为传输不关心内容类型 . 使用HttpPassThrough时遇到的问题是我必须手动将SOAP信封更改为1.2并在发送回客户端之前设置相应的http标头 . 这是因为当服务调用SOAP 1.1服务时它们会被更改 . 如果我使用HTTP NIO传输,则ESB会自动执行手动步骤 . 我假设这是在消息返回给客户端之前由消息格式化程序完成的 .
1 回答
道歉与迟到的回应 . 您可以修改转换问题,例如:
您也可以设置messageType而不是使用默认 endpoints . 这也是一种可能的解决方案:
要么应该工作,但第二个解决方案应该稍微好一点,因为它不评估xPath .