wso2chunked-encodinghttp-1.1big-ipwso2-esb

WSO2 ESB Proxy service call Backend service endpoint(WCF)(Big IP) have error 403/404


I create WSO2 ESB Proxy service for back end service. I can success call my DEV WCF service endpoint which hosted in DEV server and the endpoint is the DEV server name.
But i use same way to call the test environment endpoint, test endpoint is a Big Ip endpoints. It's seem WSO2 can't access the Big Ip endpoints.

From the debug info.(My big ip endpoint is 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

It's seems WSO2 can't success post SOAP to right endpoint, have wrong port(80).
I also try to hard code the port like this https://hostname:443/201507/servicename.svc, but no luck same error.
Does anyone know the reason about this?

EDIT:

This may cause by default WSO2 using the chunked-encoding to call the back end service.


Solution

  • Issue: Port 80 for https. This is a bug in wso2 ESB4.8.1 (https://wso2.org/jira/browse/ESBJAVA-3336)

    My issue may cause by wso2 default using HTTP 1.1 with Transfer-Encoding: chunked to call back end endpoint.

    But my test environment backend servcie can't support chunking Encoding. This cause the error.

    Add

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

    For Pass Through Proxy:
    Content length is not right when disable chunking in ESB.
    see bug in https://wso2.org/jira/browse/ESBJAVA-3297

    For other:
    It's working! but if your client is SOAP11 will send ContentType as "text/xml" and you back end accept "application/soap+xml". you need to add

    <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)