user8658912
user8658912

Reputation: 1592

fault calling ESB proxy operation (EPR for the operation not found)

I have a WSO2 ESB (4.8.1) proxy PA which calls another ESB proxy PB (which has a published WSDL). When I call the SomeOperation operation in the PB proxy from SoapUI, it just works: I get the expected response and it validates against the WSDL schema.

I need to call PB from PA, so I build the corresponding message body with payload factory, set Action header with the SomeOperation value (as the action is defined in the WSDL), and use call mediator with the corresponding endpoint. What I get is a fault body, with the following error message:

The endpoint reference (EPR) for the Operation not found is /services/SomeOperation and the WSA Action = urn:mediate. If this EPR was previously reachable, please contact the server administrator.

However, it happens that if I simply edit the endpoint defined in PA, so that I concat /SomeOperation at the end of the service url, then it works.

Is it possible to address this issue without this workaround? Why could this be happening? I now some posts with similar errors suggest setting the Action header, but I am actually setting it.

EDIT: It seems solved, based on the first answer by Jean-Michel.

Further details: I observe there is only SOAP12 binding in the PB wsdl... Anyway, PB performs an operation switch based on the Action property.

Case: PB (unmodified), PA with soap11 format EP

It works!

Case: PB (unmodified), PA with soap12 format EP

The endpoint reference (EPR) for the Operation not found is /services/PBService and the WSA Action = null.

Case: PB (disableOperationValidation), PA with soap11 format EP

It works!

Case: PB (disableOperationValidation), PA with soap12 format EP

org.apache.axis2.AxisFault: The input stream for an incoming message is null.

I don't completely get what is going on, but I guess I'll try to stick to soap 1.1.

Upvotes: 0

Views: 1825

Answers (1)

Jean-Michel
Jean-Michel

Reputation: 5946

Try to set this parameter inside your proxy def (PB) :

<parameter name="disableOperationValidation" locked="false">true</parameter>

Edit your endpoint and set the appropriate format (soap11 or soap12)

Upvotes: 2

Related Questions