WSAddressing MessageID soapenv:mustUnderstand="0"

Hi,
I try to invoke an async WebService from BPEL.
Then I monitor the SOAP request I see the SOAP header shown below.The attribute soapenv:mustUnderstand is false for element MessageID and ReplyTo. According to the SOAP spec my WebService must understand these elements, because MessageID and ReplyTo contains the informations for the callback.
In the SOAP request from BPEL the mustUnderstand attribute is false, so my JBossWS ServerEngine remove these header informations, before the WSAReceiveHandler can read them.
10:16:15,906 DEBUG [SOAPElementAxisImpl] Remove child node: ns1:MessageID
10:16:15,916 DEBUG [SOAPElementAxisImpl] Remove child node: ns3:ReplyTo
I like to know there I can change the value of the mustUnderstand attribute, so that my ServerEngine have to understand the message?
Part of the SOAP request header:
<ns1:MessageID ns2:rootId="304" ns2:parentId="304"
ns2:priority="3"
soapenv:actor="http://schemas.xmlsoap.org/soap/actor/next"
soapenv:mustUnderstand="0"
xmlns:ns1="http://schemas.xmlsoap.org/ws/2003/03/addressing"
xmlns:ns2="http://schemas.oracle.com/bpel">
bpel://localhost/default/TestAsncBPEL~1.0/304-BpInv0-BpSeq0.3-3
</ns1:MessageID>
<ns3:ReplyTo
soapenv:actor="http://schemas.xmlsoap.org/soap/actor/next"
soapenv:mustUnderstand="0" xsi:type="ns3:EndpointReferenceType"
xmlns:ns3="http://schemas.xmlsoap.org/ws/2003/03/addressing">
<ns3:Address xsi:type="xsd:string">
http://test:9700/orabpel/default/TestAsncBPEL/1.0/TestSession/TestSessionServiceIFRequester
</ns3:Address>
<ns3:ReferenceProperties xsi:nil="true" />
<ns3:PortType xsi:type="xsd:QName"
xmlns:ns4="http://test.de/wsdl">
ns4:TestSessionCallbackIF
</ns3:PortType>
<ns3:ServiceName xsi:type="xsd:QName"
xmlns:ns5="http://test.de/wsdl">
ns5:TestSessionService
</ns3:ServiceName>
</ns3:ReplyTo>

Hi !
I am from the OraBEPL team.
SOAP spec says:
"A env:mustUnderstand value of 'true' means that the SOAP node must process the header with the semantics described in that header's specification, or else generate a SOAP fault."
Seems like JBoss has a problem. If it doesn't bother to process the header, it should not remove the header before it can be processed by the target handler.
I am not aware there is way to change that to true. But in the new release, we will not sending them over at all. How is that gonna affect you ?
regards,
- glenn

