cancel
Showing results for 
Search instead for 
Did you mean: 

PI 7.4 axis fault message handling: convertExceptionToAxisFault()

geertvermuyten3
Explorer
0 Kudos

Hello all,

our scenario is a synchronous webservice call from ECC => PI => external service. We're using Axis in the receiver comm channel.

When sending a request with correct data, we nicely get the expected response message back. However, if data is incorrect, we get a (403)Forbidden message back.

To be clear, the error has nothing to do with certificates or password errors or whatsoever concerning authorizations in the webservice call, since changing a value in the request message to a correct one will result in a succesful call and response.


In XPI inspector, we get this:

convertExceptionToAxisFault()
[EXCEPTION]
AxisFault
 faultCode: {http://xml.apache.org/axis/}HTTP
 faultSubcode: 
 faultString: (403)Forbidden
 faultActor: 
 faultNode: 
 faultDetail: 
{}:return code:  403
<soapenv:Fault xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
  <faultcode xmlns:soap11Env="http://schemas.xmlsoap.org/soap/envelope/">soap11Env:Server</faultcode>
  <faultstring>[ERROR] 403 Unexpected error received from service</faultstring>
  <detail>
    <messageId>9..-..1fb</messageId>
    <transactionId>8b... -...d7</transactionId>
    <timestamp>2023-02-24T18:00:46.652</timestamp>
    <error>
      <code>403</code>
      <description>[ERROR] Access not authorized!!!</description>
    </error>
  </detail>
</soapenv:Fault>
{http://xml.apache.org/axis/}HttpErrorCode:403

(403)Forbidden
at com.sap.aii.axis.transport.http.HTTPSender.readFromSocket(HTTPSender.java:857)
at com.sap.aii.axis.transport.http.HTTPSender.invoke(HTTPSender.java:199)
at com.sap.aii.adapter.axis.ra.transport.http.HTTPSender.invoke(HTTPSender.java:52)
...

In ECC in SXMB_MONI, we get:

<?xml version="1.0" encoding="UTF-8" standalone="true"?>
<!-- Call Integration Server -->
<SAP:Error xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SAP="http://sap.com/xi/XI/Message/30" SOAP:mustUnderstand="1">
<SAP:Category>XIServer</SAP:Category>
<SAP:Code area="INTERNAL">CLIENT_RECEIVE_FAILED</SAP:Code>
<SAP:P1>Configuration error on Adapter-Framework(AFW)-Server</SAP:P1>
<SAP:P2> com.sap.engine.interfaces.messaging.api.exception.MessagingException: 
    com.sap.engine.interfaces.messaging.api.exception.MessagingException: 
    java.lang.ClassCastException: org.apache.axis.MessageContext (loaded by library:com.sap.aii.af.axisproviderlib@90038 
    com.sap.engine.boot.loader.ResourceMultiParentClassLoader) cannot be cast to 
    com.sap.aii.adapter.xi.ms.XIMessage (loaded by service:com.sap.aii.adapter.xi.svc@90348 
    ....

I have tried adding a Fault message with the above structure to the Inbound as well as the Outbound service in ESR => did not work.

I have tried changing the response message by adding the above Fault structure as optional in the response structure => did not work.

Since Axis is used in the Receiver channel, there is no option to flag any conversion parameters like 'Do not use SOAP Envelope', etc...

Module parameters like noSOAPMakeSysErrFromResponseFault and XMBWS.NoSOAPIgnoreStatusCode cannot be used either (I think) because of Axis.

I've read the axis faq and searched on SAP OSS and SCN, but I can't find any solutions that involve Axis and fault handling that are like the above fault.

Thoughts and possible solution suggestions are appreciated.

Regards,
Geert.

Accepted Solutions (0)

Answers (0)