0

我为后端服务创建 WSO2 ESB 代理服务。我可以成功调用托管在 DEV 服务器中的 DEV WCF 服务端点,并且端点是 DEV 服务器名称。
但是我使用相同的方式来调用测试环境端点,测试端点是一个 Big Ip 端点。WSO2 似乎无法访问 Big Ip 端点。

来自调试信息。(我的大 ip 端点是https://hostname/201507/servicename.svc

[2015-07-08 11:48:21,786] DEBUG - headers http-outgoing-3 >> POST /201507/servicename.svc HTTP/1.1
[2015-07-08 11:48:21,786] DEBUG - headers http-outgoing-3 >> Content-Type: application/soap+xml
[2015-07-08 11:48:21,787] DEBUG - headers http-outgoing-3 >> Transfer-Encoding: chunked
[2015-07-08 11:48:21,787] DEBUG - headers http-outgoing-3 >> Host: hostname:80
[2015-07-08 11:48:21,787] DEBUG - headers http-outgoing-3 >> Connection: Keep-Alive
[2015-07-08 11:48:21,787] DEBUG - headers http-outgoing-3 >> User-Agent: Synapse-PT-HttpComponents-NIO

似乎 WSO2 无法成功将 SOAP 发布到正确的端点,端口错误(80)。
我也尝试像这样https://hostname:443/201507/servicename.svc对端口进行硬编码,但没有运气同样的错误。
有谁知道这其中的原因?

编辑:

这可能会导致默认情况下 WSO2 使用分块编码来调用后端服务。

4

1 回答 1

0

问题:https 的端口 80。这是 wso2 ESB4.8.1 ( https://wso2.org/jira/browse/ESBJAVA-3336 )中的一个错误

我的问题可能是 wso2 默认使用 HTTP 1.1 和 Transfer-Encoding: 分块调用后端端点引起的。

但是我的测试环境后端服务不支持分块编码。这会导致错误。

添加

<property name="DISABLE_CHUNKING" value="true" scope="axis2"/>

对于直通代理:
在 ESB 中禁用分块时,内容长度不正确。请参阅https://wso2.org/jira/browse/ESBJAVA-3297
中的错误

对于其他人:
它正在工作!但如果您的客户端是 SOAP11,则会将 ContentType 发送为“text/xml”,而您的后端接受“application/soap+xml”。你需要添加

<property name="messageType" value="application/soap+xml" scope="axis2" type="STRING"/>
<property name="ContentType" value="application/soap+xml" scope="axis2" type="STRING"/>
(default not needed property ContentType)
于 2015-07-08T11:16:43.773 回答