Similar Messages

  • How to remove soapenv:actor and soapenv:mustUnderstand

    Hi,
    I need help with removing actor and mustUnderstand from SoapHeader. It will be great if any one can help me with this.
    I build a SOAP Header using JAX-RPC
    SOAPMessageContext soapMsgCtx = (SOAPMessageContext)context;
    SOAPMessage soapMsg = soapMsgCtx.getMessage();
    SOAPPart soapPart = soapMsg.getSOAPPart();
    SOAPEnvelope soapEnv = soapPart.getEnvelope();
    SOAPHeader soapHeader = soapEnv.getHeader();
    Name userCredTag = soapEnv.createName("PPSoapHeader","", URI);
    SOAPHeaderElement hdrEl = soapHeader.addHeaderElement(userCredTag);
    This prints -
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <soapenv:Header>
    <PPSoapHeader soapenv:actor="http://schemas.xmlsoap.org/soap/actor/next" soapenv:mustUnderstand="0" xmlns="http://schemas.microsoft......."/>
    I want to get Rid of "soapenv:actor" and soapenv:mustUnderstand="0"
    How can I do this.
    Thanks
    Sameer

    I only ask because the spec specifies that mustUnderstand=0 must be accepted by a SOAP node:
    http://www.w3.org/TR/2003/REC-soap12-part1-20030624/#soapmu
    Unfortunately, I can't help you with your problem, I don't use JWSDP, and looking at the SAAJ API it's not immediately obvious how to remove those attributes.

  • Axis receiver - WS-SECURITY problem

    Hi all,
    we need consume 3th party web service through AXIS adapter. This communication must be secured by certificate. We have imported certificate into keystore. Therefore there are needed WS-addressing and WS-security for SOAP request. We need use UsernameToken Timestamp and next sign following element in SOAP envelope: s:Body, o:UsernameToken, u:Timestamp, a:Action, a:ReplyTo, a:MessageID, a:To. Now we are able add UsernameToken, Timestamp and action addresing by adding modules in AXIS adapter. But we have problem sign needed elements.
    Now we have following SOAP request
    <soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing">
      <soapenv:Header>
        <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" soapenv:mustUnderstand="true">
          <wsu:Timestamp xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="Timestamp-24">
            <wsu:Created>2010-12-23T16:27:30.889Z</wsu:Created>
            <wsu:Expires>2010-12-23T16:32:30.889Z</wsu:Expires>
          </wsu:Timestamp>
          <wsse:UsernameToken xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="UsernameToken-23">
            <wsse:Username>user</wsse:Username>
            <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">Apassword</wsse:Password>
          </wsse:UsernameToken>
        </wsse:Security>
        <wsa:MessageID soapenv:mustUnderstand="false">uuid:8a0e7b40-0eb1-11e0-97ac-8e95546643d1</wsa:MessageID>
        <wsa:To soapenv:mustUnderstand="false">http://www.test.iszo.sk/interfaces/MeasuredValues/Service.svc</wsa:To>
        <wsa:Action soapenv:mustUnderstand="false">http://sfera.sk/ws/xmtrade/iszo/measuredvalues/services/2008/11/01/MeasuredValuesContract/Upload</wsa:Action>
        <wsa:From xmlns="http://schemas.xmlsoap.org/ws/2004/08/addressing" soapenv:mustUnderstand="false">
          <wsa:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:Address>
        </wsa:From>
      </soapenv:Header>
      <soapenv:Body>
    But we need also add Security token to SOAP request to sign needed elements (body, UsernameToken, Timestamp, etc.) as follow:
    <soap:Envelope xmlns:ns="http://sfera.sk/ws/xmtrade/iszo/measuredvalues/services/2008/11/01" xmlns:ns1="http://sfera.sk/ws/xmtrade/iszo/common/types/espv1r1/2008/11/01" xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
      <soap:Header xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing">
        <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
          <wsse:BinarySecurityToken xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" wsu:Id="CertId-17206535">MIIEgDCCA .... FJSC+w==</wsse:BinarySecurityToken>
          <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#" Id="Signature-12725597">
            <ds:SignedInfo>
              <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
              <ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
              <ds:Reference URI="#UsernameToken-23996530">
                <ds:Transforms>
                  <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
                </ds:Transforms>
                <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
                <ds:DigestValue>TFzBLZTL5JrDmMJFc2FyJZnVJ3Q=</ds:DigestValue>
              </ds:Reference>
              <ds:Reference URI="#Timestamp-12575106">
                <ds:Transforms>
                  <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
                </ds:Transforms>
                <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
                <ds:DigestValue>7/RY2vugAOvUkBK8PH8zELTUCPI=</ds:DigestValue>
              </ds:Reference>
              <ds:Reference URI="#id-21926836">
                <ds:Transforms>
    Have anybody some idea or example to resolution this issue? Thanks a lot for your answers.
    Regards, Zolo

    Hello Zolo, I hope you are doing wellu2026
    Iu2019m sending you some info that might help you with this matter.
    1)
    Please check:
    Advanced usage questions
    1.     How can I enable the WS-Security features?
    Of note below:
    1039369 - FAQ XI Axis Adapter
    2)
    Please test the SSL connection with "https://<servername>:<SSL port>".
    If SSL is configured correctly, then the SAP J2EE Engineu2019s start page appears in your Web browser.
    There shouldnu2019t be any "Security Alert" or warnings related with security.
    3)
    Please check the links below to gather further info in how to set up this scenario with certificates.
    (The below links are for 7.1 systems, if you are on 7.0, just change /saphelp_nwpi71/ by /saphelp_nw70/).
    Axis Framework in the SOAP adapter
    http://help.sap.com/saphelp_nwpi71/helpdata/EN/45/a4f8bbdfdc0d36e10000000a114a6b/frameset.htm
    Message-Level Security
    http://help.sap.com/saphelp_nwpi71/helpdata/EN/a8/882a40ce93185de1000000
    0a1550b0/frameset.htm
    Security Configuration at Message Level
    http://help.sap.com/saphelp_nwpi71/helpdata/EN/ea/c91141e109ef6fe1000000
    0a1550b0/frameset.htm
    HTTPS Configuration for Messaging
    http://help.sap.com/saphelp_nwpi71/helpdata/EN/e8/1f1041a0f6f16fe1000000
    0a1550b0/frameset.htm
    4) go to:
    http://host:port/XIAxisAdapter/MessageServlet
    The page will display the versions of the deployed components, whether the required libraries are also deployed and if Axis adapter was successfully deployed in the system.
    For more specific scenarios, e.g., WS-Security, WS-ReliableMessaging, it is also necessary to have the relevant optional components deployed. The page should show status OK when all the required components are available and otherwise status Error.
    Cheers,
    Jorge Eidelwein

  • The asynchronous invoke not work!!!

    SOAP engine: Axis 1.2 RC 1
    Example: LoanFlowInvoker
    Platform: Windows
    Data Store: Db 10g
    BPEL: Oracle BPEL Server version 2.0.11
    Build: 2004.10.19.16.17
    The Soap Request Message generated as result of invoke operation is:
    POST /orabpel/default/LoanFlow HTTP/1.0
    Content-Type: text/xml; charset=utf-8
    Accept: application/soap+xml, application/dime, multipart/related, text/*
    User-Agent: Axis/1.2RC1
    Host: 127.0.0.1
    Cache-Control: no-cache
    Pragma: no-cache
    SOAPAction: "initiate"
    Content-Length: 756
    <soapenv:Envelope
    xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <soapenv:Header>
    <nsl:MessageID soapenv:mustUnderstand="0" xmlns:nsl="http://schemas.xmlsoap.org/ws/2003/03/addressing">1234567</nsl:MessageID>
    <nsl:ReplyTo soapenv:mustUnderstand="0" xmlns:nsl="http://schemas.xmlsoap.org/ws/2003/03/addressing">
    <nsl:Address>http://localhost:8080/axis/services/LoanFlowClientCallback</nsl:Address>
    <nsl:PortType>LoanFlowCallback</nsl:PortType>
    <nsl:ServiceName>LoanFlowCallbackService</nsl:ServiceName>
    /nsl:ReplyTo>
    </soapenv:Header>
    <soapenv:Body>
    <ns1:loanApplication
    xsi:type="ns1:LoanApplicationType"
    xmlns=""
    xmlns:ns1="http://www.autoloan.com/ns/autoloan">
    <ns1:SSN xsi:type="xsd:string">123-12-1234</ns1:SSN>
    <ns1:carModel xsi:type="xsd:string">BMW</ns1:carModel>
    <ns1:carYear xsi:type="xsd:string">2003</ns1:carYear>
    <ns1:creditRating xsi:type="xsd:int">0</ns1:creditRating>
    <ns1:customerName xsi:type="xsd:string">Dave</ns1:customerName>
    <ns1:email xsi:type="xsd:string">[email protected]</ns1:email>
    <ns1:loanAmount xsi:type="xsd:double">10000.0</ns1:loanAmount>
    </ns1:loanApplication>
    </soapenv:Body>
    </soapenv:Envelope>
    The Server Response is a generic soap fault:
    HTTP/1.1 500 Internal Server Error
    Date: Tue, 16 Nov 2004 12:57:03 GMT
    Server: Oracle Application Server Containers for J2EE 10g (10.1.2.0.0)
    Connection: Close
    Content-Type: text/xml; charset=utf-8
    <?xml version="1.0" encoding="UTF-8"?>
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <soapenv:Body>
    <soapenv:Fault>
    <faultcode xmlns:ns1="http://xml.apache.org/axis/">ns1:Server.generalException</faultcode>
    <faultstring></faultstring>
    </soapenv:Fault>
    </soapenv:Body>
    </soapenv:Envelope>
    If disable the WS-Addressing header the invokation work perfectly but lack the asynchronous behaviour.

    Hi,
    I am also trying out the LoanFlowInvoker example.
    I'm able to run it using BPELConsole but not from LoanFlowInvoker.java. It seems that the java code is not able to invoke the oracle BP!
    I've attached the code segment pertaining to my example
    static
    String THIS_NAMESPACE = "http://acm.org/samples";
    String PARAMETER_NAMESPACE = "http://www.autoloan.com/ns/autoloan";
    SERVICE_NAME = new QName(THIS_NAMESPACE,"Async");
    PORT_TYPE = new QName(THIS_NAMESPACE,"Async");
    OPERATION_NAME = new QName(THIS_NAMESPACE,"AsyncRequestMessage");
    SOAP_ACTION = "initiate";
    STYLE = "document";
    SERVICE_PARAMETERS = new Parameter[1];
    SERVICE_PARAMETERS[0] = new Parameter("loanApplication" ,
    new QName(PARAMETER_NAMESPACE, "LoanApplicationType"),
    com.autoloan.www.ns.autoloan.LoanApplication.class
    Pls advice if there is anything to look out for other than the segment of codes needed to change.
    Thanks in advance.
    --Anthony                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   

  • Async service call bpel

    I have process where add <recive> activite, witch wait while my service call it.
    But when i try to call it, using axis i have error!?
    how can i solve that?

    This from axis (invoking throw command line)
    AxisFault
    faultCode: {http://xml.apache.org/axis/}Server.generalException
    faultSubcode:
    faultString:
    faultActor:
    faultNode:
    faultDetail:
         {http://xml.apache.org/axis/}stackTrace:
         at org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder.java:223)
         at org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.java:130)
         at org.apache.axis.encoding.DeserializationContextImpl.endElement(DeserializationContextImpl.java:1060)
         at org.apache.crimson.parser.Parser2.maybeElement(Parser2.java:1675)
         at org.apache.crimson.parser.Parser2.content(Parser2.java:1926)
         at org.apache.crimson.parser.Parser2.maybeElement(Parser2.java:1654)
         at org.apache.crimson.parser.Parser2.content(Parser2.java:1926)
         at org.apache.crimson.parser.Parser2.maybeElement(Parser2.java:1654)
         at org.apache.crimson.parser.Parser2.parseInternal(Parser2.java:634)
         at org.apache.crimson.parser.Parser2.parse(Parser2.java:333)
         at org.apache.crimson.parser.XMLReaderImpl.parse(XMLReaderImpl.java:448)
         at javax.xml.parsers.SAXParser.parse(SAXParser.java:345)
         at org.apache.axis.encoding.DeserializationContextImpl.parse(DeserializationContextImpl.java:218)
         at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:646)
         at org.apache.axis.Message.getSOAPEnvelope(Message.java:424)
         at org.apache.axis.transport.http.HTTPSender.readFromSocket(HTTPSender.java:721)
         at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:94)
         at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
         at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
         at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
         at org.apache.axis.client.AxisClient.invoke(AxisClient.java:147)
         at org.apache.axis.client.Call.invokeEngine(Call.java:2735)
         at org.apache.axis.client.Call.invoke(Call.java:2718)
         at org.apache.axis.client.Call.invoke(Call.java:2394)
         at org.apache.axis.client.Call.invoke(Call.java:2317)
         at org.apache.axis.client.Call.invoke(Call.java:1774)
         at ocsy.com.client.main(client.java:68)
         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
         at java.lang.reflect.Method.invoke(Method.java:324)
         at com.intellij.rt.execution.application.AppMain.main(AppMain.java:78)
         {http://xml.apache.org/axis/}hostname:osipov.int.ifirst.ru
         at org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder.java:223)
         at org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.java:130)
         at org.apache.axis.encoding.DeserializationContextImpl.endElement(DeserializationContextImpl.java:1060)
         at org.apache.crimson.parser.Parser2.maybeElement(Parser2.java:1675)
         at org.apache.crimson.parser.Parser2.content(Parser2.java:1926)
         at org.apache.crimson.parser.Parser2.maybeElement(Parser2.java:1654)
         at org.apache.crimson.parser.Parser2.content(Parser2.java:1926)
         at org.apache.crimson.parser.Parser2.maybeElement(Parser2.java:1654)
         at org.apache.crimson.parser.Parser2.parseInternal(Parser2.java:634)
         at org.apache.crimson.parser.Parser2.parse(Parser2.java:333)
         at org.apache.crimson.parser.XMLReaderImpl.parse(XMLReaderImpl.java:448)
         at javax.xml.parsers.SAXParser.parse(SAXParser.java:345)
         at org.apache.axis.encoding.DeserializationContextImpl.parse(DeserializationContextImpl.java:218)
         at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:646)
         at org.apache.axis.Message.getSOAPEnvelope(Message.java:424)
         at org.apache.axis.transport.http.HTTPSender.readFromSocket(HTTPSender.java:721)
         at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:94)
         at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
         at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
         at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
         at org.apache.axis.client.AxisClient.invoke(AxisClient.java:147)
         at org.apache.axis.client.Call.invokeEngine(Call.java:2735)
         at org.apache.axis.client.Call.invoke(Call.java:2718)
         at org.apache.axis.client.Call.invoke(Call.java:2394)
         at org.apache.axis.client.Call.invoke(Call.java:2317)
         at org.apache.axis.client.Call.invoke(Call.java:1774)
         at ocsy.com.client.main(client.java:68)
         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
         at java.lang.reflect.Method.invoke(Method.java:324)
         at com.intellij.rt.execution.application.AppMain.main(AppMain.java:78)
    (and this is a tcpmon drawing)
    Request
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing"><soapenv:Header><wsa:MessageID soapenv:mustUnderstand="0"></wsa:MessageID><wsa:To soapenv:mustUnderstand="0">http://192.168.100.152:4444/orabpel/default/Test</wsa:To><wsa:From soapenv:mustUnderstand="0"><Address xmlns="http://schemas.xmlsoap.org/ws/2004/03/addressing">http://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonymous</Address></wsa:From><wsa:ReplyTo soapenv:mustUnderstand="0"><Address xmlns="http://schemas.xmlsoap.org/ws/2004/03/addressing">http://192.168.100.152</Address></wsa:ReplyTo><wsa:FaultTo soapenv:mustUnderstand="0"><Address xmlns="http://schemas.xmlsoap.org/ws/2004/03/addressing">http://192.168.100.152</Address></wsa:FaultTo></soapenv:Header><soapenv:Body><doneProcess xmlns=""><arg0 xsi:type="xsd:string"></arg0></doneProcess></soapenv:Body></soapenv:Envelope>
    Resonse
    HTTP/1.1 500 Internal Server Error
    Date: Tue, 14 Dec 2004 07:35:42 GMT
    Server: Oracle-Application-Server-10g/9.0.4.0.0 Oracle-HTTP-Server
    Cache-Control: private
    Connection: close
    Content-Type: text/xml; charset=utf-8
    <?xml version="1.0" encoding="UTF-8"?>
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <soapenv:Body>
    <soapenv:Fault>
    <faultcode xmlns:ns1="http://xml.apache.org/axis/">ns1:Server.generalException</faultcode>
    <faultstring></faultstring>
    </soapenv:Fault>
    </soapenv:Body>
    </soapenv:Envelope>

  • AXIS Adapter - Remove mustUnderstand attribute

    We are using Axis adapter to insert a custom header into the soap envelope. The adapter automatically inserts the custom header with attribute mustUnderstand="0", but the receiver service raise a validation error since it is not able to recognize the attribute mustUnderstand. Is it possible to avoid the adding of this attribute?
    Thanks,
    Antonello

    Hi,
    You mean that you need the information contained in the XI header.
    I don't think you can directly turn off the mustUnderstand flag of the XI header.
    But it is very straightforward to extract the information you need and put it in another header of your choice.
    In this case, you can just use the HeaderExtractionHandler and HeaderInsertionHandler.
    For example, suppose your XI header looks like
    <sap:Main ...>
    <sap:MessageId>062617a0-b1de-11df-b30e-c0a30a12c821</sap:MessageId>
    <sap:Receiver>
       <sap:Service>Luzon</ns1:Service>
    </sap:Receiver>
    <sap:Interface namespace='http://luzon.com/leopard'>orderCheck</sap:Interface>
    </ns1:Main>
    and you want to extract the message ID, the receiver service, and the interface name into your own header
    <x:MessageHeader soapenv:mustUnderstand='0' xmlns:x='urn:luzon.com:leopard'>
    <x:msgid>062617a0-b1de-11df-b30e-c0a30a12c821</x:msgid>
    <x:group>Luzon</x:group>
    <x:action>orderCheck</x:action>
    </x:MessageHeader>
    What you need is the HeaderExtractionHandler placed before xireq in the receiver handler sequence
    handler.type   java:com.sap.aii.axis.soap.HeaderExtractionHandler
    namespaces     s http://sap.com/xi/XI/Message/30
    path.1         s:Main/s:MessageId
    name.1         sapkeys{msgid}
    path.2         s:Main/s:Receiver/s:Service
    name.2         sapkeys{receiver}
    path.3         s:Main/s:Interface
    name.3         sapkeys{action}
    The above configuration will extract the required information in the map table sapkeys with keys msgid, receiver, and action, respectively.
    And you need the HeaderInsertionHandler placed after xireq and before trp.
    handler.type   java:com.sap.aii.axis.soap.HeaderExtractionHandler
    value.1        <x:MessageHeader xmlns:x='urn:luzon.com:leopard'><x:msgid>{0}</x:msgid><x:group>{1}</x:group><x:action>{2}</x:action></x:MessageHeader>
    arguments.1    sapkeys{msgid} sapkeys{receiver} sapkeys{action}
    This will insert the above custom header filled with the extracted values.
    Regards, Yza

  • Obtain wsa:MessageID in BizTalk Orchestration

    I am receiving a message into a WCF Receive Location which has the Soap Envelope and WS Addressing elements in the Soap Header.
    soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
    <soapenv:Header xmlns:wsa="http://www.w3.org/2005/08/addressing">
    <wsa:Action>XXXX</wsa:Action>
    <wsa:MessageID>uuid:4f8b9fa8-8041-4f44-a09a-3918091b0694</wsa:MessageID>
    <wsa:To>XXXX</wsa:To>
    <To xmlns="http://schemas.microsoft.com/ws/2005/05/addressing/none" soapenv:mustUnderstand="1">XXXX</To>
    <Action xmlns="http://schemas.microsoft.com/ws/2005/05/addressing/none" soapenv:mustUnderstand="1">XXXX</Action>
    </soapenv:Header><soapenv:Body>...
    How do I access the wsa:MessageID field in my BizTalk Orchestration?

    Did you try the WCF.InboundHeaders Context Propety?
    See this article:
    http://msdn.microsoft.com/en-us/library/bb259987.aspx
    It's populated with the Xml content so you'll have to extract whatever specific value you want yourself.

  • SOAP Axis receiver: host parameter is null

    Hello,
    we are on a PI 7.11 (SP06) system & we are trying to setup a scenario SOAP - SOAP (Axis) where we initiate a third party webservice. To connect to this service we are obliged to go through our proxy, which we defined in our JVM parameters:
    http.nonProxyHosts: [*.ont.local|*.val.local|*.mon.local]
    http.proxyHost: [proxypac.mon.local]
    http.proxyPort: [8080]
    http.proxySet: true
    When we execute our scenario via soapUI we get following error:
    com.sap.engine.interfaces.messaging.api.exception.MessagingException:
    com.sap.engine.interfaces.messaging.api.exception.MessagingException:
    XIAdapterFramework:GENERAL:com.sap.engine.interfaces.messaging.api.exception.MessagingException:
    java.lang.IllegalArgumentException: host parameter is null
    We already tried with http://proxypac.mon.local as parameter as well but still we get this error.
    Furthermore we are able to make a connection to the service via a SM59 connection.
    Axis details:
    Adapter Common Library Version: 1.7.1106.20110202095400.0000, NW711_06_REL
    Adapter Application Version: 1.7.1106.20110202095400.0000, NW711_06_REL
    Axis Version: Apache Axis version: 1.4 Built on Apr 22, 2006 (06:55:48 PDT)
    Many thanks in advance for your help,
    Frédéric.

    Hello Mark,
    we get this last error when connecting with SOAP receiver instead of Axis receiver.
    We are sending different headers (wsa & wsse) in our soapUI request:
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:klip="http://ws.agiv.be/klipws" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <soapenv:Header>
    <wsa:Action xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing">http://ws.agiv.be/klipws/ListKLB</wsa:Action>
    <wsa:MessageID>urn:uuid:2a46571e-d5a7-4b33-a4a1-a174330cd36c</wsa:MessageID>
    <wsa:ReplyTo> <wsa:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:Address></wsa:ReplyTo>
    <wsa:To>http://wsklip.beta.agiv.be/**********.asmx</wsa:To>
    <wsse:Security soapenv:mustUnderstand="1" xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:klip="http://ws.agiv.be/klipws" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing">
    <wsu:Timestamp xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
      <wsu:Created>2011-09-27T10:00:31Z</wsu:Created>
      <wsu:Expires>2011-09-30T18:01:31Z</wsu:Expires>
      </wsu:Timestamp>
    <wsse:UsernameToken>
      <wsse:Username>*********</wsse:Username>
      <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest">***************************************wsse:Password>
      <wsse:Nonce>****************************************</wsse:Nonce>
      <wsu:Created xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">2011-09-12T14:01:31Z</wsu:Created>
      </wsse:UsernameToken>
      </wsse:Security>
    </soapenv:Header>
       <soapenv:Body> <klip:ListKLB xmlns="http://ws.agiv.be/klipws"/>
       </soapenv:Body>
    </soapenv:Envelope>
    For the Axis receiver it looks like one of the handlers can't get the value of our host parameter.
    Any help or tips would be really appreciated!
    Regards,
    Frédéric.

  • Problem verifying xml signature

    We have a problem with verifying XML Signatures which are part of a SOAP message. Thanks a lot for helping! Hope my problem is understandable - otherwise ask.
    We use the following enviroment:
    Java6
    Axis 2 V1.2 with XML Beans
    Step 1:
    The Java 6 XML Signature is an enveloped signature over an element called payload with exclusive XML canonicalization. We sign the payload and send the payload including signature to the server. At first I discovered the following namespace problem.
    DigesterOutputstream Create Signature:
    FEINER: <Payload Id="c623c3be-529b-4d6d-8f1e-a4a29660f344"><Parameter Encoding="base64"><Name>VSD</Name><Value>PFBlcmZvcm1VcGRhdGVzIHhtbG5zPSJodHRwOi8vd3MuZ2VtYXRpay5kZS9jbS9jYy9DbUNjU2VydmljZVJlcXVlc3QvdjEuMiIgeG1sbnM6djE9Imh0dHA6Ly93cy5nZW1hdGlrLmRlL2NtL2NvbW1vbi9DbUNvbW1vbi92MS4yIj4NCiAgPHYxOkljY3NuPjgwMjc2MDAxMDQwMDAwMDAyNDAwPC92MTpJY2Nzbj4NCiAgPHYxOlVwZGF0ZUlkPjAxPC92MTpVcGRhdGVJZD4NCjwvUGVyZm9ybVVwZGF0ZXM+</Value></Parameter><MessageID>urn:uuid:34D51D9DE4B7A19DD411938151524022</MessageID><Timestamp><Created>UNDO</Created></Timestamp></Payload>
    DigesterOutput Verify Signature:
    FEINER: <Payload xmlns="http://ws.gematik.de/Schema/Telematik/Transport/V1" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" Id="c623c3be-529b-4d6d-8f1e-a4a29660f344"><Parameter Encoding="base64"><Name>VSD</Name><Value>PFBlcmZvcm1VcGRhdGVzIHhtbG5zPSJodHRwOi8vd3MuZ2VtYXRpay5kZS9jbS9jYy9DbUNjU2VydmljZVJlcXVlc3QvdjEuMiIgeG1sbnM6djE9Imh0dHA6Ly93cy5nZW1hdGlrLmRlL2NtL2NvbW1vbi9DbUNvbW1vbi92MS4yIj4NCiAgPHYxOkljY3NuPjgwMjc2MDAxMDQwMDAwMDAyNDAwPC92MTpJY2Nzbj4NCiAgPHYxOlVwZGF0ZUlkPjAxPC92MTpVcGRhdGVJZD4NCjwvUGVyZm9ybVVwZGF0ZXM+</Value></Parameter><MessageID>urn:uuid:34D51D9DE4B7A19DD411938151524022</MessageID><Timestamp xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"><Created>UNDO</Created></Timestamp></Payload>
    31.10.2007 08:25:48 org.jcp.xml.dsig.internal.dom.DOMReference validate
    FEIN: Expected digest: 71PfJ/xxn38TtQrpZOpRdqTZsBw=
    31.10.2007 08:25:48 org.jcp.xml.dsig.internal.dom.DOMReference validate
    FEIN: Actual digest: B1Qdei/0yW1mqR2T50LXKFfxhl0=
    Soap request with payload:
    <?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Header><TelematikHeader xmlns="http://ws.gematik.de/Schema/Telematik/Transport/V1"><MessageID>urn:uuid:34D51D9DE4B7A19DD411938151524022</MessageID><ConversationID /><ServiceLocalization><Type>VSD</Type><Provider>101575519</Provider></ServiceLocalization><MessageType><Component>VSD</Component><Operation>PerformUpdates</Operation></MessageType><RoleDataProcessor /></TelematikHeader><TransportHeader xmlns="http://ws.gematik.de/Schema/Telematik/Transport/V1"><InterfaceVersion>0.0.24.3</InterfaceVersion></TransportHeader></soapenv:Header><soapenv:Body><TelematikExecute xmlns="http://ws.gematik.de/Schema/Telematik/Transport/V1"><Payload Id="c623c3be-529b-4d6d-8f1e-a4a29660f344"><Parameter Encoding="base64"><Name>VSD</Name><Value>PFBlcmZvcm1VcGRhdGVzIHhtbG5zPSJodHRwOi8vd3MuZ2VtYXRpay5kZS9jbS9jYy9DbUNjU2VydmljZVJlcXVlc3QvdjEuMiIgeG1sbnM6djE9Imh0dHA6Ly93cy5nZW1hdGlrLmRlL2NtL2NvbW1vbi9DbUNvbW1vbi92MS4yIj4NCiAgPHYxOkljY3NuPjgwMjc2MDAxMDQwMDAwMDAyNDAwPC92MTpJY2Nzbj4NCiAgPHYxOlVwZGF0ZUlkPjAxPC92MTpVcGRhdGVJZD4NCjwvUGVyZm9ybVVwZGF0ZXM+</Value></Parameter><MessageID>urn:uuid:34D51D9DE4B7A19DD411938151524022</MessageID><Timestamp xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"><Created>UNDO</Created></Timestamp><Signature xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /><SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" /><Reference URI="#c623c3be-529b-4d6d-8f1e-a4a29660f344"><Transforms><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" /></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" /><DigestValue>71PfJ/xxn38TtQrpZOpRdqTZsBw=</DigestValue></Reference></SignedInfo><SignatureValue>FuhOdrz9kHR0MeAUq9Rxkg6w++7foR77s9AYQUQxb8qPJ44Ba6By8R/H+CCn5JP5cPFz8/mGOgOD NGKLgZp66xbVSWe1UeehmZLH1a2kvHsx/VvYo3Lr5foHsl6YikUBMXCBdhI4ukKJTuwBOK/7m3lu 7Zl07SFo0zWL73gUTxc=</SignatureValue><KeyInfo><X509Data><X509SubjectName>CN=Harris Knafla,OU=IP,O=TK,ST=Hamburg,C=DE</X509SubjectName><X509Certificate>MIIC0DCCAjmgAwIBAgIBBDANBgkqhkiG9w0BAQUFADCBjTELMAkGA1UEBhMCREUxEDAOBgNVBAgT B0hhbWJ1cmcxEDAOBgNVBAcTB0hhbWJ1cmcxCzAJBgNVBAoTAlRLMQswCQYDVQQLEwJJUDEUMBIG A1UEAxMLTmlscyBLbmFmbGExKjAoBgkqhkiG9w0BCQEWG0RyLk5pbHMuS25hZmxhQHRrLW9ubGlu ZS5kZTAeFw0wNzA2MjkxNzQ2MzBaFw0wODA2MjgxNzQ2MzBaMFExCzAJBgNVBAYTAkRFMRAwDgYD VQQIEwdIYW1idXJnMQswCQYDVQQKEwJUSzELMAkGA1UECxMCSVAxFjAUBgNVBAMTDUhhcnJpcyBL bmFmbGEwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAJMjAnKFGjXjbPbi4X1vnI/H7ArNfayv HO7+QbuV1FqIR+aZuAYZeR5v0s8NKyGOcMxscAQk59ZrdfqaaIiwtcXk2fNHphtSVqLqR4NLWO2q xJKXwBcAxIn7byjq/DqjiUr5nmw1cMWJtK1xwB6pVMvCv97KGg2Z8peronBxg6mVAgMBAAGjezB5 MAkGA1UdEwQCMAAwLAYJYIZIAYb4QgENBB8WHU9wZW5TU0wgR2VuZXJhdGVkIENlcnRpZmljYXRl MB0GA1UdDgQWBBRaMTzoUhWt1wguyvPlPuUUV8VRtTAfBgNVHSMEGDAWgBQuZ2A4G1XF+GvL7vai Zst6RUCqYjANBgkqhkiG9w0BAQUFAAOBgQAr3rtJIVNchr3pMEfFcSzbJJWo/c0LRkUnWkP1gD6f MqLoLFUbl8k6tKJ9V4P0Oe2BODRIfNyTFjKLzD1lHAFFRz9pzYUx+hq4VDWooA3MsewNDDyJwupi vlmHcM+Y8Cv97q9pERiqAY88TRMZxntl/b98W61KARAO+HUDhTnA1g==</X509Certificate></X509Data></KeyInfo></Signature></Payload></TelematikExecute></soapenv:Body></soapenv:Envelope>     
    The problem is the namespaces under the elements payload and timestamp. For verification the namespaces are inherited from parent element. I wonder why this happens - I thought this should not happen when using exclusive canonicalization, or?
    Step 2:
    Then I added the namespaces before creating the signature , e.g.
    payloadElement.setAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns", "http://ws.gematik.de/Schema/Telematik/Transport/V1");
    for all attributes that are not part of the create signature log. Then the xml signature was verify successfully when I tested this against my own server. See log files:
    DigesterOutputstream for create signature:
    31.10.2007 11:16:00 org.jcp.xml.dsig.internal.DigesterOutputStream write
    FEINER: <Payload xmlns="http://ws.gematik.de/Schema/Telematik/Transport/V1" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" Id="c623c3be-529b-4d6d-8f1e-a4a29660f344"><Parameter Encoding="base64"><Name>VSD</Name><Value>PFBlcmZvcm1VcGRhdGVzIHhtbG5zPSJodHRwOi8vd3MuZ2VtYXRpay5kZS9jbS9jYy9DbUNjU2VydmljZVJlcXVlc3QvdjEuMiIgeG1sbnM6djE9Imh0dHA6Ly93cy5nZW1hdGlrLmRlL2NtL2NvbW1vbi9DbUNvbW1vbi92MS4yIj4NCiAgPHYxOkljY3NuPjgwMjc2MDAxMDQwMDAwMDMwMjI5PC92MTpJY2Nzbj4NCiAgPHYxOlVwZGF0ZUlkPjAxPC92MTpVcGRhdGVJZD4NCjwvUGVyZm9ybVVwZGF0ZXM+</Value></Parameter><MessageID>urn:uuid:9E0D31C48FDB63BBCD11938257462232</MessageID><Timestamp xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"><Created>UNDO</Created></Timestamp></Payload>
    DigesterOutputstream verify signature:
    31.10.2007 11:19:00 org.jcp.xml.dsig.internal.DigesterOutputStream write
    FEINER: <Payload xmlns="http://ws.gematik.de/Schema/Telematik/Transport/V1" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" Id="c623c3be-529b-4d6d-8f1e-a4a29660f344"><Parameter Encoding="base64"><Name>VSD</Name><Value>PFBlcmZvcm1VcGRhdGVzIHhtbG5zPSJodHRwOi8vd3MuZ2VtYXRpay5kZS9jbS9jYy9DbUNjU2VydmljZVJlcXVlc3QvdjEuMiIgeG1sbnM6djE9Imh0dHA6Ly93cy5nZW1hdGlrLmRlL2NtL2NvbW1vbi9DbUNvbW1vbi92MS4yIj4NCiAgPHYxOkljY3NuPjgwMjc2MDAxMDQwMDAwMDMwMjI5PC92MTpJY2Nzbj4NCiAgPHYxOlVwZGF0ZUlkPjAxPC92MTpVcGRhdGVJZD4NCjwvUGVyZm9ybVVwZGF0ZXM+</Value></Parameter><MessageID>urn:uuid:9E0D31C48FDB63BBCD11938257462232</MessageID><Timestamp xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"><Created>UNDO</Created></Timestamp></Payload>
    The whole soap request:
    <?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Header> <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" soapenv:mustUnderstand="1"><wsse:BinarySecurityToken xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" wsu:Id="CertId-3596382">MIIC0DCCAjmgAwIBAgIBBDANBgkqhkiG9w0BAQUFADCBjTELMAkGA1UEBhMCREUxEDAOBgNVBAgTB0hhbWJ1cmcxEDAOBgNVBAcTB0hhbWJ1cmcxCzAJBgNVBAoTAlRLMQswCQYDVQQLEwJJUDEUMBIGA1UEAxMLTmlscyBLbmFmbGExKjAoBgkqhkiG9w0BCQEWG0RyLk5pbHMuS25hZmxhQHRrLW9ubGluZS5kZTAeFw0wNzA2MjkxNzQ2MzBaFw0wODA2MjgxNzQ2MzBaMFExCzAJBgNVBAYTAkRFMRAwDgYDVQQIEwdIYW1idXJnMQswCQYDVQQKEwJUSzELMAkGA1UECxMCSVAxFjAUBgNVBAMTDUhhcnJpcyBLbmFmbGEwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAJMjAnKFGjXjbPbi4X1vnI/H7ArNfayvHO7+QbuV1FqIR+aZuAYZeR5v0s8NKyGOcMxscAQk59ZrdfqaaIiwtcXk2fNHphtSVqLqR4NLWO2qxJKXwBcAxIn7byjq/DqjiUr5nmw1cMWJtK1xwB6pVMvCv97KGg2Z8peronBxg6mVAgMBAAGjezB5MAkGA1UdEwQCMAAwLAYJYIZIAYb4QgENBB8WHU9wZW5TU0wgR2VuZXJhdGVkIENlcnRpZmljYXRlMB0GA1UdDgQWBBRaMTzoUhWt1wguyvPlPuUUV8VRtTAfBgNVHSMEGDAWgBQuZ2A4G1XF+GvL7vaiZst6RUCqYjANBgkqhkiG9w0BAQUFAAOBgQAr3rtJIVNchr3pMEfFcSzbJJWo/c0LRkUnWkP1gD6fMqLoLFUbl8k6tKJ9V4P0Oe2BODRIfNyTFjKLzD1lHAFFRz9pzYUx+hq4VDWooA3MsewNDDyJwupivlmHcM+Y8Cv97q9pERiqAY88TRMZxntl/b98W61KARAO+HUDhTnA1g==</wsse:BinarySecurityToken><ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#" Id="Signature-8331318"> <ds:SignedInfo> <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /> <ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" /> <ds:Reference URI="#id-28000914"> <ds:Transforms> <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /> </ds:Transforms> <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" /> <ds:DigestValue>Q2LregRFO//cXlkcThu9Bx0jal4=</ds:DigestValue> </ds:Reference> <ds:Reference URI="#id-10464309"> <ds:Transforms> <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /> </ds:Transforms> <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" /> <ds:DigestValue>BX651XEWk4u4pGgshQhocYxPkSo=</ds:DigestValue> </ds:Reference> <ds:Reference URI="#Timestamp-7651652"> <ds:Transforms> <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /> </ds:Transforms> <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" /> <ds:DigestValue>ezisLn/pGWNqMHbT6UlHyM4Ez64=</ds:DigestValue> </ds:Reference> </ds:SignedInfo> <ds:SignatureValue> Xl4SSEwrtyUnsqf8xOmfzojLLU18tOrikOhK+HRyqHqv0lPF+AqANLU6yygNdhbfI5qyef9BLr6I CmSPIX4QQR+Hq45l/Ewa+M2K1OOjqvBUGYyQqrKCqUFtsISr9xPudB8ZmaVfaUu5chjIvy/sPYYx TuYv2Ma6uEwek1YZpbE= </ds:SignatureValue> <ds:KeyInfo Id="KeyId-1823783"> <wsse:SecurityTokenReference xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="STRId-17125267"><wsse:Reference URI="#CertId-3596382" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" /></wsse:SecurityTokenReference> </ds:KeyInfo> </ds:Signature><wsu:Timestamp xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="Timestamp-7651652"><wsu:Created>2007-10-31T10:16:00.474Z</wsu:Created><wsu:Expires>2007-10-31T10:21:00.474Z</wsu:Expires></wsu:Timestamp></wsse:Security><TelematikHeader xmlns="http://ws.gematik.de/Schema/Telematik/Transport/V1" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="id-10464309"><MessageID>urn:uuid:9E0D31C48FDB63BBCD11938257462232</MessageID><ConversationID /><ServiceLocalization><Type>VSD</Type><Provider>101575519</Provider></ServiceLocalization><MessageType><Component>VSD</Component><Operation>PerformUpdates</Operation></MessageType><RoleDataProcessor /></TelematikHeader><TransportHeader xmlns="http://ws.gematik.de/Schema/Telematik/Transport/V1"><InterfaceVersion>0.0.24.3</InterfaceVersion></TransportHeader></soapenv:Header><soapenv:Body xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="id-28000914"><TelematikExecute xmlns="http://ws.gematik.de/Schema/Telematik/Transport/V1"><Payload Id="c623c3be-529b-4d6d-8f1e-a4a29660f344"><Parameter Encoding="base64"><Name>VSD</Name><Value>PFBlcmZvcm1VcGRhdGVzIHhtbG5zPSJodHRwOi8vd3MuZ2VtYXRpay5kZS9jbS9jYy9DbUNjU2VydmljZVJlcXVlc3QvdjEuMiIgeG1sbnM6djE9Imh0dHA6Ly93cy5nZW1hdGlrLmRlL2NtL2NvbW1vbi9DbUNvbW1vbi92MS4yIj4NCiAgPHYxOkljY3NuPjgwMjc2MDAxMDQwMDAwMDMwMjI5PC92MTpJY2Nzbj4NCiAgPHYxOlVwZGF0ZUlkPjAxPC92MTpVcGRhdGVJZD4NCjwvUGVyZm9ybVVwZGF0ZXM+</Value></Parameter><MessageID>urn:uuid:9E0D31C48FDB63BBCD11938257462232</MessageID><Timestamp xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"><Created>UNDO</Created></Timestamp><Signature xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /><SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" /><Reference URI="#c623c3be-529b-4d6d-8f1e-a4a29660f344"><Transforms><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" /></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" /><DigestValue>XHIiHK4NYczByvAJSZH8u3hSvuQ=</DigestValue></Reference></SignedInfo><SignatureValue>JQnTQJ1TidrMuWmSmpHE3ZR5M728A3tlvKjrM3GxFPuy5YOmmybxR0T7xe72WSdWsqvFT9QGE+iP GL5POuc3s8lLc1QGZRKhZvjHAKFldDNyxAMWRL7ZXmhpjsRXT3HethKWew3669SKjJFkZ1IYEnZz QrJOmgt1MMjWx99CgaQ=</SignatureValue><KeyInfo><X509Data><X509SubjectName>CN=Harris Knafla,OU=IP,O=TK,ST=Hamburg,C=DE</X509SubjectName><X509Certificate>MIIC0DCCAjmgAwIBAgIBBDANBgkqhkiG9w0BAQUFADCBjTELMAkGA1UEBhMCREUxEDAOBgNVBAgT B0hhbWJ1cmcxEDAOBgNVBAcTB0hhbWJ1cmcxCzAJBgNVBAoTAlRLMQswCQYDVQQLEwJJUDEUMBIG A1UEAxMLTmlscyBLbmFmbGExKjAoBgkqhkiG9w0BCQEWG0RyLk5pbHMuS25hZmxhQHRrLW9ubGlu ZS5kZTAeFw0wNzA2MjkxNzQ2MzBaFw0wODA2MjgxNzQ2MzBaMFExCzAJBgNVBAYTAkRFMRAwDgYD VQQIEwdIYW1idXJnMQswCQYDVQQKEwJUSzELMAkGA1UECxMCSVAxFjAUBgNVBAMTDUhhcnJpcyBL bmFmbGEwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAJMjAnKFGjXjbPbi4X1vnI/H7ArNfayv HO7+QbuV1FqIR+aZuAYZeR5v0s8NKyGOcMxscAQk59ZrdfqaaIiwtcXk2fNHphtSVqLqR4NLWO2q xJKXwBcAxIn7byjq/DqjiUr5nmw1cMWJtK1xwB6pVMvCv97KGg2Z8peronBxg6mVAgMBAAGjezB5 MAkGA1UdEwQCMAAwLAYJYIZIAYb4QgENBB8WHU9wZW5TU0wgR2VuZXJhdGVkIENlcnRpZmljYXRl MB0GA1UdDgQWBBRaMTzoUhWt1wguyvPlPuUUV8VRtTAfBgNVHSMEGDAWgBQuZ2A4G1XF+GvL7vai Zst6RUCqYjANBgkqhkiG9w0BAQUFAAOBgQAr3rtJIVNchr3pMEfFcSzbJJWo/c0LRkUnWkP1gD6f MqLoLFUbl8k6tKJ9V4P0Oe2BODRIfNyTFjKLzD1lHAFFRz9pzYUx+hq4VDWooA3MsewNDDyJwupi vlmHcM+Y8Cv97q9pERiqAY88TRMZxntl/b98W61KARAO+HUDhTnA1g==</X509Certificate></X509Data></KeyInfo></Signature></Payload></TelematikExecute></soapenv:Body></soapenv:Envelope>
    As you can see in the soap request on top of the xml signature there is a Webservice Security signature (WSSE) over three elements. This should be no problem altough WSSE adds the wsu:id attribute to the body element. WSSE was omitted in step 1 for simplicity.
    I wonder that the attributes which have been set to the payloadElement are not part of the actual message. But it works!
    Step 3:
    The same request was sent to an external webservice server and the server reports a xml signature verification problem. I don't have any logs or further information. But I have to get this to work against this server.
    Java Files for Create + Verify Signature. For Create I get a DOM Node from a XML Bean. For step 1 the attribute setting should be in comments. I use VerifySignature for step 1 + 2.
    SignPayload.java:
    package de.tk.signature;
    import java.io.ByteArrayOutputStream;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.OutputStream;
    import java.security.KeyStore;
    import java.security.cert.X509Certificate;
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.List;
    import javax.xml.crypto.dsig.CanonicalizationMethod;
    import javax.xml.crypto.dsig.DigestMethod;
    import javax.xml.crypto.dsig.Reference;
    import javax.xml.crypto.dsig.SignatureMethod;
    import javax.xml.crypto.dsig.SignedInfo;
    import javax.xml.crypto.dsig.Transform;
    import javax.xml.crypto.dsig.XMLSignature;
    import javax.xml.crypto.dsig.XMLSignatureFactory;
    import javax.xml.crypto.dsig.dom.DOMSignContext;
    import javax.xml.crypto.dsig.keyinfo.KeyInfo;
    import javax.xml.crypto.dsig.keyinfo.KeyInfoFactory;
    import javax.xml.crypto.dsig.keyinfo.X509Data;
    import javax.xml.crypto.dsig.spec.C14NMethodParameterSpec;
    import javax.xml.crypto.dsig.spec.ExcC14NParameterSpec;
    import javax.xml.crypto.dsig.spec.TransformParameterSpec;
    import javax.xml.parsers.DocumentBuilderFactory;
    import javax.xml.transform.OutputKeys;
    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.NamedNodeMap;
    import org.w3c.dom.Node;
    import org.apache.xmlbeans.XmlObject;
    import de.tk.schemaTools.TkSchemaHandler;
    import de.tk.util.ClientProperties;
    public class SignPayload {
         public static void signDocument(XmlObject telematikExecuteXmlObject, String payloadId) {
              try {
                   // get Document
                   org.w3c.dom.Node node = telematikExecuteXmlObject.getDomNode();
                   Document documentTo = node.getOwnerDocument();
                   XMLSignatureFactory fac = XMLSignatureFactory.getInstance("DOM");
                   Reference ref = fac.newReference("#"+payloadId, fac.newDigestMethod(DigestMethod.SHA1, null), Collections.singletonList(fac
                             .newTransform(Transform.ENVELOPED, (TransformParameterSpec) null)), null, null);
                   // Create the SignedInfo.
                   SignedInfo si = fac.newSignedInfo(fac.newCanonicalizationMethod(CanonicalizationMethod.EXCLUSIVE, (C14NMethodParameterSpec) null), fac.newSignatureMethod(SignatureMethod.RSA_SHA1, null),
                             Collections.singletonList(ref));
                   KeyStore keyStore = KeyStore.getInstance("JKS");
                   String keyStoreFilename = ClientProperties.getKeystorefile();
                   FileInputStream keyStoreFile = new FileInputStream(keyStoreFilename);
                   keyStore.load(keyStoreFile, "storePwd".toCharArray());
                   keyStoreFile.close();
                   KeyStore.PrivateKeyEntry keyEntry = (KeyStore.PrivateKeyEntry) keyStore.getEntry("harris", new KeyStore.PasswordProtection("keyPwd".toCharArray()));
                   X509Certificate cert = (X509Certificate) keyEntry.getCertificate();
                   // Create the KeyInfo containing the X509Data.
                   KeyInfoFactory kif = fac.getKeyInfoFactory();
                   List x509Content = new ArrayList();
                   x509Content.add(cert.getSubjectX500Principal().getName());
                   x509Content.add(cert);
                   X509Data xd = kif.newX509Data(x509Content);
                   KeyInfo ki = kif.newKeyInfo(Collections.singletonList(xd));
                   Node payloadNode = new TkSchemaHandler().getNode(documentTo, "Payload");
                   String prefix = payloadNode.getPrefix();
                   NamedNodeMap nameNodeMap = payloadNode.getAttributes();
                   // String baseUri = payloadNode.getBaseURI(); not implemented
                   boolean attributes = payloadNode.hasAttributes();
                   Element payloadElement = (Element) payloadNode;
                   //xmlns is the prefix and first parameter the namespaceURI
                   // xmlns existiert ohne WSSE, beim Create XMLOutputter ausgegeben
                   payloadElement.setAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns", "http://ws.gematik.de/Schema/Telematik/Transport/V1");
                   // existiert ohne WSSE
                   // bei Create nicht; aber bei Verify im DigestOutputter mit drin
                   payloadElement.setAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns:soapenv", "http://schemas.xmlsoap.org/soap/envelope/");
                   // existiert nur bei WSSE
                   payloadElement.setAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns:wsu", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd");
                   Node timestampNode = new TkSchemaHandler().getNode(documentTo, "Timestamp");
                   Element timestampElement = (Element) timestampNode;
                   // existiert ohne WSSE
                   // beim Create Outputter angegeben sowie beim Verify
                   timestampElement.setAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd");
                   // existiert nur bei WSSE, war wohl nur notwendig da bei WSSE Signature auf falschen Timestamp zugegriffen worden ist.
                   // Create a DOMSignContext and specify the RSA PrivateKey and
                   // location of the resulting XMLSignature's parent element.
                   DOMSignContext dsc = new DOMSignContext(keyEntry.getPrivateKey(),payloadNode);
                   // Create the XMLSignature, but don't sign it yet.
                   XMLSignature signature = fac.newXMLSignature(si, ki);
                   // DomInfo.visualize(document);
                   SAXBuilderDemo2.print(documentTo);
                   // Marshal, generate, and sign the enveloped signature.
                   signature.sign(dsc);
              } catch (Exception exc) {
                   throw new RuntimeException(exc.getMessage());
    VerifySignature.java:
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.OutputStream;
    import java.security.Key;
    import java.security.KeyStore;
    import java.security.cert.X509Certificate;
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Enumeration;
    import java.util.Iterator;
    import java.util.List;
    import javax.xml.crypto.dsig.CanonicalizationMethod;
    import javax.xml.crypto.dsig.DigestMethod;
    import javax.xml.crypto.dsig.Reference;
    import javax.xml.crypto.dsig.SignatureMethod;
    import javax.xml.crypto.dsig.SignedInfo;
    import javax.xml.crypto.dsig.Transform;
    import javax.xml.crypto.dsig.XMLSignature;
    import javax.xml.crypto.dsig.XMLSignatureFactory;
    import javax.xml.crypto.dsig.dom.DOMSignContext;
    import javax.xml.crypto.dsig.dom.DOMValidateContext;
    import javax.xml.crypto.dsig.keyinfo.KeyInfo;
    import javax.xml.crypto.dsig.keyinfo.KeyInfoFactory;
    import javax.xml.crypto.dsig.keyinfo.X509Data;
    import javax.xml.crypto.dsig.spec.C14NMethodParameterSpec;
    import javax.xml.crypto.dsig.spec.TransformParameterSpec;
    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.Node;
    import org.w3c.dom.NodeList;
    public class VerifySignature {
         * @param args
         public static void main(String[] args) {
              // TODO Auto-generated method stub
              try {
                   String filename = args[0];
                   System.out.println("Verify Document: " + filename);
                   XMLSignatureFactory fac = XMLSignatureFactory.getInstance("DOM");
                   DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
                   dbf.setNamespaceAware(true);
                   Document doc = dbf
                   .newDocumentBuilder()
                   .parse(
                             new FileInputStream(filename));
    //               Find Signature element.
    //               NodeList nl =
    //               doc.getElementsByTagNameNS(XMLSignature.XMLNS, "Signature");
                   Node node = TkSchemaHandler.getNode(doc,"/*[local-name()='Envelope' and namespace-uri()='http://schemas.xmlsoap.org/soap/envelope/']/*[local-name()='Body' and namespace-uri()='http://schemas.xmlsoap.org/soap/envelope/'][1]/*[local-name()='TelematikExecute' and namespace-uri()='http://ws.gematik.de/Schema/Telematik/Transport/V1'][1]/*[local-name()='Payload' and namespace-uri()='http://ws.gematik.de/Schema/Telematik/Transport/V1'][1]/*[local-name()='Signature' and namespace-uri()='http://www.w3.org/2000/09/xmldsig#'][1]");
                   if (nl.getLength() == 0) {
                   throw new Exception("Cannot find Signature element");
                   Node node = nl.item(0); */
    //               Create a DOMValidateContext and specify a KeySelector
    //               and document context.
                   DOMValidateContext valContext = new DOMValidateContext
                   (new X509KeySelector(), node);
    //               Unmarshal the XMLSignature.
                   XMLSignature signature = fac.unmarshalXMLSignature(valContext);
    //               Validate the XMLSignature.
                   boolean coreValidity = signature.validate(valContext);
                   // sample 6
    //               Check core validation status.
                   if (coreValidity == false) {
                   System.err.println("Signature failed core validation");
                   boolean sv = signature.getSignatureValue().validate(valContext);
                   System.out.println("signature validation status: " + sv);
                   if (sv == false) {
                   // Check the validation status of each Reference.
                   Iterator i = signature.getSignedInfo().getReferences().iterator();
                   for (int j=0; i.hasNext(); j++) {
                   boolean refValid = ((Reference) i.next()).validate(valContext);
                   System.out.println("ref["+j+"] validity status: " + refValid);
                   } else {
                   System.out.println("OK! Signature passed core validation!");
              } catch (Exception exc) {
                   exc.printStackTrace();
    Questions:
    1. Do I really have to set all the namespace attributes? I thought with exclusive xml this should not be necessary. Is there any other solution?
    2. Do you think I got all the settings right in SignPayload.java?
    Thanks a lot in advance.
    Cheers !
    Nils

    It seems to be a bug with the JDK you are using. What is the JDK version you are using?

  • Printint XML string using  XSLT mapping

    Hi,
    I'm trying to build a outgoing SOAP message with in XI, my backedn legacy application expect the soap message to be in certain format. It expect the xml request passed in the body of the message as whole xml string. I need to pring the xml something like this, I would appreciate if anyone had implemented something like this before. if you look at the below message I'm enclosing the whole xml string in the data element.
    <data xsi:type="xsd:string"><?xml version="1.0" encoding="UTF-8"?> <crm:schedule_call_request session_id="mid://07060623130210031519@elnk_crm.com" target_system_id="csi_ivr" xmlns:crm="https://signup.earthlink.net/ws_xmlc/schema/crm/271005/xmlc_crm.xsd" xmlns:xcommon="https://signup.earthlink.net/ws_xmlc/schema/crm/271005/xmlc_common.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://signup.earthlink.net/ws_xmlc/schema/crm/271005/xmlc_crm.xsd https://signup.earthlink.net/ws_xmlc/schema/crm/271005/xmlc_crm.xsd https://signup.earthlink.net/ws_xmlc/schema/crm/271005/xmlc_common.xsd https://signup.earthlink.net/ws_xmlc/schema/crm/271005/xmlc_common.xsd"> <crm:call_parameter global_rules_version_id="" manual_request="true" originating_skillset="TS (DU/BB)|ADSL RETAIL" parameter_version_id="1" transfer_skillset="TSBBDSL...WinELNK"> <crm:call_id>10031519</crm:call_id> <crm:department_name>TS</crm:department_name> <crm:object_type>CASE</crm:object_type> <crm:object_id>73079085</crm:object_id> <crm:call_time>2007-06-07T12:30:01.000-08:00</crm:call_time> <crm:customer_phone_number>6263452656</crm:customer_phone_number> <crm:override_attempts>false</crm:override_attempts> <crm:retry_count>3</crm:retry_count> <crm:call_trigger>3000</crm:call_trigger> <crm:call_time_padding>10</crm:call_time_padding> <crm:override_local_customer_call_hours>false</crm:override_local_customer_call_hours> </crm:call_parameter> </crm:schedule_call_request></data>

    Hi
    thanks for responding. here is the input SOAP message that I was building in the XLT mapping. I was stuck at putting the xml in the data element.
    soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    - <soapenv:Header>
    - <wsa:EndpointReference soapenv:actor="http://schemas.xmlsoap.org/soap/actor/next" soapenv:mustUnderstand="0" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing">
      <wsa:Address xsi:type="soapenc:string" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">https://xmlc-qe.corp.earthlink.net/ws_xmlc/s_router</wsa:Address>
      <wsa:ServiceName wsa:PortName="XMLCollectivePort" xsi:type="soapenc:string" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">wsa:ServiceName</wsa:ServiceName>
      </wsa:EndpointReference>
      <wsa:To soapenv:actor="http://schemas.xmlsoap.org/soap/actor/next" soapenv:mustUnderstand="0" xsi:type="soapenc:string" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">https://xmlc-qe.corp.earthlink.net/ws_xmlc/queues/csi_queue</wsa:To>
      <wsa:Action soapenv:actor="http://schemas.xmlsoap.org/soap/actor/next" soapenv:mustUnderstand="0" xsi:type="soapenc:string" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">https://xmlc-qe.corp.earthlink.net/ws_xmlc/action//messaging/put_single</wsa:Action>
      <wsa:MessageID soapenv:actor="http://schemas.xmlsoap.org/soap/actor/next" soapenv:mustUnderstand="0" xsi:type="soapenc:string" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">07060623130210031519</wsa:MessageID>
    - <wsse:Security soapenv:actor="http://schemas.xmlsoap.org/soap/actor/next" soapenv:mustUnderstand="0" xmlns:wsse="http://schemas.xmlsoap.org/ws/2002/07/secext">
    - <wsse:UsernameToken>
      <wsse:Username xsi:type="soapenc:string" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">elnk_crm</wsse:Username>
      <wsse:Password wsse:Type="wsse:PasswordDigest" xsi:type="soapenc:string" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">20UioFa77hI6MLhlc+KPDF95Hx0=</wsse:Password>
      <wsse:Nonce xsi:type="soapenc:string" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">VlX1Jpoq+vkQCQ8af2SaCDP1u9c=</wsse:Nonce>
      <wsu:Created xsi:type="soapenc:string" xmlns:wsu="http://schemas.xmlsoap.org/ws/2002/07/utility" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">2007-06-06T23:13:12Z</wsu:Created>
      </wsse:UsernameToken>
      </wsse:Security>
      </soapenv:Header>
    - <soapenv:Body>
    - <ns1:SubmitRequest soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns1="SubmitRequest">
      <data xsi:type="xsd:string"><?xml version="1.0" encoding="UTF-8"?> <crm:schedule_call_request session_id="mid://07060623130210031519@elnk_crm.com" target_system_id="csi_ivr" xmlns:crm="https://signup.earthlink.net/ws_xmlc/schema/crm/271005/xmlc_crm.xsd" xmlns:xcommon="https://signup.earthlink.net/ws_xmlc/schema/crm/271005/xmlc_common.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://signup.earthlink.net/ws_xmlc/schema/crm/271005/xmlc_crm.xsd https://signup.earthlink.net/ws_xmlc/schema/crm/271005/xmlc_crm.xsd https://signup.earthlink.net/ws_xmlc/schema/crm/271005/xmlc_common.xsd https://signup.earthlink.net/ws_xmlc/schema/crm/271005/xmlc_common.xsd"> <crm:call_parameter global_rules_version_id="" manual_request="true" originating_skillset="TS (DU/BB)|ADSL RETAIL" parameter_version_id="1" transfer_skillset="TSBBDSL...WinELNK"> <crm:call_id>10031519</crm:call_id> <crm:department_name>TS</crm:department_name> <crm:object_type>CASE</crm:object_type> <crm:object_id>73079085</crm:object_id> <crm:call_time>2007-06-07T12:30:01.000-08:00</crm:call_time> <crm:customer_phone_number>6263452656</crm:customer_phone_number> <crm:override_attempts>false</crm:override_attempts> <crm:retry_count>3</crm:retry_count> <crm:call_trigger>3000</crm:call_trigger> <crm:call_time_padding>10</crm:call_time_padding> <crm:override_local_customer_call_hours>false</crm:override_local_customer_call_hours> </crm:call_parameter> </crm:schedule_call_request></data>
      </ns1:SubmitRequest>
      </soapenv:Body>
      </soapenv:Envelope>

  • Cannot find binding operation definition based on wsaAction='null'

    I'm using correlation sets to invoke an axis service asynchronously. I understand that, in this way, passing ws-addressing headers (replyTo, messageId, etc) is not required. However, the generated process' WSDL contains:
    <binding name="FlightCallbackPortTypeBinding" type="tns:FlightCallbackPortType">
    <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
    <operation name="flightServiceCallback">
    <soap:operation style="document" soapAction="flightServiceCallback"/>
    <input>
    <soap:header message="tns:WSARelatesToHeader" part="RelatesTo" use="literal" encodingStyle=""/>
    <soap:body use="literal"/>
    </input>
    </operation>
    </binding>
    When Axis calls back, it sends the message:
    POST /orabpel/default/process_wsba/1.0 HTTP/1.0
    Content-Type: text/xml; charset=utf-8
    User-Agent: Axis/1.3
    Host: localhost:8088
    SOAPAction: "flightServiceCallback"
    <?xml version="1.0" encoding="UTF-8"?>
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <soapenv:Header>
    <nsl:RelatesTo soapenv:actor="http://schemas.xmlsoap.org/soap/actor/next" soapenv:mustUnderstand="0" xmlns:nsl="http://schemas.xmlsoap.org/ws/2003/03/addressing">dummyValue</nsl:RelatesTo>
    </soapenv:Header>
    <soapenv:Body>
    <transactionID xsi:type="xsd:string" xmlns="">fe80:0:0:0:207:e9ff:fe44:b4f8:1150081262615 (correlation token)</transactionID>
    <price xsi:type="xsd:int" xmlns="">4</price>
    </soapenv:Body>
    </soapenv:Envelope>
    However, I get the error message:
    <faultcode>soapenv:Server.generalException</faultcode>
    <faultstring>Cannot find binding operation definition based on wsaAction='null', and soapAction='flightServiceCallback' in http://cali:9700/orabpel/default/process_wsba/1.0/_process_wsba.wsdl</faultstring>
    <detail>
    <ns1:hostname xmlns:ns1="http://xml.apache.org/axis/">cali</ns1:hostname>
    </detail>
    1) What's missing in my callback?
    2) Do I need to bother about the wsa header even using correlationSets?
    Thank in advance,
    Ivan

    I have an urgent need for a Sr, Oracle BPEL Developer in the Dallas Texas area. With this position, you can interview and start immediately. If you are interested or know of anyone looking please send my way.
    Warm regards,
    Kim Dobson
    Sr. Account Manager
    Eventus Group Technology Resources
    10100 N. Central Expressway
    Suite 150
    Dallas, TX 75231
    Office 469.916.4857
    Mobile 214.277.2097
    Fax 469.916.3861
    [email protected]

  • How to insert security headers thru BPEL Process

    I am new to BPEL process creation and stuff, but I need to complete a task in which I need
    1.Create a BPEL process which accepts Username and password and set it into the soap request header as follows;
    <soapenv:Header>
    <wsse:Security soapenv:mustUnderstand="1"
    xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecuri
    ty-secext-1.0.xsd">
    <wsse:UsernameToken wsu:Id="UsernameToken-24438666"
    xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurit
    y-utility-1.0.xsd">
    <wsse:Username>Username </wsse:Username>
    <wsse:Password
    Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token
    -profile-1.0#PasswordDigest">password </wsse:Password>
    <wsse:Nonce>syVMUbFNvaQAfQaDpVDolA==</wsse:Nonce>
    <wsu:Created>2009-03-25T22:55:51Z</wsu:Created>
    </wsse:UsernameToken>
    </wsse:Security>
    </soapenv:Header>
    Can you please let me know what all steps I need follow in order to introduce the soap:header with wsse :security header settings. I am using 10.1.2.
    I tried to do it by importing a schema wsse.xsd into my WSDL file. and in bpel.xml I set the properties as follows,
    <property name="wsdlLocation">AccruentService.wsdl</property>
    <property name="wsseUsername">username</property>
    <property name="wssePassword">password</property>
    <property name="wsseHeaders">credentials</property>
    but does not put in the required header.
    I dont know if I need to do anything else, Please help.

    Hi,
    Thanks for the quick reply.
    I tried doing he same as mentioned in the link that u provided, but I got struck at this;
    I did not understand why we are doing this;
    <bpelx:insertAfter>
    <bpelx:from variable="pswd" query="/wsse:Password"/>
    <bpelx:to variable="userNameToken" query="/wsse:UsernameToken/wsse:Username"/>
    </bpelx:insertAfter>
    <bpelx:append>
    <bpelx:from variable="userNameToken" query="/wsse:UsernameToken"/>
    <bpelx:to variable="securityContext" query="/wsse:Security"/>
    </bpelx:append>
    after doing this and deploying, my request when tested thru SOAPUI looks like this with not security headers
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:add="http://schemas.xmlsoap.org/ws/2003/03/addressing" xmlns:acc="http://www.accruent.com/">
    <soapenv:Header>
    <add:MessageID>?</add:MessageID>
    <add:ReplyTo>
    <add:Address>?</add:Address>
    <!--Optional:-->
    <add:ReferenceProperties>
    <!--You may enter ANY elements at this point-->
    </add:ReferenceProperties>
    <!--Optional:-->
    <add:PortType>?</add:PortType>
    <!--Optional:-->
    <add:ServiceName PortName="?">?</add:ServiceName>
    <!--You may enter ANY elements at this point-->
    </add:ReplyTo>
    </soapenv:Header>
    <soapenv:Body>
    ....I just removed so that it is short
    </soapenv:Body>
    </soapenv:Envelope>
    the service which I am invoking should

  • Web service security in PI

    Mine is PROXY to SOAP asynchronous.
    PI consumes the service, my requirement is when PI calls the service I need to pass web service security in SOAP header.
    so that at receiver statem they can validate the user using these.
    When i am calling webservice from soapui with the header parameters
    Username , Password and Password Type - PasswordText , it is able to get results. The soapui tool automatically adds the following in the soap header -
    <wsse:Security soapenv:mustUnderstand="1" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
    <wsse:UsernameToken wsu:Id="UsernameToken-9368150" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
    <wsse:Username>xxxxx</wsse:Username>
    <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">xxxxx</wsse:Password>
    <wsse:Nonce>aOA1P6t2hJPRyuraQ/IliQ==</wsse:Nonce>
    <wsu:Created>2009-07-10T14:58:33.781Z</wsu:Created>
    </wsse:UsernameToken>
    </wsse:Security>
    What configuration needs to be done in PI.

    I got this in Runtime work bench
    <SOAP:Envelope xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/">
    - <SOAP:Header>
    - <sap:Main xmlns:sap="http://sap.com/xi/XI/Message/30" versionMajor="3" versionMinor="0" SOAP:mustUnderstand="1" xmlns:wsu="http://www.docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="wsuid-main-92ABE13F5C59AB7FE10000000A1551F7">
      <sap:MessageClass>ApplicationMessage</sap:MessageClass>
      <sap:ProcessingMode>asynchronous</sap:ProcessingMode>
      <sap:MessageId>4a3a1651-b19b-0199-e100-8000aa064690</sap:MessageId>
      <sap:TimeSent>2009-07-15T15:46:10Z</sap:TimeSent>
    - <sap:Sender>
      <sap:Party agency="" scheme="" />
      <sap:Service>test2310</sap:Service>
      </sap:Sender>
    - <sap:Receiver>
      <sap:Party agency="" scheme="" />
      <sap:Service>test_serivce</sap:Service>
      </sap:Receiver>
      <sap:Interface namespace="urn:Publish">msgIF_publish_I_Async</sap:Interface>
      </sap:Main>
    - <sap:ReliableMessaging xmlns:sap="http://sap.com/xi/XI/Message/30" SOAP:mustUnderstand="1">
      <sap:QualityOfService>ExactlyOnce</sap:QualityOfService>
      </sap:ReliableMessaging>
    - <sap:Diagnostic xmlns:sap="http://sap.com/xi/XI/Message/30" SOAP:mustUnderstand="1">
      <sap:TraceLevel>Fatal</sap:TraceLevel>
      <sap:Logging>On</sap:Logging>
      </sap:Diagnostic>
    - <sap:HopList xmlns:sap="http://sap.com/xi/XI/Message/30" SOAP:mustUnderstand="1">
    - <sap:Hop timeStamp="2009-07-15T15:46:10Z" wasRead="false">
      <sap:Engine type="BS">test_serivce</sap:Engine>
      <sap:Adapter namespace="http://sap.com/xi/XI/System">XI</sap:Adapter>
      <sap:MessageId>4a3a1651-b19b-0199-e100-8000aa064690</sap:MessageId>
      <sap:Info>3.0</sap:Info>
      </sap:Hop>
    - <sap:Hop timeStamp="2009-07-15T15:46:11Z" wasRead="false">
      <sap:Engine type="IS">is.68.devai020</sap:Engine>
      <sap:Adapter namespace="http://sap.com/xi/XI/System">XI</sap:Adapter>
      <sap:MessageId>4a3a1651-b19b-0199-e100-8000aa064690</sap:MessageId>
      <sap:Info>3.0</sap:Info>
      </sap:Hop>
    - <sap:Hop timeStamp="2009-07-15T15:46:12Z" wasRead="false">
      <sap:Engine type="AE">af.dxi.devai020</sap:Engine>
      <sap:Adapter namespace="http://sap.com/xi/XI/System">XIRA</sap:Adapter>
      <sap:MessageId>4a3a1651-b19b-0199-e100-8000aa064690</sap:MessageId>
      </sap:Hop>
      </sap:HopList>
      </SOAP:Header>
    Edited by: Vamsi on Jul 15, 2009 7:06 PM

  • Inbound Message Fails with Send Exp"

    We are on 10.1.2.0.2 and tryting to test (ebms ) outbound/inbound messaging with a trading partner. The outbound from us to TP works great, but on inbound from the TP we are seing the following errors: (This works on 10.1.2.0.0)
    Machine Info: (devb2b.helenachemical.com)
    Description: B2B adapter general error
    StackTrace:
    Error -: AIP-50031: B2B adapter general error: Error -: AIP-50025: Repository error : Error -: AIP-50547: Trading partner agreement not found for the given input values: From party[NAME] "DEST Partnre", To party[NAME] "SOURCE Partner", Business action name "SendResponseEnd"; also verify agreement effectiveToDate
         at oracle.tip.adapter.b2b.engine.Engine.processIncomingMessage(Engine.java:1735)
         at oracle.tip.adapter.b2b.engine.Engine.incomingContinueProcess(Engine.java:2294)
         at oracle.tip.adapter.b2b.engine.Engine.handleMessageEvent(Engine.java:2193)
         at oracle.tip.adapter.b2b.engine.Engine.processEvents(Engine.java:2148)
         at oracle.tip.adapter.b2b.data.MsgListener.onMessage(MsgListener.java:500)
         at oracle.tip.adapter.b2b.data.MsgListener.run(MsgListener.java:348)
         at java.lang.Thread.run(Thread.java:534)
    Caused by: Error -: AIP-50025: Repository error : Error -: AIP-50547: Trading partner agreement not found for the given input values: From party[NAME] "DEST Partner", To party[NAME] "SOURCE Partner", Business action name "SendResponseEnd"; also verify agreement effectiveToDate
         at oracle.tip.adapter.b2b.tpa.RepoDataAccessor.getAgreementNameByBaTPType(RepoDataAccessor.java:1852)
         at oracle.tip.adapter.b2b.tpa.TPAIdentifier.identifyTPA(TPAIdentifier.java:167)
         at oracle.tip.adapter.b2b.tpa.TPAProcessor.processTPA(TPAProcessor.java:495)
         at oracle.tip.adapter.b2b.tpa.TPAProcessor.processIncomingTPA(TPAProcessor.java:226)
         at oracle.tip.adapter.b2b.engine.Engine.handleExceptionBeforeIncomingTPA(Engine.java:3568)
         at oracle.tip.adapter.b2b.engine.Engine.processIncomingMessage(Engine.java:1614)
         ... 6 more
    Caused by: Error -: AIP-50547: Trading partner agreement not found for the given input values: From party[NAME] "DEST Partner", To party[NAME] "SOURCE Partner", Business action name "SendResponseEnd"; also verify agreement effectiveToDate
         at oracle.tip.adapter.b2b.tpa.RepoDataAccessor.getAgreementNameByBaTPName(RepoDataAccessor.java:2176)
         at oracle.tip.adapter.b2b.tpa.RepoDataAccessor.getAgreementNameByBaTPType(RepoDataAccessor.java:1839)
         ... 11 more
    Any ideas on what is different in the newer version of B2B
    Thanks
    PT

    Hi Ramesh,
    Found this issue- in the new release the Business Action name and choreography name must match to work with TP on custom document over ebms.
    We still have issues,,, the TP's that are working currently on 10.1.2.0 are no more working. For example:
    The following wire envelope was sent from one of our TP:
    --MIME_boundary
    Content-ID: <1dac9c73-bba3-4fc3-a756-0134872b03d2ebxml-Header>
    Content-Type: text/xml
    <?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:eb="http://www.oasis-open.org/committees/ebxml-msg/schema/msg-header-2_0.xsd" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="http://schemas.xmlsoap.org/soap/envelope/ http://www.oasis-open.org/committees/ebxml-msg/schema/envelope.xsd"><soapenv:Header xsi:schemaLocation="http://www.oasis-open.org/committees/ebxml-msg/schema/msg-header-2_0.xsd http://www.oasis-open.org/committees/ebxml-msg/schema/msg-header-2_0.xsd"><eb:MessageHeader eb:version="2.0" soapenv:mustUnderstand="1"><eb:From xmlns:axis2ns1561="http://www.oasis-open.org/committees/ebxml-msg/schema/msg-header-2_0.xsd"><eb:PartyId xmlns:axis2ns1562="http://www.oasis-open.org/committees/ebxml-msg/schema/msg-header-2_0.xsd" axis2ns1562:type="DUNS+4">8097318700000</eb:PartyId></eb:From><eb:To xmlns:axis2ns1563="http://www.oasis-open.org/committees/ebxml-msg/schema/msg-header-2_0.xsd"><eb:PartyId xmlns:axis2ns1564="http://www.oasis-open.org/committees/ebxml-msg/schema/msg-header-2_0.xsd" axis2ns1564:type="DUNS">0070367590000</eb:PartyId></eb:To><eb:CPAId xmlns:axis2ns1565="http://www.oasis-open.org/committees/ebxml-msg/schema/msg-header-2_0.xsd">OrderCreate</eb:CPAId><eb:ConversationId xmlns:axis2ns1566="http://www.oasis-open.org/committees/ebxml-msg/schema/msg-header-2_0.xsd">7229ce0c-4b6a-419c-b301-ef28708fda68</eb:ConversationId><eb:Service xmlns:axis2ns1567="http://www.oasis-open.org/committees/ebxml-msg/schema/msg-header-2_0.xsd">uri:OrderCreate</eb:Service><eb:Action xmlns:axis2ns1568="http://www.oasis-open.org/committees/ebxml-msg/schema/msg-header-2_0.xsd">SendResponseEnd</eb:Action><eb:MessageData xmlns:axis2ns1571="http://www.oasis-open.org/committees/ebxml-msg/schema/msg-header-2_0.xsd"><eb:MessageId xmlns:axis2ns1572="http://www.oasis-open.org/committees/ebxml-msg/schema/msg-header-2_0.xsd">1dac9c73-bba3-4fc3-a756-0134872b03d2</eb:MessageId><eb:Timestamp xmlns:axis2ns1573="http://www.oasis-open.org/committees/ebxml-msg/schema/msg-header-2_0.xsd">2008-05-28T10:33:55Z</eb:Timestamp></eb:MessageData><eb:DuplicateElimination xmlns:axis2ns1574="http://www.oasis-open.org/committees/ebxml-msg/schema/msg-header-2_0.xsd" /></eb:MessageHeader><eb:AckRequested eb:signed="false" eb:version="2.0" soapenv:mustUnderstand="1" /></soapenv:Header><soapenv:Body><eb:Manifest eb:id="Manifest" eb:version="2.0"><eb:Reference eb:id="Payload-1" xlink:href="1dac9c73-bba3-4fc3-a756-0134872b03d2-body1" xlink:type="simple" /></eb:Manifest></soapenv:Body></soapenv:Envelope>
    On the Ack, B2B is sending the following:
    SOAPAction="ebXML"
    Content-Type=multipart/related;type="text/xml";boundary="----=_Part_29_18537968.1211985238867";start="<ebxheader-0A27EBC811A2FF31B3B00000C6520000>"
    Content-Length=1744
    ------=_Part_29_18537968.1211985238867
    Content-Type: text/xml
    Content-ID: <ebxheader-0A27EBC811A2FF31B3B00000C6520000>
    <?xml version="1.0" encoding="utf-8" ?>
    <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:eb="http://www.oasis-open.org/committees/ebxml-msg/schema/msg-header-2_0.xsd" xsi:schemaLocation="http://schemas.xmlsoap.org/soap/envelope/ http://www.oasis-open.org/committees/ebxml-msg/schema/envelope.xsd http://www.oasis-open.org/committees/ebxml-msg/schema/msg-header-2_0.xsd http://www.oasis-open.org/committees/ebxml-msg/schema/msg-header-2_0.xsd"><env:Header><eb:MessageHeader env:mustUnderstand="1" eb:version="2.0"><eb:From><eb:PartyId eb:type="ebMS Identifier">0070367590000</eb:PartyId></eb:From><eb:To><eb:PartyId eb:type="ebMS Identifier">8097318700000</eb:PartyId></eb:To><eb:CPAId>SendResponseEnd</eb:CPAId><eb:ConversationId>7229ce0c-4b6a-419c-b301-ef28708fda68</eb:ConversationId><eb:Service>urn:oasis:names:tc:ebxml-msg:service</eb:Service><eb:Action>Acknowledgment</eb:Action><eb:MessageData><eb:MessageId>Helena Operating Unit@0A27EBC811A2FF31B4400000C6530000</eb:MessageId><eb:Timestamp>2008-05-28T14:33:58.000Z</eb:Timestamp><eb:RefToMessageId>1dac9c73-bba3-4fc3-a756-0134872b03d2</eb:RefToMessageId></eb:MessageData></eb:MessageHeader><eb:Acknowledgment env:actor="urn:oasis:names:tc:ebxml-msg:actor:toPartyMSH" env:mustUnderstand="1" eb:version="2.0"><eb:Timestamp>2008-05-28T14:33:58.000Z</eb:Timestamp><eb:RefToMessageId>1dac9c73-bba3-4fc3-a756-0134872b03d2</eb:RefToMessageId></eb:Acknowledgment></env:Header><env:Body/></env:Envelope>
    ------=_Part_29_18537968.1211985238867--
    They send us Service: uri:orderCreate; Action: SendResponseEnd; CPAID: OrderCreate.
    We send in the Ack:
    Service: urn:oasis:name:tc:ebxml-msg:sercice; Action:Acknowledgment: CPAID:SendResponseEnd
    Where is it pulling the CPAID? or why is it using the Business Action Name?
    The message shows complete on our side, but does not get completed on TP side, and since they are they are the initiator they retry 2 times befoer they stop and this is causing duplicte errors on our side. They are using Nexus ebms engine.
    Any info on this is appreciated. We are using ebms 2.0
    Thanks
    PT

  • Error using WS-Addressing during asynchronous callback

    I am using the BPEL PM (10.1.2) to call an asynchronous service, but I am not receiving the callback. This is the SOAP request message:
    <?xml version="1.0"?>
    <soapenv:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
         <soapenv:Header>
              <ns1:MessageID xmlns:ns1="http://schemas.xmlsoap.org/ws/2003/03/addressing" xmlns:ns2="http://schemas.oracle.com/bpel" ns2:rootId="3005" ns2:parentId="3005" ns2:priority="3" soapenv:actor="http://schemas.xmlsoap.org/soap/actor/next" soapenv:mustUnderstand="0">bpel://localhost/default/BPEL_Test_Async~1.0/3005-BpInv0-BpSeq1.6-2</ns1:MessageID>
              <ns3:ReplyTo xmlns:ns3="http://schemas.xmlsoap.org/ws/2003/03/addressing" soapenv:actor="http://schemas.xmlsoap.org/soap/actor/next" soapenv:mustUnderstand="0">
                   <ns3:Address>http://SRJONES011203:9700/orabpel/default/BPEL_Test_Async/1.0/PS_Async_PL/GetNamePortTypeCallback_Role</ns3:Address>
                   <ns3:ReferenceProperties xsi:nil="true"/>
                   <ns3:PortType xmlns:ns4="http://peoplesoft.com/BPEL_ASYNC_REQ">ns4:GetNamePortTypeCallback</ns3:PortType>
                   <ns3:ServiceName xmlns:ns5="http://peoplesoft.com/BPEL_ASYNC_REQ">ns5:GetNameCallbackService</ns3:ServiceName>
              </ns3:ReplyTo>
         </soapenv:Header>
         <soapenv:Body>
              <psGetName xmlns="http://peoplesoft.com/BPEL_ASYNC_REQ/">
                   <emplid xmlns="http://peoplesoft.com/BPEL_ASYNC_REQ/">SimonJones</emplid>
              </psGetName>
         </soapenv:Body>
    </soapenv:Envelope>
    and this is the response I'm generating:
    <?xml version="1.0"?>
    <SOAP-ENV:Envelope xmlns:ns1="http://peoplesoft.com/BPEL_ASYNC_REQ/" xmlns:wsa="http://schemas.xmlsoap.org/ws/2003/03/addressing" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
         <SOAP-ENV:Header xmlns:ns2="http://schemas.oracle.com/bpel" ns2:rootId="3005" ns2:parentId="3005" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
              <wsa:MessageID>bpel://localhost/default/BPEL_Test_Async~1.0/3005-BpInv0-BpSeq1.6-2</wsa:MessageID>
              <wsa:RelatesTo>bpel://localhost/default/BPEL_Test_Async~1.0/3005-BpInv0-BpSeq1.6-2</wsa:RelatesTo>
              <wsa:To>http://SRJONES011203:9700/orabpel/default/BPEL_Test_Async/1.0/PS_Async_PL/GetNamePortTypeCallback_Role</wsa:To>
         </SOAP-ENV:Header>
         <SOAP-ENV:Body>
              <ns1:psGetNameResponse>
                   <ns1:personname>AsyncCallbackResponse</ns1:personname>
              </ns1:psGetNameResponse>
         </SOAP-ENV:Body>
    </SOAP-ENV:Envelope>
    Can anyone spot any errors with my use of WS-Addressing ?
    I have seen other posts on the forum e.g. you need to include rootId and parentId in the SOAP Header, but am wondering if I've missed something else out.
    Cheers.

    Bharat,
    You dont need a Business Event setup to invoke a BPEL process from PL/SQL unless you have a special case and you need to process the response from the BPEL process in a separate thread (or in background)..
    For a straight call to BPEL process from PL/SQL, here is a sample script -
    function "MYTEST0" return varchar2 AS
    soap_request varchar2(30000);
    soap_respond varchar2(30000);
    http_req utl_http.req;
    http_resp utl_http.resp;
    resp XMLType;
    i integer;
    helpStr varchar2(30000);
    BEGIN
    soap_request:= '<?xml version = ''1.0'' encoding = ''UTF-8''?>
    <env:Envelope xmlns: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:ns0="
    http://xmlns.oracle.com/TestWS">
    <env:Body>
    <ns0:TestWSProcessRequest>
    <ns0:input>abc</ns0:input>
    </ns0:TestWSProcessRequest>
    </env:Body>
    </env:Envelope>
    /* the BPEL process name is TestWS */
    http_req:= utl_http.begin_request
    ( 'http://hostname:7777/orabpel/default/TestWS/1.0'
    , 'POST'
    , 'HTTP/1.1'
    utl_http.set_header(http_req, 'Content-Type', 'text/xml');
    utl_http.set_header(http_req, 'Content-Length', length(soap_request));
    utl_http.set_header(http_req, 'SOAPAction', 'process');
    utl_http.write_text(http_req, soap_request);
    http_resp:= utl_http.get_response(http_req);
    utl_http.read_text(http_resp, soap_respond);
    utl_http.end_response(http_resp);
    resp:= XMLType.createXML(soap_respond);
    resp:= resp.extract('/soap:Envelope/soap:Body/child::node()',
    'xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"');
    helpStr := '';
    i:=0;
    loop
    helpStr := helpStr || substr(soap_respond,1+ i*255,250);
    i:= i+1;
    if i*250> length(soap_respond)
    then
    exit;
    end if;
    end loop;
    return helpStr;
    END;

Maybe you are looking for