MessageHandlers - caching of SOAP responses

I have a webservice which has a number of clients who will all consume the same
message once. I've determined that one of my bottlenecks is actually turning
the results of the EJB call into the SOAP message. Since all the clients will
receive the same message once I think it would be nice to cache the soap message
resulting from a call.
Can I use a message handler to do this, or will the SOAP message already have
been generated?

Hi Tom,
Your previous reply clears things up :-) But for the record, serialization (converting
the value returned from the EJB to XML) has already occurred when the handleResponse(MessageContext)
method is called. That's why you can get access to (and manipulate) the SOAP response
in the handleResponse(MessageContext) method. This SOAP response has the value
returned from the EJB in it, when the handleResponse(MessageContext) method is
called.
Later,
Mike Wooten
"Tom Hennen" <[email protected]> wrote:
>
I need to call the EJB because what it returns will determine if the
message is
already cached. You see the ejb returns a message from a queue. That
message
needs to be removed from the queue, and the handler won't know if it
has the message
cached until it gets a response from the EJB.
At any rate it sounds like you're saying the serialization takes place
after handlerResponse
gets through with the Message? If that's the case then this won't work
anyways.
"Michael Wooten" <[email protected]> wrote:
Hi Tom,
You'd have to store something in the MessageContext DURING the handleRequest(MessageContext)
method processing, to make any sense here :-)
The JAX-RPC Handler infrastructure is only guaranteeing that the property
stored
during the handleRequest(MessageContext) call, will be available during
the handleResponse(MessageContext)
call.
I don't quite understand why you need to call the EJB, if you already
know what
the value of the return object will be. I'm assuming that the EJB will
return
the same result, for a given value assigned to the input arguments.If
this is
true, why can't you use a byte[] created from the payload of the <SOAPBody>
request,
as the cache item key. If you don't find the cache item key (you look
in the
handleRequest method), set a MessageContext property with the payload
byte[],
and call the EJB. When the EJB returns, retrieve the property and use
it to create
a cache item that has the value of the property as the key, and a byte[]
of the
SOAP response as a value. When the handleResponse method is called,it
will contain
the response that will become the cache item value. Create a byte[]from
it, assign
the value of the property as the key, and a byte[] of the SOAP response
as the
value. If you find the key in the cache during the handleRequest(MessageContext)
call, retreive the cache value, put it in a MessageContext property,
return false
from handleRequest(MessageContext), grab the MessageContext property
value in
the handleResponse(MessageContext) method, and create the SOAP response
with it.
I take it that this isn't something you can do in your situation :-)
Calling the EJB from inside the handleRequest(MessageContext) method
will still
have performance issues, because you'll still need to deal with serializing/deserializing
XML.
Regards,
Mike Wooten
"Tom Hennen" <[email protected]> wrote:
Hmm, that's what I was afraid of.
We actually have to call the EJB. Skipping it isn't an option.
The
ejb only
accesses data in memory, so caching it's response would be of little
value anyways.
When using RMI to bypass the jax-rpc stack I'm seeing CPU usage about
1/3 less
than when using webservices. Overall throughput also more than doubles.
Would I see a benefit to calling the EJB from the handleRequest method
and then
based upon it's response sticking a cached SOAP message into the message
context?
Of course this would bring up the problem of what to do if the message
hasn't
been cached (calling the EJB twice isn't allowed).
"Michael Wooten" <[email protected]> wrote:
Hi Tom,
The SOAP message will have already been created for both client andserver-side
JAX-RPC Handlers, but you can avoid the EJB call :-)
The flow is as follows:
1. Web service consumer code calls web service operation.
2. The client-side JAX-RPC stack creates a SOAP message from the call.
If a
client-side JAX-RPC Handler is in place for the called operation,
it's
handleRequest
callback method is invoked.
3. If handleRequest returns a true, or there is no client-side JAX-RPC
Handler
in place, the
JAX-RPC implementation connects to the endpoint URL and sends the
SOAP
message.
4. The server-side JAX-RPC stack invokes the handleRequest method,of
a server-side
JAX-RPC Handler for the operation, if one is defined. It (the server-side
JAX-RPC
stack) hasn't made the call to the EJB that is providing the service
implementation
yet.
NOTE: Seeing as the EJB hasn't been called yet, you could have thecode
in the
handleRequest method return a cached response. The assumption here,would
be that
this server-side JAX-RPC Handler had access to a shared database (or
a JCache-based
product), that it could query in the handleRequest method, and update
in the handleResponse
method. If the query returned a cached SOAP response, you would useit
to set
a property on the MessageContext object passed to handleRequest, using
the setProperty
method, and return false from handleRequest. The stack should then
bypass
invoking
the EJB and call the handleResponse, using the same MessageContextobject
you
set the property on in the handleRequest method. Call the getProperty
on the MessageContext
object in the handleResponse method, to get the cached SOAP response,
and use
it to replace the one currently in the SOAP response. If performance
is a major
factor (which sounds like the case), you might want to replace theshared
database
with an distributed cache product (i.e. Tangosol Coherence, an open-source
JCache
product, etc.), or an XML database :-)
5. If the handleRequest method of the server-side JAX-RPC Handler
returns
true,
or no server-side JAX-RPC Handler was defined for the operation, the
server-side
stack calls the EJB.
6. If a server-side JAX-RPC Handler is defined, the server-side stack
calls the
handleResponse method. If not, the stack uses the results of the EJB
call to create
the SOAP response.
7. If a client-side JAX-RPC Handler is defined, the client-side stack
calls the
handleResponse method. Afterwards, it processes the SOAP responseand
deserializes
the return value. If no client-side JAX-RPC Handler is defined, theclient-side
stack just processes the SOAP response and deserializes the return
value.
HTH,
Mike Wooten
"Tom Hennen" <[email protected]> wrote:
I have a webservice which has a number of clients who will all consume
the same
message once. I've determined that one of my bottlenecks is actually
turning
the results of the EJB call into the SOAP message. Since all the
clients
will
receive the same message once I think it would be nice to cache thesoap
message
resulting from a call.
Can I use a message handler to do this, or will the SOAP message
already
have
been generated?

