Business Service SOAP Fault ignored by ALSB

I have a SOAP service specifically returning a SOAP fault. ALSB doesn't recognize it as an fault and continues processing as if everything is OK.
Does anyone know how to get ALSB to recognize a SOAP fault for what it is? Here's the response returned to ALSB:
<SOAP-ENV:Fault xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<faultactor/>
<faultcode>SOAP-ENV:</faultcode>
<faultstring>TEST ERROR 1</faultstring>
<detail>
<NS1:EOSGAPIError xsi:type="NS1:EOSGAPIError" xmlns:NS1="urn:eschelon.com/osg/1_0-OSGAPILib">
<exceptionClassName xsi:type="xsd:string">Exception</exceptionClassName>
<method xsi:type="xsd:string"/>
</NS1:EOSGAPIError>
</detail>
</SOAP-ENV:Fault>

Let me clarify: If I perform a "route" to the SOAP service, the fault returns and is passed along as the new body of the message - no errors detected.
If I do a "service callout" to the SOAP service, I get a BEA-382501 error "ALSB Service Callout action received an unrecognized response".
Any ideas why ALSB does not recognize the soap fault that it receives in the response?
Here's the fault contents, you can see the soap fault returned in the detail element:
<con:fault>
<con:errorCode>BEA-382501</con:errorCode>
<con:reason>ALSB Service Callout action received an unrecognized response</con:reason>
<con:details>
<con1:UnrecognizedResponseDetail>
<con1:detail><SOAP-ENV:Fault xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"> <faultactor/> <faultcode>SOAP-ENV:err_data_val_failed</faultcode> <faultstring>Service address has not been validated</faultstring> <detail> <NS1:EOSGAPIError xsi:type="NS1:EOSGAPIError" xmlns:NS1="urn:eschelon.com/osg/1_0-OSGAPILib"> <exceptionClassName xsi:type="xsd:string">EOSGAPIError</exceptionClassName> <method xsi:type="xsd:string"/> </NS1:EOSGAPIError> </detail> </SOAP-ENV:Fault></con1:detail>
<con1:http-response-code>200</con1:http-response-code>
</con1:UnrecognizedResponseDetail>
</con:details>
<con:location>
<con:node>Get Proposal</con:node>
<con:pipeline>Get Proposal_request</con:pipeline>
<con:stage>Get Proposal From OSG</con:stage>
<con:path>request-pipeline</con:path>
</con:location>
</con:fault>
P.s. yep - same person the original post, just decided I didn't like my email displaying as my username.

