我被指派使用wso2 esb(4.8.1)做简单的POC,我之前没有使用过wso2esb或其他类似的任何其他经验,而且我在学习过程中有这种经验。
我的目标是从远程第三方接收带有二进制数据的TCP数据包,转换为SOAP,做一些事情,转换回二进制并发送响应。潜伏在互联网上,我遇到了如下定义:Builder, MessageFormatter, TransportSender and TransportListener
。
afaik
Builder
用于将传入数据转换为SOAP
MessageFormatter
- 将传出数据从SOAP转换为预期类型
TransportSender
- 通过电线发送转换为预期类型的SOAP
TransportListener
- 从线路接收请求,并将其转换为SOAP
1) TransportSender
和Listener
自己做转换SOAP< - >二进制文件,或者他们以某种方式使用Builder
/ MessageFormatter
,这四者之间的流量是什么?
2)传输是否应与builder / formatter完全分离?
3并不重要} 在axis2.xml中注册Builder
和Formatter
,我需要指定contetType,这是否意味着它们仅适用于HTTP请求?即使它是真的,这对我不好,因为我期待原始的二进制数据,我如何为相同的内容类型注册两个单独的格式化程序/构建器?
更新1:
引自here:
传输发送方根据其发送SOAP消息 组态。 传输接收器等待SOAP消息
总是如此吗?我的意思是,发件人和监听器只用于SOAP消息?
答案 0 :(得分:2)
Axis2是一个Web服务引擎,它通过使用SOAP作为位于各种传输之间的规范形式,非常支持将各种传输插入到一起。
四种类型(发件人/听众,构建者/格式化程序)之间没有特别的流程。 TransportListeners将来自线路的传入消息序列化为SOAP格式(使用构建器)。 TransportSenders读取SOAP消息并将其解除为传出的有线格式,并将其放在线路上(使用格式化程序)。这里的关键是我们可以让消息从一个传输进入axis2并在完全不同的传输上发送出来。
将这一切绑定在一起的是在各个axis2阶段传递的消息上下文对象。
您应该查看Axis2 Architecture guide,还有一些要查看的内容是Builder和Formatter接口可能会明确其用途。