Similar Messages

  • Error:SOAP: response message contains an error XIAdapter/PARSING/ADAPTER.SOAP_EXCEPTION - soap fault: Server was unable to read request. --- There is an error in XML document (1, 447). --- Input string was not in a correct format.

    Hi All,
        We have a scenario of FTP-->PI---> Webservice.  While triggering the data in the FTP, it is failing in the PI with the below error
    SOAP: response message contains an error XIAdapter/PARSING/ADAPTER.SOAP_EXCEPTION - soap fault: Server was unable to read request. ---> There is an error in XML document (1, 447). ---> Input string was not in a correct format.
    Can you please help?

    Hi Raja- It seems to be a data quality issue.
    Check for the value @ 1447 position in the xml message that you are trying to send to web service..
    may be a date filed/decimal value which is not in expected format.

  • SOAP: response message contains an error XIAdapter/HTTP/ADAPTER.HTTP_EXCEPT

    Hi there,
    I am trying to publish a file from SAP as web service using XI and SOAP Adapter.
    I am using ABAP proxy to get the data into XI.
    Designing and Configuration in XI has no problems because when i use File adapter the data is trasmitted to FTP server.
    But when I used SOAP Reciever adapter I am getting following error in RWB
    Delivery of the message to the application using connection SOAP_http://sap.com/xi/XI/System failed, due to: com.sap.aii.af.ra.ms.api.RecoverableException: SOAP: response message contains an error XIAdapter/HTTP/ADAPTER.HTTP_EXCEPTION - HTTP 500 Error during parsing of SOAP header.
    <b>Scenario</b>: SAP ABAP Proxy -> XI -> WebService. Asynchronous.
    <b>SOAP</b> Receiver adaptor.
    <b>Target URL</b> http://<host>:<port number >/sap/xi/engine?type=entry&version=3.0&Sender.Service=SAPDC2653&Interface=urn:bzttest:00:hsa:test%5EOB_MI_BZT_TEST&QualityOfService=ExactlyOnce
    Do not use SOAP Envelop is checked.
    <b>SOAP Action</b> http://sap.com/xi/WebService/soap1.1
    What i am missing here? How should I solve this problem?
    Any help is appreciated,
    Thx,
    Yogi

    Say there's a bapi/rfc that you want to call on an R/3 backend (e.g. 4.6c).  On it's own, the R/3 system cannot expose the rfc/bapi as a web service, but XI can.  So in this case, the scenario would be:
    WS client -> XI -> R/3
    When XI "exposes" a web service, it is exposing a service for a receiving system (in the above example, the R/3 system).  XI itself does not provide or contain the service implementation.  When XI exposes a web service, it is always done via the <b>sender</b> soap adapter (i.e. if soap adapter is used).   Receiver soap adapter is used to call or consume an actual web service from an external application.
    Regards,
    Jin

  • SOAP : response message contains an error Application/UNKNOWN/APPLICATION_E

    Hi All,
    I am working in a Proxy to SOAP synchronous scenario. Message is processing successfully through IE but i am getting the below error in receiver (SOAP) communication channel.
    SOAP : response message contains an error Application/UNKNOWN/APPLICATION_ERROR.
    Please suggest what will be possible way out to resolve this issue.
    Thanks,
    Priya Ranjan

    Dear Priya
    Have you configured Fault Message for this scenario.
    This kind of error is generally thrown by the end target system where the message is not processed succesfully due to some error in there system.
    Sourabh

  • BPEL process to create a PDF and send it as attachment in SOAP response

    We have a requirement to have a webservice created using BPEL, which can receive input from a client and create a PDF using the input and send the PDF as attachment in the SOAP response.
    We have found the below link in Oracle docs and our basic understanding on the functionality given is that the MIMEService is being used to read a SOAP attachment from some other service and send it as an attachment in the SOAP response to the requester. As explained above, this doesn't completely satisfy our requirement.
    http://docs.oracle.com/cd/E11036_01/integrate.1013/b28981/manipdoc.htm#BABCJIAH
    Please suggest if there is any other approach that suites our requirement.
    Thanks.

    Hi,
    I have a Weblogic webservice which returns me a PDF attachment as resposne ( here I have MIME related stuff).I need to get attachment as bpel response.
    I have created a BPEL process to invoke the weblogic webservice. I have explictly added the MIME part in bpel.wsdl same as weblogic webservice wsdl.
    I tried to assign the response variable( of type base64binary) of bpel.wsdl and my webservice .wsdl . I am getting some error with no attachment.
    Below is my xsd used in BPEL.wsdl*
    <?xml version="1.0" encoding="UTF-8"?>
    <schema attributeFormDefault="unqualified"
         elementFormDefault="qualified"
         targetNamespace="http://xmlns.oracle.com/MIMEApp/test/BPELProcess1"
         xmlns="http://www.w3.org/2001/XMLSchema">
         <complexType name="process">
                   <sequence>
                        <element name="input" type="string"/>
                   </sequence>
         </complexType>
         <complexType name="processResponse">
                   <sequence>
                        <element name="result" type="string"/>
                   </sequence>
         </complexType>
    <complexType name="GetAttachmentPDF">
    <sequence>
    <element minOccurs="0" name="Pdf" nillable="false" type="base64Binary"/>
    </sequence>
    </complexType>
    </schema>
    Below is my BPEL.wsdl*
    <?xml version="1.0" encoding="UTF-8"?>
    <wsdl:definitions name="BPELProcess1"
    targetNamespace="http://xmlns.oracle.com/MIMEApp/test/BPELProcess1"
    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
    xmlns:client="http://xmlns.oracle.com/MIMEApp/test/BPELProcess1"
    xmlns:plnk="http://schemas.xmlsoap.org/ws/2003/05/partner-link/"
    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
    xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/">
    <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         TYPE DEFINITION - List of services participating in this BPEL process
         The default output of the BPEL designer uses strings as input and
         output to the BPEL Process. But you can define or import any XML
         Schema type and use them as part of the message types.
         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
    <wsdl:types>
    <schema xmlns="http://www.w3.org/2001/XMLSchema">
    <import namespace="http://xmlns.oracle.com/MIMEApp/test/BPELProcess1"
    schemaLocation="xsd/BPELProcess1.xsd"/>
    </schema>
    </wsdl:types>
    <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         MESSAGE TYPE DEFINITION - Definition of the message types used as
         part of the port type defintions
         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
    <wsdl:message name="BPELProcess1RequestMessage">
    <wsdl:part name="payload" type="client:process"/>
    </wsdl:message>
    <wsdl:message name="BPELProcess1ResponseMessage">
    <wsdl:part name="payload" type="client:processResponse"/>
    <wsdl:part name="attachment" type="client:GetAttachmentPDF"/>
    </wsdl:message>
    <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         PORT TYPE DEFINITION - A port type groups a set of operations into
         a logical service unit.
         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
    <!-- portType implemented by the BPELProcess1 BPEL process -->
    <wsdl:portType name="BPELProcess1">
    <wsdl:operation name="process">
    <wsdl:input message="client:BPELProcess1RequestMessage"/>
    <wsdl:output message="client:BPELProcess1ResponseMessage"/>
    </wsdl:operation>
    </wsdl:portType>
    <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         PARTNER LINK TYPE DEFINITION
         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
    <plnk:partnerLinkType name="BPELProcess1">
    <plnk:role name="BPELProcess1Provider">
    <plnk:portType name="client:BPELProcess1"/>
    </plnk:role>
    </plnk:partnerLinkType>
    <wsdl:binding name="BPELProcess1SOAP11Binding" type="client:BPELProcess1">
    <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
    <wsdl:operation name="process">
    <soap:operation style="rpc"
    soapAction="http://xmlns.oracle.com/MIMEApp/test/BPELProcess1/process"/>
    <wsdl:input>
    <soap:body use="literal"
    namespace="http://xmlns.oracle.com/MIMEApp/test/BPELProcess1"/>
    </wsdl:input>
    <wsdl:output>
    <mime:multipartRelated>
    <mime:part>
    <soap:body use="literal"
    namespace="http://xmlns.oracle.com/MIMEApp/test/BPELProcess1"/>
    </mime:part>
    <mime:part>
    <mime:content part="attachment" type="application/pdf"/>
    </mime:part>
    </mime:multipartRelated>
    </wsdl:output>
    </wsdl:operation>
    </wsdl:binding>
    </wsdl:definitions>
    Below is my WL WS WSDL*
    <?xml version="1.0" encoding="UTF-8"?>
    <WL5G3N0:definitions
    name="NewWSDLFile"
    targetNamespace="http://www.example.org/NewWSDLFile/"
    xmlns:WL5G3N5="http://schemas.xmlsoap.org/wsdl/mime/"
    xmlns:WL5G3N4="http://schemas.xmlsoap.org/wsdl/soap/"
    xmlns:WL5G3N3="http://www.example.org/NewWSDLFile/"
    xmlns:WL5G3N2="java:com.rogers.service"
    xmlns:WL5G3N0="http://schemas.xmlsoap.org/wsdl/"
    xmlns:WL5G3N1="http://www.w3.org/2001/XMLSchema"
    >
    <WL5G3N0:types>
    <xsd:schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="java:com.rogers.service"
    xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:s="java:com.rogers.service"
    xmlns:s0="http://schemas.xmlsoap.org/wsdl/" xmlns:s1="http://www.w3.org/2001/XMLSchema"
    xmlns:s2="java:com.rogers.service" xmlns:s3="http://www.example.org/NewWSDLFile/"
    xmlns:s4="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:s5="http://schemas.xmlsoap.org/wsdl/mime/"
    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://www.example.org/NewWSDLFile/"
    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <xsd:complexType name="GetAttachmentPDF">
    <xsd:sequence>
    <xsd:element minOccurs="0" name="Pdf" nillable="false" type="xs:base64Binary"/>
    </xsd:sequence>
    </xsd:complexType>
    <xsd:complexType name="GetAttachmentResult">
    <xsd:sequence>
    <xsd:element minOccurs="1" name="Message" nillable="true" type="xs:string"/>
    </xsd:sequence>
    </xsd:complexType>
    </xsd:schema>
    </WL5G3N0:types>
    <WL5G3N0:message name="NewOperationRequest">
    <WL5G3N0:part name="GetAttachment" type="WL5G3N1:string"/>
    </WL5G3N0:message>
    <WL5G3N0:message name="NewOperationResponse">
    <WL5G3N0:part name="NewOperationResponse" type="WL5G3N2:GetAttachmentResult"/>
    <WL5G3N0:part name="attachment" type="WL5G3N2:GetAttachmentPDF"/>
    </WL5G3N0:message>
    <WL5G3N0:portType name="NewWSDLFile">
    <WL5G3N0:operation name="NewOperation">
    <WL5G3N0:input message="WL5G3N3:NewOperationRequest"/>
    <WL5G3N0:output message="WL5G3N3:NewOperationResponse"/>
    </WL5G3N0:operation>
    </WL5G3N0:portType>
    <WL5G3N0:binding name="NewWSDLFileSOAP" type="WL5G3N3:NewWSDLFile">
    <WL5G3N4:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
    <WL5G3N0:operation name="NewOperation">
    <WL5G3N4:operation soapAction="http://www.example.org/NewWSDLFile/NewOperation"/>
    <WL5G3N0:input>
    <WL5G3N4:body use="literal" namespace="http://www.example.org/NewWSDLFile/"/>
    </WL5G3N0:input>
    <WL5G3N0:output>
    <WL5G3N5:multipartRelated>
    <WL5G3N5:part>
    <WL5G3N4:body use="literal" namespace="http://www.example.org/NewWSDLFile/"/>
    </WL5G3N5:part>
    <WL5G3N5:part>
    <WL5G3N5:content part="attachment" type="application/pdf"/>
    </WL5G3N5:part>
    </WL5G3N5:multipartRelated>
    </WL5G3N0:output>
    </WL5G3N0:operation>
    </WL5G3N0:binding>
    <WL5G3N0:service name="NewWSDLFile">
    <WL5G3N0:port name="NewWSDLFileSOAP" binding="WL5G3N3:NewWSDLFileSOAP">
    <WL5G3N4:address location="http://localhost:7001/something/NewWSDLFileImpl"/>
    </WL5G3N0:port>
    </WL5G3N0:service>
    </WL5G3N0:definitions>
    I refered the below link:
    http://docs.oracle.com/cd/B14099_19/integrate.1012/b14448/manipdoc.htm.
    4.16.1.1 WSDL File Contents
    They are using ra:writeBinaryToFile() and ora:ReadBinaryFromFile(). I couldnt get a proper sample to understand the use of these functions.
    Please advise.
    Regards
    Ipsita

  • Oracle ESB 10g : Blank namespace in the SOAP Response from DB adapter

    Hi All,
    I am currently working on a ESB project to route input XML file as a parameter to a DB Function.
    This Function has a input parameter of type XMLTYPE and returns VARCHAR2 values.
    I have configured the DB Adapter to invoke this function and return the result as a SOAP response.
    The WSDL of DB adapter contains XML_DATA as input and XMLMAIN as the output result.
    The ESB project works fine as expected. But in the result from DB adapter contains a blank namespace [xmlns=""] for the XMLMAIN element .
    I hereby attach the output XML.
    Please help how to remove this blank namespace from the output.
    We are using SOA Suite 10g 10.1.3.5
    <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <env:Header/>
    <env:Body xmlns="http://xmlns.oracle.com/pcbpel/adapter/db/XXWEB/XMLMISCRCPTINSERTPKG/XMLMAIN/">
    <OutputParameters xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <XMLMAIN xmlns="">100</XMLMAIN>
    </OutputParameters>
    </env:Body>
    </env:Envelope>
    Thanks and Regards,
    Justin Michael Raj

    well..the problem is..the db adapter has it's own transaction..so the transactions fails or not.
    you're just not capable of checking if the transaction went ok...and return 'process completed ok' or when the transaction failed for some reason return 'the process aborted'.
    So you just need some extra steps for it to be able to return some response-message

  • SOAP Response XSLT Transformation Error

    I am doing a webservice call and trying to transform the SOAP Response using XSLT.
    I am getting the following error when the command CALL TRANSFORMATION Executes.
    The element abap was expected for the XML-ABAP transformation
    Please let me know if anyone ave received this error before and how did you solve it.
    Regards
    Sudhir Atluru

    Hi Petra
    for this Error  com.sap.aii.af.ra.ms.api.ConfigException
    check this Link
    experts needed! com.sap.aii.af.ra.ms.api.ConfigException
    http://help.sap.com/saphelp_nw04s/helpdata/en/78/20244134a56532e10000000a1550b0/frameset.htm
    also refer SAP Note 978606
    Regards
    Abhishek

  • How to deal with complex SOAP responses when calling web services ???

    Hi all,
    I have an issue when calling a web service that returns a complex
    SOAP response message. With simple responses (e. g. array of strings) it
    worked.
    I created the PDF as an Interactive form with Livecycle Designer 8.2.
    The Javascript looks like this:
    var cURL = "http://blabla";
    var cTestString = "too";
    SOAP.wireDump=true;
    var response = SOAP.request(
         cURL: cURL,
         oRequest: {
              "http://blabla.com/:complete" : {
              arg0: cTestString
              cAction: "http://bla.com:50000/"
    var resp = response["http://blabla.com:serviceResponse"];
    console.println("lenght:"+resp.length);
    var myns = "http://blabla.com/namespace";
    for (var nItem in resp.return)
      console.println("" + nItem + " " + resp.return[nItem] );
         for (var ConceptView in resp.return[nItem])
           console.println("  "+resp.return[nItem].length);
           console.println("  "+ConceptView+" "+resp.return[nItem][ConceptView] );
           if (ConceptView == myns + ":Response")
              for (var item2 in resp.return[nItem][ConceptView]){
                  console.println("    "+item2+" "+resp.return[nItem][ConceptView][item2] );
    I call the service and when I realized that I do not find out the type of the object returned, I used the nested for-in-loops to iterate through it. But it seems that there is just one item in the Javascript object returned, although the SOAP message clearly shows that there are more than one item.
    Can you help me?
    One key problem when analyzing this issue is that I do not know at all
    the Javascript type of response. We suspected it might be an array, but it is not
    because the method .length returns "undefined". It would already be
    helpful to know at least the type of this object and to know callable
    methods and so on ...
    Best regards
    Christoph
    P.S. As mentioned I used Livecycle Designer 8.2 and displayed and
    debugged the document using Acrobat 9.

    Christoph,
    Firstly LiveCycle Designer 8.2 is still not supported to develop forms as per my knowledge. The latest version compatible for SAP Interactive Forms is ALD 8.0.
    There is a difference between Acrobat based forms and LiveCycle forms and based on your coding it looks to me  that you are trying to create a LiveCycle based form with coding of Acrobat which is not supported in LiveCycle Desginer, which is why you may be getting the error.
    I hope that does not confuse you, so may check this [link|http://www.acrobatusers.com/articles/2006/08/designer_or_forms/index.php] for some clear information on what point I was trying to make.
    Chintan

  • SOAP Response change from http 200 to http 204

    Hello
    I must change for a application, that call a webservice on the pi, change the
    SOAP Response from HTTP 200 OK to HTTP 204. I think that must chnage on the SOAP Adapter and wei can't change in the messages or mapping. Also wit a Fault Messages is this not runnig.
    What is with BPM, have any body do somthing with that.
    Regards Tom

    Hello Stefan
    This thrid Application need this response. We cann't change this. We spaek with this product manager, but he want change this. He want this when the interface is async, that application now no conntent come back.
    Regards Tom

  • Soap response Error when processing XML CF.

    Hello,
    I have problems with soap response and wondered if you could give some advice.
    Every time I send my message via soap I get the following error:
    com.sap.aii.af.ra.ms.api.RecoverableException: SOAP: response message contains an error XIAdapter/HTTP/ADAPTER.HTTP_EXCEPTION - HTTP 500 Error when processing XML CF.
    Is it possible that the communication is aborted and  my response message mapping is never started?
    (Additional info: I tried to create an integration process and am not able to evaluate the response.)
    Thanks a lot for your help.
    Regards,
    Julia

    hi,
    do you see any more error details in :
    http://xiserver:port/MessagingSystem/monitor
    did you check logs in visual admin ?
    >>>>Is it possible that the communication is aborted and my response message mapping is never started?
    yes - if the response is not ok the mapping may not be started
    Regards,
    michal
    <a href="/people/michal.krawczyk2/blog/2005/06/28/xipi-faq-frequently-asked-questions"><b>XI / PI FAQ - Frequently Asked Questions</b></a>

  • SOAP Response with WS-Addressing elements

    Hi All,
       I have an issue with the response message of SOAP - PI - RFC Sync scenario.
    In the request of the SOAP message, we receive following header(WS-Addressing) Elements in the SOAP Header part of the envelope.
    <wsa:Action wsu:Id="wssecurity_signature_id_281" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
            http://partnername/interfacedetails
    </wsa:Action>
    <wsa:MessageID wsu:Id="wssecurity_signature_id_285" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
    uuid:463BF10F-0126-4000-E000-604DAC152914
    </wsa:MessageID>
    <wsa:RelatesTo wsu:Id="wssecurity_signature_id_283" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
    urn:uuid:02875597AE9A49ABAB1229340545618
    </wsa:RelatesTo>
    Now the issue is the, our interface partner(who actually sends the SOAP Request), wants SOAP response containing the above WS-Addressing elements.
    Is it possible with SAP PI?. Can anybody help me with this.
    By the way, our interface( SOAP-PI-RFC Sync ) working fine. We just need these elements inside SOAP Response.
    Thanks in advance.
    Kind Regards,
    Prasad.

    Hi Prasad,
    I am not sure if the problem is solved.
    I guess you are talking about a scenario in which a non-SAP consumer sends a request to SAP ABAP provider. The consumer requests the enabling of WS-Addressing. The answer nothing is required to configure the ABAP provider, which will send back a SOAP response either with WS-A or without depending if WS-A is sent by the consumer or not. That might be the case that you can see these headers with the SXMB_MONI.
    Hope this helps.
    Regards,
    Wei

  • Soap response with envelope

    Hi
    My PI server is able to make a soap call to the SFDC ( webservice ) ...however the response that is received within PI
    has a SOAP envelope...and hence the response mapping is going in error....because the source data type in response mapping doesnot match with the soap response ( with envelope )
      <?xml version="1.0" encoding="UTF-8" ?>
    - <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns="urn:enterprise.soap.sforce.com">
    - <soapenv:Body>
    - <upsertResponse>
    - <result>
      <created>false</created>
      <id>a0UT0000004aeaMMAQ</id>
      <success>true</success>
      </result>
      </upsertResponse>
      </soapenv:Body>
      </soapenv:Envelope>
    how do i handle this

    Hi,
    I think there is an option while configuration of SOAP adapter, where you can define, not to keep SOAP envelop. Please check the option Conversion Parameters\Do Not Use SOAP Envelope and set it as per your requirement. That might solve the problem. Here is the link which can be helpful
    http://help.sap.com/saphelp_nw04/helpdata/en/29/5bd93f130f9215e10000000a155106/content.htm
    Alternatively you need a java mapping or XSLT mapping to remove the envelop.
    Here is the java mapping code to remove SOAP envelop
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.util.Map;
    import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.DocumentBuilderFactory;
    import javax.xml.transform.Transformer;
    import javax.xml.transform.TransformerFactory;
    import javax.xml.transform.dom.DOMSource;
    import javax.xml.transform.stream.StreamResult;
    import org.w3c.dom.Document;
    import org.w3c.dom.Element;
    import org.w3c.dom.Node;
    import org.w3c.dom.NodeList;
    import com.sap.aii.mapping.api.StreamTransformation;
    import com.sap.aii.mapping.api.StreamTransformationException;
    public class RemoveSoapEnvelop implements StreamTransformation{
    public void execute(InputStream in, OutputStream out)
    throws StreamTransformationException {
    try
         DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
         DocumentBuilder builderel=factory.newDocumentBuilder();
         /*input document in form of XML*/
         Document docIn=builderel.parse(in);
         /*document after parsing*/
         Document docOut=builderel.newDocument();
         TransformerFactory tf=TransformerFactory.newInstance();
         Transformer transform=tf.newTransformer();
         Element root;
         Node p;
         NodeList l;
         int mm,n1;
         //if you need to include namespace use next two lines
         //root=docOut.createElement("ns0:upsertResponse");
         //root.setAttribute("xmlns:ns0","http://connectsystems.be/MAINFR/AccDocument");
         root=docOut.createElement("upsertResponse");
         p=docIn.getElementsByTagName("upsertResponse").item(0);
         l=p.getChildNodes();
         n1=l.getLength();
         for(mm=0;mm<n1;++mm)
              Node temp=docOut.importNode(l.item(mm),true);
              root.appendChild(temp);
         docOut.appendChild(root);
         transform.transform(new DOMSource(docOut), new StreamResult(out));
    catch(Exception e)
         e.printStackTrace();
    public void setParameter(Map arg0) {
    public static void main(String[] args) {
    try{
         RemoveSoapEnvelop genFormat=new RemoveSoapEnvelop();
         FileInputStream in=new FileInputStream("C:\\Apps\\my folder\\sdn\\sd2.xml");
         FileOutputStream out=new FileOutputStream("C:\\Apps\\my folder\\sdn\\removedEnvelop.xml");
         genFormat.execute(in,out);
    catch(Exception e)
    e.printStackTrace();
    input xml file sd2.xml
      <?xml version="1.0" encoding="UTF-8" ?>
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns="urn:enterprise.soap.sforce.com">
    <soapenv:Body>
    <upsertResponse>
    <result>
      <created>false</created>
      <id>a0UT0000004aeaMMAQ</id>
      <success>true</success>
      </result>
      </upsertResponse>
      </soapenv:Body>
      </soapenv:Envelope>
    Here is the output xml removedEnvelop.xml
      <?xml version="1.0" encoding="UTF-8" ?>
    <upsertResponse>
    <result>
      <created>false</created>
      <id>a0UT0000004aeaMMAQ</id>
      <success>true</success>
      </result>
      </upsertResponse>
    Helpful articles on java mapping for PI 7.1
    http://wiki.sdn.sap.com/wiki/display/XI/SampleJAVAMappingcodeusingPI7.1+API
    You can also try following XSLT mapping to get the same output as java mapping
    <xsl:stylesheet version="1.0"
    xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    exclude-result-prefixes="SOAP-ENV">
    <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" />
    <xsl:template match="/">
    <xsl:for-each select="SOAP-ENV:Envelope/SOAP-ENV:Body">     
    <upsertResponse>
    <result>
         <xsl:variable name="var" select="normalize-space(.)"></xsl:variable>
         <xsl:variable name="tokenizedSample" select="tokenize($var,' ')"/>
        <created><xsl:value-of select="$tokenizedSample[1]"/></created>
        <id><xsl:value-of select="$tokenizedSample[2]"/></id>
        <success><xsl:value-of select="$tokenizedSample[3]"/></success>
    </result>
    </upsertResponse>
    </xsl:for-each>
    </xsl:template>
    </xsl:stylesheet>
    Other than these please refer to following links for further examples on the topic
    Remove SOAP-ENV tags from xml RECEIVER RESPONSE payload (XSL needed?)
    Remove SOAP Envelop using XSLT  mapping.
    Hope this helps your cause.
    regards
    Anupam

  • SOAP Response not return when exception is thrown

    Hi,
    Wonder if anyone had encountered the same issue as me with SOAP Response.
    Adobe LiveCycle ES2 (v9.0.0.2)
    I had a process which is triggered using SOAP Endpoint.
    Whenever there is exception in the process the SOAP Response will have an error, instead of returning the default SOAP Fault with the exception stack trace. Nothing is returned.
    I was testing using soapUI when I encountered this issue, to widen the test I used the 'Service Operation - Invoke Web Service'. An error occurred when using the build in test function.
    'Empty content of web service response was found due to unknown reason'
    This issue is definely not happening in the previous version LC v8.2.
    Feel weird that not one reported about this issue or there is something wrong with my installation/configuration?
    Ryan

    Hi,
    Even we encountered similar issue.
    Please let us know if there is a fix/work around for this problem.
    Regards,
    Srikanth

  • SOAP Response error:

    HI Experts,
    Here my scenario is RFC PI SOAP synchronous interface. While sending the message from PI receiver system is expeting  SAOP envelop I added this envelop with xslt mapping. Even response message is coming with SOAP envelop I removed with Xslt.. now I am getting below error message in response:
    *Here i am not using any authoentication. it is not required..*
    In SXMB_moni:
      <?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/HTTP/ADAPTER.HTTP_EXCEPTION - HTTP 401 Unauthorized</SAP:AdditionalText>
      <SAP:Stack />
      <SAP:Retry>M</SAP:Retry>
      </SAP:Error>
    In communication channel:
    Description
    23.11.2011 14:45:11.557     Information     The message was successfully received by the messaging system. Protocol: XI URL: http://r3vidci.got.volvo.net:52000/MessagingSystem/receive/AFW/XI Credential (User): PIISUSER
    23.11.2011 14:45:11.564     Information     Using connection SOAP_http://sap.com/xi/XI/System. Trying to put the message into the request queue.
    23.11.2011 14:45:11.568     Information     Message successfully put into the queue.
    23.11.2011 14:45:11.572     Information     The message was successfully retrieved from the request queue.
    23.11.2011 14:45:11.573     Information     The message status was set to DLNG.
    23.11.2011 14:45:11.577     Information     Delivering to channel: SOAP_Receiver_BOSS_VID
    23.11.2011 14:45:11.577     Information     MP: entering1
    23.11.2011 14:45:11.579     Information     MP: processing local module localejbs/AF_Modules/MessageTransformBean
    23.11.2011 14:45:11.599     Information     Transform: using Transform.Class:  $identity
    23.11.2011 14:45:11.634     Information     Transform: transforming the payload ...
    23.11.2011 14:45:11.637     Information     Transform: successfully transformed
    23.11.2011 14:45:11.638     Information     MP: processing local module localejbs/sap.com/com.sap.aii.af.soapadapter/XISOAPAdapterBean
    23.11.2011 14:45:11.676     Information     SOAP: request message entering the adapter with user J2EE_GUEST
    23.11.2011 14:45:11.695     Information     SOAP: completed the processing
    23.11.2011 14:45:11.696     Information     SOAP: continuing to response message bf2ba0ac-15e1-11e1-cc01-00000c601d4e
    23.11.2011 14:45:11.696     Error     SOAP: response message contains an error XIAdapter/HTTP/ADAPTER.HTTP_EXCEPTION - HTTP 401 Unauthorized
    23.11.2011 14:45:11.698     Error     MP: exception caught with cause com.sap.engine.interfaces.messaging.api.exception.MessagingException: SOAP: response message contains an error XIAdapter/HTTP/ADAPTER.HTTP_EXCEPTION - HTTP 401 Unauthorized
    23.11.2011 14:45:11.699     Error     Adapter Framework caught exception: SOAP: response message contains an error XIAdapter/HTTP/ADAPTER.HTTP_EXCEPTION - HTTP 401 Unauthorized
    23.11.2011 14:45:11.700     Error     Delivering the message to the application using connection SOAP_http://sap.com/xi/XI/System failed, due to: com.sap.engine.interfaces.messaging.api.exception.MessagingException: SOAP: response message contains an error XIAdapter/HTTP/ADAPTER.HTTP_EXCEPTION - HTTP 401 Unauthorized. Setting message to status failed.23.11.2011 14:45:11.704     Error     The message status was set to FAIL.

    Hi Rajesh,
    I tried with XMLSPY.. i am able to send and get the responce witout any authentication.. I gone through vijay's blog... but i din't find any solution in that..
    one more thing.. here inteface is sending from SAP portal system > SAP ECC> SAPI--> webservice(Microsoft system). whenever Portal team sending the message to SAP they are getting below error"
    call to messaging system failed: com.sap.engine.interfaces.messaging.api.exception.MessagingException: XIAdapterFramework:GENER
    In PI I am getting below error:
    .sap.engine.interfaces.messaging.api.exception.MessagingException: SOAP: response message contains an error XIAdapter/HTTP/ADAPTER.HTTP_EXCEPTION - HTTP 401 Unauthorized

  • Synchronous RFC -- SOAP Scenario: problem with SOAP Response/Fault Mapping

    Hi,
    I've a synchronous RFC --> PI --> SOAP Scenario. The problem is that the message structure of the sending RFC doesn't match the Webservice Structure.
    The (SAP standard) RFC has just a Request / Response message structure. Part of the Response Message structure is a exception structure.
    The Webservice has a Request / Response message structure and in case of an error I get a SOAP:Fault.
    Problem now is that I cannot configure that scenario without usage of BPM as I will have to map SOAP:Response or SOAP:Fault to the RFC Response structure.
    Has anybody another idea to do that synchronous scenario (with usage of message mapping) without BPM?
    BR
    Holger

    1)
    you maus define 3 mapping.
    1)request
    2)response
    3)Fault
    in Interface mapping define at response boths (2-3) mapping. its clear??
    2)
    otherwise sometjhing is not clear, why do you want fault?? why dont you  get only response message. we implement this kind of response:
    <response_MT>
    <ID> (error ID)
    <system> (target system) 
    <error> (Error Description)
    </response>
    by this way fault message is not needed. but if you must have it just follow the top of message else, propose second.
    Thanks
    Rodrigo
    Thanks
    Rodrigo
    Edited by: Rodrigo Pertierra on Feb 25, 2008 11:52 AM

Maybe you are looking for