Similar Messages

  • Business Service SOAP Fault : OSB still using body to populate fault?

    I have a SOAP service specifically returning a SOAP fault. OSB doesn't recognize it as an fault and continues processing as if everything is OK. As per the documentation, in case of SOAP faults, OSB should generate a $fault variable based on the details present inside the SOAP fault, which in turn should give the control to the normal error handling stage and by pass the pipe line flow.
    Does anyone know how to get OSB to recognize a SOAP fault for what it is? Here's the response returned to OSB:
    <SOAP-ENV:Fault xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
    <faultactor/>
    <faultcode>SOAP-ENV:</faultcode>
    <faultstring>TEST ERROR 1</faultstring>
    <detail>
    <NS1:EOSGAPIError xsi:type="NS1:EOSGAPIError" xmlns:NS1="urn:eschelon.com/osg/1_0-OSGAPILib">
    <exceptionClassName xsi:type="xsd:string">Exception</exceptionClassName>
    <method xsi:type="xsd:string"/>
    </NS1:EOSGAPIError>
    </detail>
    </SOAP-ENV:Fault>
    Regards,
    Anuj

    Here are the contents of Invocation trace:
    (receiving request)
    Initial Message Context
    added $body
    <soapenv:Body xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
    <SendSmsMessage xmlns="http://datasquirt.com/webservices/">
    <customerIdentificationCard>
    <CustomerID>12121</CustomerID>
    <CustomerRef1>1212121</CustomerRef1>
    <CustomerRef2>ASDASDASD</CustomerRef2>
    <DisableCustomerCreation>true</DisableCustomerCreation>
    </customerIdentificationCard>
    <sender>1212</sender>
    <receiver>12121</receiver>
    <messageText>
    Have you finished the page specs yet? Greetings from NEO!
    </messageText>
    </SendSmsMessage>
    </soapenv:Body>
    added $header
    <soapenv:Header xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"/>
    added $inbound
    <con:endpoint name="ProxyService$Testing$Testing123" xmlns:con="http://www.bea.com/wli/sb/context">
    <con:service/>
    <con:transport>
    <con:mode>request-response</con:mode>
    <con:qualityOfService>best-effort</con:qualityOfService>
    <con:request xsi:type="loc:LocalRequestMetaData" xmlns:loc="http://www.bea.com/wli/sb/transports/local" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <tran:headers xsi:type="loc:LocalRequestHeaders" xmlns:tran="http://www.bea.com/wli/sb/transports"/>
    <tran:encoding xmlns:tran="http://www.bea.com/wli/sb/transports">utf-8</tran:encoding>
    </con:request>
    <con:response xsi:type="loc:LocalResponseMetaData" xmlns:loc="http://www.bea.com/wli/sb/transports/local" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <tran:response-code xmlns:tran="http://www.bea.com/wli/sb/transports">0</tran:response-code>
    </con:response>
    </con:transport>
    <con:security>
    <con:transportClient>
    <con:username><anonymous></con:username>
    </con:transportClient>
    </con:security>
    </con:endpoint>
    added $messageID
    2118966794361651537--67bbd0aa.12b51c9a704.-7f90
    PipelinePairNode1
    stage1
    Message Context Changes
    changed $body
    <soapenv:Body xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
    <SendSmsMessage xmlns="http://datasquirt.com/webservices/">
    <customerIdentificationCard>
    <CustomerID>12121</CustomerID>
    <CustomerRef1>1212121</CustomerRef1>
    <CustomerRef2>ASDASDASD</CustomerRef2>
    <DisableCustomerCreation>true</DisableCustomerCreation>
    </customerIdentificationCard>
    <sender>1212</sender>
    <receiver>12121</receiver>
    <messageText>
    Have you finished the page specs yet? Greetings from NEO!
    </messageText>
    </SendSmsMessage>
    </soapenv:Body>
    changed $inbound
    <con:endpoint name="ProxyService$Testing$Testing123" xmlns:con="http://www.bea.com/wli/sb/context">
    <con:service/>
    <con:transport>
    <con:mode>request-response</con:mode>
    <con:qualityOfService>best-effort</con:qualityOfService>
    <con:request xsi:type="loc:LocalRequestMetaData" xmlns:loc="http://www.bea.com/wli/sb/transports/local" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <tran:headers xsi:type="loc:LocalRequestHeaders" xmlns:tran="http://www.bea.com/wli/sb/transports"/>
    <tran:encoding xmlns:tran="http://www.bea.com/wli/sb/transports">utf-8</tran:encoding>
    </con:request>
    <con:response xsi:type="loc:LocalResponseMetaData" xmlns:loc="http://www.bea.com/wli/sb/transports/local" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <tran:response-code xmlns:tran="http://www.bea.com/wli/sb/transports">0</tran:response-code>
    </con:response>
    </con:transport>
    <con:security>
    <con:transportClient>
    <con:username><anonymous></con:username>
    </con:transportClient>
    </con:security>
    </con:endpoint>
    RouteNode1
    Routed Service
    Route to: "NotificationBsSendSMSNotificationHttp"
    $outbound:
    <con:endpoint name="BusinessService$NotificationOsbProject$BusinessServices$NotificationBsSendSMSNotificationHttp" xmlns:con="http://www.bea.com/wli/sb/context">
    <con:service>
    <con:operation>SendSmsMessageWithTemplate</con:operation>
    </con:service>
    <con:transport>
    <con:mode>request-response</con:mode>
    <con:qualityOfService>best-effort</con:qualityOfService>
    <con:request xsi:type="http:HttpRequestMetaData" xmlns:http="http://www.bea.com/wli/sb/transports/http" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <tran:headers xsi:type="http:HttpRequestHeaders" xmlns:tran="http://www.bea.com/wli/sb/transports">
    <http:Content-Type>text/xml</http:Content-Type>
    <http:SOAPAction>
    "http://datasquirt.com/webservices/SendSmsMessageWithTemplate"
    </http:SOAPAction>
    </tran:headers>
    </con:request>
    </con:transport>
    <con:security>
    <con:doOutboundWss>false</con:doOutboundWss>
    </con:security>
    </con:endpoint>
    $body (request):
    <soapenv:Body xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
    <SendSmsMessage xmlns="http://datasquirt.com/webservices/">
    <customerIdentificationCard>
    <CustomerID>12121</CustomerID>
    <CustomerRef1>1212121</CustomerRef1>
    <CustomerRef2>ASDASDASD</CustomerRef2>
    <DisableCustomerCreation>true</DisableCustomerCreation>
    </customerIdentificationCard>
    <sender>1212</sender>
    <receiver>12121</receiver>
    <messageText>
    Have you finished the page specs yet? Greetings from NEO!
    </messageText>
    </SendSmsMessage>
    </soapenv:Body>
    $header (request):
    <soapenv:Header xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"/>
    $attachments (request):
    <con:attachments xmlns:con="http://www.bea.com/wli/sb/context"/>
    Message Context Changes
    added $outbound
    <con:endpoint name="BusinessService$NotificationOsbProject$BusinessServices$NotificationBsSendSMSNotificationHttp" xmlns:con="http://www.bea.com/wli/sb/context">
    <con:service>
    <con:operation>SendSmsMessageWithTemplate</con:operation>
    </con:service>
    <con:transport>
    <con:uri>
    http://tabcorpapi.datasquirt.com.au/V2/ContactService.asmx
    </con:uri>
    <con:mode>request-response</con:mode>
    <con:qualityOfService>best-effort</con:qualityOfService>
    <con:request xsi:type="http:HttpRequestMetaData" xmlns:http="http://www.bea.com/wli/sb/transports/http" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <tran:headers xsi:type="http:HttpRequestHeaders" xmlns:tran="http://www.bea.com/wli/sb/transports">
    <http:Content-Type>text/xml; charset=utf-8</http:Content-Type>
    <http:SOAPAction>
    "http://datasquirt.com/webservices/SendSmsMessageWithTemplate"
    </http:SOAPAction>
    </tran:headers>
    <tran:encoding xmlns:tran="http://www.bea.com/wli/sb/transports">utf-8</tran:encoding>
    </con:request>
    <con:response xsi:type="http:HttpResponseMetaData" xmlns:http="http://www.bea.com/wli/sb/transports/http" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <tran:headers xsi:type="http:HttpResponseHeaders" xmlns:tran="http://www.bea.com/wli/sb/transports">
    <tran:user-header name="X-AspNet-Version" value="2.0.50727"/>
    <tran:user-header name="X-Powered-By" value="ASP.NET"/>
    <http:Cache-Control>private</http:Cache-Control>
    <http:Content-Length>1180</http:Content-Length>
    <http:Content-Type>text/xml; charset=utf-8</http:Content-Type>
    <http:Date>Mon, 27 Sep 2010 11:27:25 GMT</http:Date>
    <http:Server>Microsoft-IIS/7.0</http:Server>
    </tran:headers>
    <tran:response-code xmlns:tran="http://www.bea.com/wli/sb/transports">0</tran:response-code>
    <tran:response-message xmlns:tran="http://www.bea.com/wli/sb/transports">OK</tran:response-message>
    <tran:encoding xmlns:tran="http://www.bea.com/wli/sb/transports">utf-8</tran:encoding>
    <http:http-response-code>200</http:http-response-code>
    </con:response>
    </con:transport>
    <con:security>
    <con:doOutboundWss>false</con:doOutboundWss>
    </con:security>
    </con:endpoint>
    changed $body
    <SOAP-ENV:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:clr="http://schemas.microsoft.com/soap/encoding/clr/1.0">
    <SOAP-ENV:Fault id="ref-1">
    <faultcode id="ref-2">SOAP-ENV:Authentication Issue</faultcode>
    <faultstring id="ref-3">
    Access Denied - Missing or incomplete Authentication Header
    </faultstring>
    <faultactor id="ref-4">
    http://tabcorpapi.datasquirt.com.au/V2/ContactService.asmx
    </faultactor>
    <detail xsi:type="a1:ServerFault" xmlns:a1="http://schemas.microsoft.com/clr/ns/System.Runtime.Serialization.Formatters">
    <exceptionType id="ref-5">ApiAuthenticationException</exceptionType>
    <message id="ref-6">
    Missing or incomplete Authentication Header
    </message>
    <stackTrace id="ref-7">
    at Datasquirt.Contact3.API.Security.AuthenticationModule.OnEnter(Object source, EventArgs eventArgs)
    </stackTrace>
    <exception xsi:null="1"/>
    </detail>
    </SOAP-ENV:Fault>
    </SOAP-ENV:Body>
    changed $attachments
    <con:attachments xmlns:con="http://www.bea.com/wli/sb/context"/>
    changed $inbound
    <con:endpoint name="ProxyService$Testing$Testing123" xmlns:con="http://www.bea.com/wli/sb/context">
    <con:service/>
    <con:transport>
    <con:mode>request-response</con:mode>
    <con:qualityOfService>best-effort</con:qualityOfService>
    <con:request xsi:type="loc:LocalRequestMetaData" xmlns:loc="http://www.bea.com/wli/sb/transports/local" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <tran:headers xsi:type="loc:LocalRequestHeaders" xmlns:tran="http://www.bea.com/wli/sb/transports"/>
    <tran:encoding xmlns:tran="http://www.bea.com/wli/sb/transports">utf-8</tran:encoding>
    </con:request>
    <con:response xsi:type="loc:LocalResponseMetaData" xmlns:loc="http://www.bea.com/wli/sb/transports/local" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <tran:response-code xmlns:tran="http://www.bea.com/wli/sb/transports">0</tran:response-code>
    </con:response>
    </con:transport>
    <con:security>
    <con:transportClient>
    <con:username><anonymous></con:username>
    </con:transportClient>
    </con:security>
    </con:endpoint>
    changed $header
    <soapenv:Header xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"/>
    PipelinePairNode1
    stage1
    Message Context Changes
    changed $body
    <SOAP-ENV:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:clr="http://schemas.microsoft.com/soap/encoding/clr/1.0">
    <SOAP-ENV:Fault id="ref-1">
    <faultcode id="ref-2">SOAP-ENV:Authentication Issue</faultcode>
    <faultstring id="ref-3">
    Access Denied - Missing or incomplete Authentication Header
    </faultstring>
    <faultactor id="ref-4">
    http://tabcorpapi.datasquirt.com.au/V2/ContactService.asmx
    </faultactor>
    <detail xsi:type="a1:ServerFault" xmlns:a1="http://schemas.microsoft.com/clr/ns/System.Runtime.Serialization.Formatters">
    <exceptionType id="ref-5">ApiAuthenticationException</exceptionType>
    <message id="ref-6">
    Missing or incomplete Authentication Header
    </message>
    <stackTrace id="ref-7">
    at Datasquirt.Contact3.API.Security.AuthenticationModule.OnEnter(Object source, EventArgs eventArgs)
    </stackTrace>
    <exception xsi:null="1"/>
    </detail>
    </SOAP-ENV:Fault>
    </SOAP-ENV:Body>
    changed $outbound
    <con:endpoint name="BusinessService$NotificationOsbProject$BusinessServices$NotificationBsSendSMSNotificationHttp" xmlns:con="http://www.bea.com/wli/sb/context">
    <con:service>
    <con:operation>SendSmsMessageWithTemplate</con:operation>
    </con:service>
    <con:transport>
    <con:uri>
    http://tabcorpapi.datasquirt.com.au/V2/ContactService.asmx
    </con:uri>
    <con:mode>request-response</con:mode>
    <con:qualityOfService>best-effort</con:qualityOfService>
    <con:request xsi:type="http:HttpRequestMetaData" xmlns:http="http://www.bea.com/wli/sb/transports/http" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <tran:headers xsi:type="http:HttpRequestHeaders" xmlns:tran="http://www.bea.com/wli/sb/transports">
    <http:Content-Type>text/xml; charset=utf-8</http:Content-Type>
    <http:SOAPAction>
    "http://datasquirt.com/webservices/SendSmsMessageWithTemplate"
    </http:SOAPAction>
    </tran:headers>
    <tran:encoding xmlns:tran="http://www.bea.com/wli/sb/transports">utf-8</tran:encoding>
    </con:request>
    <con:response xsi:type="http:HttpResponseMetaData" xmlns:http="http://www.bea.com/wli/sb/transports/http" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <tran:headers xsi:type="http:HttpResponseHeaders" xmlns:tran="http://www.bea.com/wli/sb/transports">
    <tran:user-header name="X-AspNet-Version" value="2.0.50727"/>
    <tran:user-header name="X-Powered-By" value="ASP.NET"/>
    <http:Cache-Control>private</http:Cache-Control>
    <http:Content-Length>1180</http:Content-Length>
    <http:Content-Type>text/xml; charset=utf-8</http:Content-Type>
    <http:Date>Mon, 27 Sep 2010 11:27:25 GMT</http:Date>
    <http:Server>Microsoft-IIS/7.0</http:Server>
    </tran:headers>
    <tran:response-code xmlns:tran="http://www.bea.com/wli/sb/transports">0</tran:response-code>
    <tran:response-message xmlns:tran="http://www.bea.com/wli/sb/transports">OK</tran:response-message>
    <tran:encoding xmlns:tran="http://www.bea.com/wli/sb/transports">utf-8</tran:encoding>
    <http:http-response-code>200</http:http-response-code>
    </con:response>
    </con:transport>
    <con:security>
    <con:doOutboundWss>false</con:doOutboundWss>
    </con:security>
    </con:endpoint>
    changed $inbound
    <con:endpoint name="ProxyService$Testing$Testing123" xmlns:con="http://www.bea.com/wli/sb/context">
    <con:service/>
    <con:transport>
    <con:mode>request-response</con:mode>
    <con:qualityOfService>best-effort</con:qualityOfService>
    <con:request xsi:type="loc:LocalRequestMetaData" xmlns:loc="http://www.bea.com/wli/sb/transports/local" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <tran:headers xsi:type="loc:LocalRequestHeaders" xmlns:tran="http://www.bea.com/wli/sb/transports"/>
    <tran:encoding xmlns:tran="http://www.bea.com/wli/sb/transports">utf-8</tran:encoding>
    </con:request>
    <con:response xsi:type="loc:LocalResponseMetaData" xmlns:loc="http://www.bea.com/wli/sb/transports/local" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <tran:response-code xmlns:tran="http://www.bea.com/wli/sb/transports">0</tran:response-code>
    </con:response>
    </con:transport>
    <con:security>
    <con:transportClient>
    <con:username><anonymous></con:username>
    </con:transportClient>
    </con:security>
    </con:endpoint>
    As per my understanding after Route to: "NotificationBsSendSMSNotificationHttp", the fault should be present in the $fault variable in place of $body,
    Regards,
    Anuj

  • Handling of SOAP Faults in SOAP Clients consuming PI Web services

    Hi there,
    the following is in regards to SOAP fault error handling in a SOAP client that consumes a Web Service published by PI.
    I have been reading a number of threads and blogs in regards to this topic and I am still left with some open questions which I hope to get some final answersclarifications through this thread.
    In particular the blogs
    Handling Web Service SOAP Fault Responses in SAP NetWeaver XI      - Handling Web Service SOAP Fault Responses in SAP NetWeaver XI
    XI: Propagation of meaningful error information to SOAP Client     - XI: Propagation of meaningful error information to SOAP Client
    have caused by attention.
    Both of these threads are realating to the Fault Message type one can use to return errors back to a SOAP Client (.Net, Java, etc.).
    In our scenario we published a number of Web Services through PI that provide functionality to integrate with an R3 back-end system using inbound ABAP Proxies.
    The services are standardised and will be consumed by a number of .NetJava applications and systems. The reason for the use of ABAP proxies is the customer specific application logic that is executed in the backend system. The Web services are synchronous and don't use ccBPM in the middle. Transformations are performed in PI combined with various lookups to set default values before the message is passed into the ABAP Framework of the R3 back-end system. The lookups are done against the R3 back-end system using the PI RFC Lookup feature.
    The inbound proxies currently return application errors as part of the response message back to the SOAP client. For more critical errors we introduced the use of Fault message types as the method to return the information back to the SOAP Client. This is all working satisfactory.
    The questions I have are as follows.
    1. When an error occurs at the IE level (e.g. mapping error), ABAP Proxy framework level (e.g. conversion from XML to ABAP format) or Adapter Framework level (Adapter releated error) a different SOAP fault message structure is returned to the SOAP Client than the one    used for the application errors. The SOAP fault message structure used in this case is the standard SOAP fault used by PI to return system errors back to the caller. For those SOAP fault messages there is no payload generated that could be mapped to the SOAP fault structure used for the application errors. This would be preferrable as there would be only one Fault message structure used for both inbound ABAP proxy generated fault messages and PI generated fault messages.
    Also the error messages generated by PI can be quite cryptic and difficult to interpret at the client end and could be filtered     ranslated during message mapping if the payload of the PI generated SOAP fault message could be accessed in a message mapping.
    Point 3 of the above thread 2759 indicates that this would be possible but doesn't outline how. Could somebody please clarify this for me as I don't believe that this is really possible ???.
    My idea instead was to use the PI SOAP fault message structure to also return application errors. Therefore I would create a Fault message type that matches the PI SOAP fault structure. This would enable the SOAP Client to handle only one SOAP Fault error structure. Would that be something to look into instead ?????.
    2. We have been looking at using the integrated WEB AS SOAP adapter instead of using the AF Sender SOAP adapter. While playing with this we encountered differences in the content returned through the SOAP fault generated by PI. A sample is below. Shouldn't the content of these SOAP faults be the same if the error that caused it is the same. Also the SOAP fault returned by the IE SOAP adapter is much more    useful in this particular case. Both errors below are the same, a conversion error from XML to ABAP took place in the inbound ABAP proxy framework of the back-end system.
    SOAP fault returned when using SOAP Sender adapter of AF
    <!see the documentation>
    <SOAP:Envelope xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/">
       <SOAP:Body>
          <SOAP:Fault>
             <faultcode>SOAP:Server</faultcode>
             <faultstring>Server Error</faultstring>
             <detail>
                <s:SystemError xmlns:s="http://sap.com/xi/WebService/xi2.0">
                   <context>XIAdapter</context>
                   <code>ADAPTER.JAVA_EXCEPTION</code>
                   <text>com.sap.aii.af.ra.ms.api.DeliveryException: XIProxy:PARSE_APPLICATION_DATA:
         at com.sap.aii.adapter.xi.ms.XIEventHandler.onTransmit(XIEventHandler.java:455)
         at com.sap.aii.af.ra.ms.impl.core.queue.consumer.CallConsumer.onMessage(CallConsumer.java:134)
         at com.sap.aii.af.ra.ms.impl.core.queue.Queue.run(Queue.java:916)
         at com.sap.aii.af.ra.ms.runtime.MSWorkWrapper.run(MSWorkWrapper.java:56)
         at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37)
         at java.security.AccessController.doPrivileged(Native Method)
         at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:102)
         at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:172)</text>
                </s:SystemError>
             </detail>
          </SOAP:Fault>
       </SOAP:Body>
    </SOAP:Envelope>
    SOAP fault using integrated SOAP adapter of PI IE
    <SOAP:Envelope xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/">
       <SOAP:Body>
          <SOAP:Fault>
             <faultcode>SOAP:Server</faultcode>
             <faultstring>System Error</faultstring>
             <detail>
                <s:SystemError xmlns:s="http://sap.com/xi/WebService/xi2.0">
                   <context/>
                   <code>ABAP.PARSE_APPLICATION_DATA</code>
                   <text>Error during XML => ABAP conversion (Request Message; error ID: CX_ST_DESERIALIZATION_ERROR; (/1SAI/TXSBE20FF604BAFEF8D990A XML Bytepos.: 564  XML Path: ns1:CreatePORequest(1)POHEADER(2)COMP_CODE(1) Error Text: Data loss occurred when converting ############################## Kernel ErrorId: CONVT_DATA_LOSS))</text>
                </s:SystemError>
             </detail>
          </SOAP:Fault>
       </SOAP:Body>
    </SOAP:Envelope>
    I have been reading threads for hours without being able to find one that answers questions 1 or provides a blog that outlines the approach one should take for error handling in SOAP clients that consume PI Web Services (and covers both PISystem generated faults and faults raised in Proxies).
    There may already be a blog or thread and I just missed it.
    Any comments are welcome.
    Thanks. Dieter

    Hi Dieter,
    As Bhavesh already mentioned fault messages are used for application errors. The same is described in SAP XI help:
    http://help.sap.com/saphelp_nw04/helpdata/en/dd/b7623c6369f454e10000000a114084/frameset.htm
    In case of system error (e.g. field length too long in proxy call or error in XI/PI mapping) there seems to be no standard way of handling it and propagating the response to the consumer of webservice.
    Each system error is not recognized by SOAP adapter and SOAP adapter exception is raised.
    The only bizzare solution that I can see is developing an adapter module and transport wrong message to standard fault message before delivering it to adapter engine:
    http://help.sap.com/saphelp_nw04/helpdata/en/a4/f13341771b4c0de10000000a1550b0/frameset.htm
    Kind regards,
    Wojciech
    btw nice thread

  • How to catch a SOAP fault

    Hi All,
    I have a ISU to web service, PROXY to SOAP sync interface. I am getting following as response.
    How can I get this into Fault message mapping?
    I have followed these blogs:
    Fault Message Types - A Demo (Part 1)
    Handling Web Service SOAP Fault Responses in SAP NetWeaver XI
      <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
    - <!--  Inbound Message
      -->
    - <SAP:Error SOAP:mustUnderstand="1" xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/">
      <SAP:Category>XIAdapterFramework</SAP:Category>
      <SAP:Code area="MESSAGE">GENERAL</SAP:Code>
      <SAP:P1 />
      <SAP:P2 />
      <SAP:P3 />
      <SAP:P4 />
      <SAP:AdditionalText>com.sap.engine.interfaces.messaging.api.exception.MessagingException: SOAP: response message contains an error XIAdapter/PARSING/ADAPTER.SOAP_EXCEPTION - soap fault: Validation constraint violation: data type mismatch in element 'extraOverhead'</SAP:AdditionalText>
      <SAP:Stack />
      <SAP:Retry>M</SAP:Retry>
      </SAP:Error>
    Thanks,
    Aravind

    Hi,
    Can you please elaborate exactly what you are trying to achieve.....are you trying to display this error message to the user of client proxy...If so, You can catch the exceptions in client proxy using the two standard exception classes.
    CATCH cx_ai_system_fault .
    CATCH cx_ai_application_fault .
    and in the catch block you can receive the error message and display it. The code will look like this
      DATA :  sys_fault TYPE REF TO cx_ai_system_fault,
                 text      TYPE string.
      CREATE OBJECT sys_fault.
      CALL METHOD sys_fault->get_text
        RECEIVING
          result = text.
      WRITE  : /10 'System Fault ', 30 text.
    Regards,
    Priyanka

  • BEA-382500: ALSB Service Callout action received SOAP Fault response

    Hi Friends...
    <BR>
    <BR>
    <BR>
    During the implementation of TUTORIAL: 2 Loan Example of AquaLogic Service Bus 2.1,
    I am getting fault response when testing the Proxy Service. Please help me in the following....
    <BR>
    <BR>
    <BR>
    <b>BEA-382500: ALSB Service Callout action received SOAP Fault response</b>
    <BR>
    <BR>
    <BR>
    <b>error: failed to load java type corresponding to t=LoanStruct@java:normal.client</b>
    <BR>
    at
    <BR>
    <BR>
    <BR>
    <BR>
    com.bea.staxb.runtime.internal.FailFastErrorHandler.add(FailFastErrorHandler.java:45)
    at com.bea.staxb.runtime.internal.MarshalStreamUtils.addError(MarshalStreamUtils.java:274)
    at com.bea.staxb.runtime.internal.MarshalStreamUtils.addError(MarshalStreamUtils.java:249)
    at com.bea.staxb.runtime.internal.UnmarshalResult.addError(UnmarshalResult.java:140)
    at com.bea.staxb.runtime.internal.UnmarshalResult.addError(UnmarshalResult.java:124)
    at com.bea.staxb.runtime.internal.UnmarshalResult.getPojoBindingType(UnmarshalResult.java:327)
    at com.bea.staxb.runtime.internal.UnmarshalResult.getPojoTypeFromXsiType(UnmarshalResult.java:310)
    at com.bea.staxb.runtime.internal.RuntimeBindingType.determineActualRuntimeType(RuntimeBindingType.java:256)
    at com.bea.staxb.runtime.internal.UnmarshalResult.unmarshalType(UnmarshalResult.java:210)
    at com.bea.staxb.runtime.internal.SoapUnmarshallerImpl.unmarshalType(SoapUnmarshallerImpl.java:93)
    at weblogic.wsee.bind.runtime.internal.EncodedDeserializerContext.unmarshalType(EncodedDeserializerContext.java:66)
    at weblogic.wsee.bind.runtime.internal.BaseDeserializerContext.internalDeserializeType(BaseDeserializerContext.java:170)
    at weblogic.wsee.bind.runtime.internal.BaseDeserializerContext.deserializeType(BaseDeserializerContext.java:87)
    at weblogic.wsee.codec.soap11.SoapDecoder.decodePart(SoapDecoder.java:401)
    at weblogic.wsee.codec.soap11.SoapDecoder.decodeParams(SoapDecoder.java:236)
    at weblogic.wsee.codec.soap11.SoapDecoder.decodeParts(SoapDecoder.java:163)
    at weblogic.wsee.codec.soap11.SoapDecoder.decode(SoapDecoder.java:116)
    at weblogic.wsee.codec.soap11.SoapCodec.decode(SoapCodec.java:136)
    at weblogic.wsee.ws.dispatch.server.CodecHandler.decode(CodecHandler.java:138)
    at weblogic.wsee.ws.dispatch.server.CodecHandler.handleRequest(CodecHandler.java:39)
    at weblogic.wsee.handler.HandlerIterator.handleRequest(HandlerIterator.java:127)
    at weblogic.wsee.ws.dispatch.server.ServerDispatcher.dispatch(ServerDispatcher.java:85)
    at weblogic.wsee.ws.WsSkel.invoke(WsSkel.java:80)
    at weblogic.wsee.server.servlet.SoapProcessor.handlePost(SoapProcessor.java:66)
    at weblogic.wsee.server.servlet.SoapProcessor.process(SoapProcessor.java:44)
    at weblogic.wsee.server.servlet.BaseWSServlet$AuthorizedInvoke.run(BaseWSServlet.java:165)
    at weblogic.wsee.server.servlet.BaseWSServlet.service(BaseWSServlet.java:84)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
    at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:225)
    at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:127)
    at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:283)
    at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:175)
    at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3214)
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
    at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
    at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:1983)
    at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:1890)
    at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1344)
    at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)
    at weblogic.work.ExecuteThread.run(ExecuteThread.java:181)
    <BR>
    Message was edited by:
    alwaysvaghu
    Message was edited by:
    alwaysvaghu

    I've been getting this problem as well. However, the thing that confuses me is that if I use the command-line client (as described in the tutorial), everything seems to work fine. However, if I use the test console, it fails to work (giving the fault described in an ancestor of this post).
    I've tried added a 'Rename' operation, but I just get the java1 namespace as well.
    If the problem was just the namespace issue as stated, wouldn't the command-line client have a similar problem?

  • Catching and rethrowing a SOAP Fault from an OSB 11g Proxy service

    Hello,
    We have a chain of proxy services (that last one of which calls a business service) in our 11.1.1.6 OSB project.  At one of the lower levels, we successfully throw a fault like this:
    <soapenv:Body xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
      <soap:Fault xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
        <soap:faultcode>SOAP-ENV:Client</soap:faultcode>
        <soap:faultstring>Non-Existent User</soap:faultstring>
        <soap:faultActor>Client who consumed this Web Service operation</soap:faultActor>
        <soap:detail>
          <sc:UserNonExistentFault xmlns:sc="http://xmlns.sc.com/Services/V1">
            <sc:CustomerNumber>12345</sc:CustomerNumber>
          </sc:UserNonExistentFault>
        </soap:detail>
      </soap:Fault>
    </soapenv:Body>
    In the proxy service which calls this proxy service, I tried to catch this fault in an Error Handler so that I could confirm that it's available for me to re-throw back up the chain.  Curiously, the proxy service which calls that proxy service cannot see that fault.  But rather it sees what appears to be an OSB-overridden fault:
    <con:fault xmlns:con="http://www.bea.com/wli/sb/context">
      <con:errorCode>BEA-380000</con:errorCode>
      <con:reason>com.bea.wli.sb.pipeline.PipelineException</con:reason>
      <con:details>
        <err:ErrorResponseDetail xmlns:err="http://www.bea.com/wli/sb/errors">
          <err:response-metadata xsi:type="sb:SBResponseMetaDataXML" xmlns:sb="http://www.bea.com/wli/sb/transports/sb" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <tran:headers xsi:type="sb:SBResponseHeadersXML" xmlns:tran="http://www.bea.com/wli/sb/transports"/>
            <tran:response-code xmlns:tran="http://www.bea.com/wli/sb/transports">1</tran:response-code>
            <tran:encoding xmlns:tran="http://www.bea.com/wli/sb/transports">utf-8</tran:encoding>
          </err:response-metadata>
        </err:ErrorResponseDetail>
      </con:details>
      <con:location>
        <con:node>PipelinePairNode</con:node>
        <con:pipeline>PipelinePairNode_request</con:pipeline>
        <con:stage>GetCustomerByNumber</con:stage>
        <con:path>request-pipeline</con:path>
      </con:location>
    </con:fault>
    I have tried printing out the values of $body, $fault, $outbound and $inbound from the calling proxy service's Error Handler just to see if our <sc:UserNonExistentFault> is nested anywhere therein.  Unfortunately, it is nowhere to be found.
    How can we force OSB to NOT override our faults with OSB-framework faults and, instead, just throw our custom fault all the way up the chain and back to the consumer?
    Thank you,
    Michael

    I think I figured this out.
    In proxyService-2, build the <soap:Fault> and assign it to the body, then Reply with Failure (as you mentioned above).
    When proxyService-1 receives this, it will still be in the $body variable.  But the $fault variable is now populated with a BEA-38000 error.  It seems that as long as the $fault variable has data in it, then the OSB system will throw that instead of my fault (ignoring the <soap:Fault> I put into the body).
    So what I did was to Delete the $fault variable in the error handler of proxyService-1, then Reply with Failure (again).
    It would seem as if the inner workings of OSB has some logic like:
    if $fault is not null, throw the BEA-####### fault.  Otherwise, return the contents of the $body.
    By removing the fault, I effectively got to that "else/otherwise" condition.
    Of course, the Reply with Failure is still needed to ensure that an HTTP 500 error is passed with the fault (per the SOAP specification).
    Cheers!
    Michael

  • ALSB Proxy Service error calling Business service

    I have an external webservice on Weblogic 8.1 SP5, and I configured Business Service in ALSB 2.6, that is able to invoke the external webservice. But When I create Proxy Service based on the existing Business service and try to invoke the proxy service I get "no SOAP Action Header" error in WebLogic 8.1 SP5 External webservice.
    AxisFault
    faultCode: {http://xml.apache.org/axis/}Client.NoSOAPAction
    faultSubcode:
    faultString: no SOAPAction header!
    faultActor:
    faultNode:
    faultDetail:
    {http://xml.apache.org/axis/}stackTrace:no SOAPAction header!
    at org.apache.axis.transport.http.AxisServlet.getSoapAction(AxisServlet.java:1004)
    at org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:678)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
    at org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
    at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:1072)
    at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:465)
    at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:348)
    at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:6981)
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
    at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
    at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3892)
    at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2766)
    at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:224)
    at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:183)
    {http://xml.apache.org/axis/}hostname:ossinv1d
    no SOAPAction header!
    at org.apache.axis.transport.http.AxisServlet.getSoapAction(AxisServlet.java:1004)
    at org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:678)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
    at org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
    at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:1072)
    at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:465)
    at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:348)
    at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:6981)
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
    at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
    at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3892)
    at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2766)
    at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:224)
    at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:183)
    Also I get
    com.bea.wli.sb.pipeline.PipelineException in the ALSB.
    Is it a known issue ?

    The back end service basically complains the SOAPAction http header was not included in the request. Typically this header is added automatically by ALSB if the proxy is of type SOAP and the wsdl contain the SOAPAction value for the operation invoked.
    Alternatively you can force the SOAPAction header to be set to the correct value by adding a transport header action in the request part of the routing node.
    Gregory Haardt
    ALSB Prg. Manager
    [email protected]

  • How to return a Soap Fault from a business process

    I'm trying to re-implement an existing web service in WLI that can return soap
    faults to clients when business errors occur while processing a request. Is this
    possible to do with WLI, and if so can someone please point me in the right direction?
    thanks...

    If your JWS can throw a SOAPFaultException, that should return a SOAP fault to
    the client.
    "Michael Hanes" <[email protected]> wrote:
    >
    I'm trying to re-implement an existing web service in WLI that can return
    soap
    faults to clients when business errors occur while processing a request.
    Is this
    possible to do with WLI, and if so can someone please point me in the
    right direction?
    thanks...

  • Calling a business service based on operation-soap action in Proxy service

    Hi,
    I have a requirement in which I have to call a business service based on operation-soap action defined in Proxy service wsdl.
    Like in below mentioned wsdl GetPartCostDelta and GetCurrencyList operations are there.But which ever operation I select,It just goes to one business service.
    Is there any way,I can route to some another business service based on the soap action
    proxy service WSDL
    <?xml version="1.0" encoding="UTF-8"?>
    <wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:ewopcd="urn:com:gm:gpd:schema:ewopartcostdelta" xmlns:gen="urn:com:gm:gpd:schema:genericfault" xmlns:tns="urn:com:gm:gpd:services:ewopartcostdeltaservice" targetNamespace="urn:com:gm:gpd:services:ewopartcostdeltaservice">
         <wsdl:types>
              <xs:schema>
                   <xs:import namespace="urn:com:gm:gpd:schema:ewopartcostdelta" schemaLocation="ewocostdelta.xsd"/>
                   <xs:import namespace="urn:com:gm:gpd:schema:genericfault" schemaLocation="servicefault.xsd"/>
              </xs:schema>
         </wsdl:types>
         <wsdl:message name="EWOCurrencyListRequest">
              <wsdl:part name="CurrencyListRequest" element="ewopcd:EWOCostDeltaInput"/>
         </wsdl:message>     
         <wsdl:message name="EWOCurrencyListResponse">
              <wsdl:part name="CurrencyListResponse" element="ewopcd:EWOCurrencyList"/>
         </wsdl:message>     
         <wsdl:message name="EWOPartCostDeltaRequest">
              <wsdl:part name="PartCostDeltaRequest" element="ewopcd:EWOCostDeltaInput"/>
         </wsdl:message>
         <wsdl:message name="EWOPartCostDeltaResponse">
              <wsdl:part name="PartCostDeltaResponse" element="ewopcd:EWOCostDeltaResult"/>
         </wsdl:message>
         <wsdl:message name="EWOPartCostDeltaServiceFault">
              <wsdl:part name="PartCostDeltaServiceFault" element="gen:ServiceFault"/>
         </wsdl:message>
         <wsdl:portType name="EWOPartCostDeltaPortType">
              <wsdl:operation name="GetCurrencyList">
                   <wsdl:input name="EWOCurrencyListRequest" message="tns:EWOCurrencyListRequest"/>
                   <wsdl:output name="EWOCurrencyListResponse" message="tns:EWOCurrencyListResponse"/>
                   <wsdl:fault name="EWOPartCostDeltaServiceFault" message="tns:EWOPartCostDeltaServiceFault"/>
              </wsdl:operation>
              <wsdl:operation name="GetPartCostDelta">
                   <wsdl:input name="EWOPartCostDeltaRequest" message="tns:EWOPartCostDeltaRequest"/>
                   <wsdl:output name="EWOPartCostDeltaResponse" message="tns:EWOPartCostDeltaResponse"/>
                   <wsdl:fault name="EWOPartCostDeltaServiceFault" message="tns:EWOPartCostDeltaServiceFault"/>
              </wsdl:operation>          
         </wsdl:portType>
         <wsdl:binding name="EWOPartCostDeltaBinding" type="tns:EWOPartCostDeltaPortType">
              <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
              <wsdl:operation name="GetCurrencyList">
                   <soap:operation soapAction="GetCurrencyList" style="document"/>
                   <wsdl:input>
                        <soap:body use="literal"/>
                   </wsdl:input>
                   <wsdl:output>
                        <soap:body use="literal"/>
                   </wsdl:output>
                   <wsdl:fault name="EWOPartCostDeltaServiceFault">
                        <soap:fault name="EWOCostDeltaServiceFault" use="literal"/>
                   </wsdl:fault>
              </wsdl:operation>
                        <wsdl:operation name="GetPartCostDelta">
                   <soap:operation soapAction="GetPartCostDelta" style="document"/>
                   <wsdl:input>
                        <soap:body use="literal"/>
                   </wsdl:input>
                   <wsdl:output>
                        <soap:body use="literal"/>
                   </wsdl:output>
                   <wsdl:fault name="EWOPartCostDeltaServiceFault">
                        <soap:fault name="EWOCostDeltaServiceFault" use="literal"/>
                   </wsdl:fault>
              </wsdl:operation>
         </wsdl:binding>
         <wsdl:service name="EWOPartCostDeltaService">
              <wsdl:port name="EWOPartCostDeltaPort" binding="tns:EWOPartCostDeltaBinding">
                   <soap:address location="https://localhost/EWOPartCostDelta"/>
              </wsdl:port>
         </wsdl:service>
    </wsdl:definitions>

    Did you try using the Operational branching node of OSB?
    You have copy the operation name from the inbound variable and populate the SOAP Header with that value into the SOAPAction tag.I think this will work.
    Thanks,
    Prabu

  • Remove SOAP Header Element from ALSB Proxy Service Response

    I've got a client of one of my ALSB Proxy services that needs the SOAP header element removed from the response. I'm struggling to find a way to do that with a WSDL-based proxy service. Do I need to change my service to an Any XML Service or is there an easier way?

    At the same time, could you please also tell me how do i convert a XML Response from a business service to a SOAP Response in Proxy Service.
    My client is expecting a soap response and the backend gives back only the XML Response
    Thanks in advance!!
    ~Swagat

  • Create a web service from java bean and map exceptions to SOAP faults

    Hi,
    We have to expose our Session stateless EJB3 as web services. I've tried to use annotations and jdev wizard "java bean to web service" and it works fine.
    Our problem now is that our methods can throw a business exception that contains a list of error message strings to be presented on the client.
    I did not find any way to use annotations to make it build a wsdl with soap fault mapped to our exception class. Neither I could to make the wizard to create wsdl with faults.
    As we are exposing already designed and implemented classes as web services, I think the bottom-top (java->wsdl) approach is better that top->botton (wsdl->java). Therefore, I'm looking for a possibility to generate the web services from the java beans and have the exception be mapped to a soap fault message.
    We are using jdev 10.1.3.1 and OAS 10.1.3.1., is there a way to map exceptions to soap faults using bottom->top approach?
    thank you

    A couple of links that may be of help:
    http://www.netbeans.org/servlets/ReadMsg?listName=nbj2ee&msgNo=1218
    My last question concerning web services:
    I have already written a session bean and I'd like to add some methods
    as a web service to it, how do I do that?
    Or I can only create another bean for a webservice and cannot modify the
    original one?You might create web service with existing sources and select you bean. New web services with appropriate lookup method will be generated.
    All web service method, that will be exposed in web service, you
    should add itself (Pop-up menu Web Service -> Add operation)
    http://usersguide.netbeans.org/files/documents/40/73/Chapter9-WebServices.pdf

  • ALSB business service invocation of a collocated web service

    If my ALSB business service invokes a web service that is collocated in the same WebLogic Server instance - does the WebLogic Server have any optimization to avoid unnecessary processing (e.g. creating the soap message, etc.)? For example - the loan application ALSB sample. In my case, I created a web service using Beehive controls to integrate with my service logic - does that matter?

    The quick answer to your question is no, there is no optimization that bypasses the web services stack for web services that are hosted in the same container.
    There is an optimization called a local transport that bypasses much of network stack, but it can only be invoked by other proxies, and does not do what you describe.
    http://edocs.beasys.com/alsb/docs30/localtransport/localTransport.html#wp1075782
    If you have a specific requirement or enhancement request, I recommend you submit it via your local account team and/or post it on to the SOA Suite forum:
    SOA Suite

  • SOAP Fault when returning null from a Native Web Service Stored Procedure

    I have a stored procedure which I can successfully invoke via soapUI
    However, if one of the Stored Procedure's OUT arguments is set to null the native web service returns the following fault :
    <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Body>
    <soap:Fault>
    <faultcode>soap:Client</faultcode>
    <faultstring>Error processing input</faultstring>
    <detail>
    <OracleErrors xmlns="http://xmlns.oracle.com/orawsv/faults">
    <OracleError>
    <ErrorNumber>ORA-19202</ErrorNumber>
    <Message>Error occurred in XML processing</Message>
    </OracleError>
    <OracleError>
    <ErrorNumber>ORA-01405</ErrorNumber>
    <Message>fetched column value is NULL</Message>
    </OracleError>
    </OracleErrors>
    </detail>
    </soap:Fault>
    </soap:Body>
    </soap:Envelope>I can see how to control the processing of null values when invoking orawsv (using the null_handling element).
    Is there an equivalent for Stored Procedures ?
    Thanks,
    PD
    versions as follows :
    Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
    PL/SQL Release 11.2.0.1.0 - Production
    "CORE     11.2.0.1.0     Production"
    TNS for Linux: Version 11.2.0.1.0 - Production
    NLSRTL Version 11.2.0.1.0 - Production

    Without going into any technical discussion about the code, my first question is what JDK version was used to create this which was imported into the form? Understand that Forms 10 runs on JDK 1.4.2, so if you used any newer JDK version, likely there will be problems.

  • SOAP Fault while invoking ISG Service through BPEL

    Hi,
    I am trying to invoke a EBS R12 pl sql API exposed as a web service through integrated SOA gateway. But i am hitting the same error for different API`s that i have tried with. the error is :
    <remoteFault>
    <part name="summary">
    <summary>Error occured while service was processing.</summary>
    </part>
    <part name="detail">
    <detail>oracle.j2ee.ws.client.jaxws.JRFSOAPFaultException: Client received SOAP Fault from server : Error occured while service was processing.</detail>
    </part>
    <part name="code">
    <code>{http://schemas.xmlsoap.org/soap/envelope/}Server</code>
    </part>
    </remoteFault>
    I have supplied the r12 credentials through the composite WS Policies and the header details for the API as well. I am also able to call the API through PL/SQL code. Any reason why this error is occuring.

    My 2 cents here - are you using ?wsdl for accessing the wsdl? Reason I am asking this is because you get a fault message as you have posted, i.e., The action (ABC#) did not identify an operation, looks like you are hitting the service directly instead of querying for the wsdl. Also, while you are using this wsdl in your PS/BS, for example, maybe in a route action, are you sure you are selecting the operation from the list of operations this wsdl has?

  • Business service is not working in sender side but business system is working soap to idoc but why like that

    i have  scenario SOAP to IDOC
    when i'm using business service in sender side it is getting an error as follows
    sender message can not convert to ALE Logical system
    in this i'm using altova spy as testing tool
    my sender interface is asynchronous
    but when i'm using business system everything is working fine
    In sender side i'm using soap adapter,i checked the logical system everything is fine
    mainly the problem is why it is working when i'm using business system rather than business service
    my pi version is pi 7.0
    thanks in advance
    regards
    satish

    Hi Satish,
    You are sending IDOC's to SAP system right. we should create Business system not business service.
    so we should create the business system as web AS ABAP in SLD and import the same in ID.
    When we create the business system in SLD the logical system name is assigned for the business system. like SAPCLNT100...It plays a key role in IDOC scenarios.
    sender message can not convert to ALE Logical system
    Reasons for this issue is
    1) logical system name is unable to read from SLD for that corresponding business system.
    Goto business system click on Adapter specific identifiers from the menu --> read from SLD.
    it will automatically fetch the logical system name from the SLD.
    2) Sometimes the logical system name will be deleted from the business system in SLD.
    Delete the business system and re-create it, and follow the above procedure.it will resolve your issue.
    Regards
    Bhargava Krishna

Maybe you are looking for