SOAP Header info

Hi Experts,
Depends on the SOAP Header information, I have to call the corresponding synchronous services in XI. Is it possible? If yes, could you please tell how to do that?
For Example :
1. SOAP Header : c1
    Service : Call the c1 service
2. SOAP Header : c2
    Service : Call the c2 service
Regards
Sara

Hi Sara,
Can you check by using conditional receiver determination.
You can check for the value of feild giving you C1 and C2.
Accordingly you can call two different services.
Which would in turn let you do two receiver determination and call those SOAP receiver channels based on this condition.
Regards,
Akshay.
Reward points if find useful.

Similar Messages

  • SOAP Header data into SXI_MONITOR

    Hi to all,
    in the SXI_MONITOR I can see the detailed SOAP header data by double-click on a specific message. The header data are visible in an XML format. Where these data are stored in ABAP SAP XI? How can I obtain these data as an XML document, for example, or as a  database table?
    Thanks to all!

    have a look on these Threads may be useful
    How to check header data
    HTTP Header fields in SOAP adapter
    Re: SOAP Header info
    Thanks !!

  • Howto proces SOAP Header with security info

    My incoming Soap messages contain security info in the soapenv:Header part.
    However, I only need the contents of the Body element.
    If I do NOT handle the Soap Message, then an Exception is thrown: something like: 'Do not know how to handle MustUnderstand'.
    So something must be done with the Security info in the header, but I do not know how. Do I have to remove the header completely in the Soap handler, after checking the singning? If somebody can point me to some examples of Soap header processing for this case it would be helpful.
    kind regs.
    Harry

    Hi Harry
    The header in Soap Messages is optional. Is is used to carry security information, that is security on the level of the Soap message. So when the header of an incoming Soap message is 'handled', the header is of no use any longer and can (must) be discarded. Indeed discarded, because the rest of the handlers don't expect a header in the Soap message. They extract the 'contents' from the body of the Soap message, and deliver that to you backend system.
    I will describe the header handling in the webservice: to get access to the Soap message in your code, you have to write a 'handler' Class. This Class should implement the Handler Interface or extend the abstract GenericHandler Class. To handle only the incoming Soap messages, the 'Requests', the method 'handleRequest' should be implemented. This handleRequest method has 1 parameter (mc) with type MessageContext. This parameter contains the original Soap message in Object format. You can access the original header information via:
    SOAPMessageContext smc = (SOAPMessageContext)mc;
    SOAPMessage message = smc.getMessage();
    SOAPPart part = message.getSOAPPart();
    SOAPEnvelope envelope = part.getEnvelope();
    SOAPHeader header = envelope.getHeader();
    With: Iterator iterator = header.getChildElements();
    you can navigate through the header elements and do whatever you like. If you decide that security info in this header does not match the contents of the body for instance, you can issue an Exception and log it.
    After processing the header you have to discard it with:
    header.detachNode(); and let your handleRequest method return 'true'.
    The rest of the webservice processing takes the contents from the body element, and delivers that to your application.
    To let you webservice make use of your Handler, you have to name it in the web-services.xml as follows:
    <webservices>
    <handler-chains>
    <handler-chain name="myChain">
    <handler class-name="a.b.c.MyHandler" />
    </handler-chain>
    </handler-chains>
    <web-service name="MyService">
    <operations>
    <operation ... handler-chain="myChain" .... />
    </operations>
    When the webservice 'MyService' gets a request, the handler 'MyHandler' is automatically invoked. you can have more handlers in a chain. Also you can declare more chains in your <webservices> section and refer to them from the <operation> elements.
    Items of interest:
    javax.xml.rpc.handler.soap.*
    javax.xml.rpc.handler.*
    javax.xml.namespace.*
    javax.xml.soap.*
    May be this of use for you :).

  • Passing authentication info in soap header

    We need to integrate a webservice in ALSB 2.6. This webservice needs authentication information (username and password) to be passed inside the soap header.
    I imported the wsdl into ALSB and created a business service on it. When I try to test one of the webservice's method using the test console, I am not sure how do I pass the authentication fields inside the soap header.
    Can anyone please provide some inputs.
    Regards,
    Rishi

    The best way to do that is to create an XML file and register it as an Xquery resource in ALSB. You can then access the Xquery file from your pipeline to update your message.
    An alternative way is to use th Xquery function "doc" to read files from the file system. However I discourage you to do that since this file will need to be present on your server and won't be managed by the config framework which is going to increase the maintenance burden.
    Gregory Haardt
    ALSB Prg. Manager
    [email protected]

  • How to add Custom Attributes in the SOAP header for OWSM

    Hi,
    I like to know how to add the Custom Attributes in the SOAP header for OSWM username token authentication.
    Currently we are getting the header element like
    <wsse:Security 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">
    here we need to add the attribute "soap:mustUnderstand="1" , so the element will look like
    <wsse:Security soap:mustUnderstand="1" 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">
    Any info on this will be helpful.
    Thanks,
    ArunM

    Hi Jay, you can make it in more than 1 way.
    I suggest you the following:
    - create an URL iview that points to any URL you want.
    - define a Resource that points to the iview (with a window name, to open in new window)
    - define an Area that points to the resource
    - add your new Area to the your current Area Group
    Regards!

  • Reading custom SOAP header with XHeaderName1

    Hello Experts,
    I have a SOAP to File scenario and I am trying to do dynamic receiver determination by looking at the SOAP request header info. I am adding a custom field (System_ID) that I want rules to run against in Receiver Determination..
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:urn="urn:*******************">
    <soapenv:Header>
    <System_ID>100</System_ID>
    </soapenv:Header>
      <soapenv:Body>
       </soapenv:Body>
    </soapenv:Envelope>
    In the Receiver Determination I have multiple rules using SOAP context object to  XHeaderName1 = the System_ID (100) to pass the message to the right system at runtime according to the  System_ID.
    In the SOAP sender channel I have Set Adapter-Specific Message Attributes and Variable Transport Binding checked. I also have the variable name System_ID in the first Variable Header (XHeaderName1).
    In the SOAP sender Conversion Parameters I have Do Not Use SOAP Envelope and Keep Headers checked, as well as nosoap=true in the SOAP request URL.
    I'm getting the System ID to show in XI in sxmb_moni in the Header but no where do I see it being used with XHeaderName1.
    Am I using XHeaderName1 right? If not could you advise as to how XHeaderName1 should be used?
    My requirement is to read system ID from Header, not payload.
    Thank you!
    Tim

    I was able to find a solution to my problem.
    I created a basic senario below to test:
    1.A basic Asynchronous scenario is created using a SOAP sender adapter to 2 possible flat file receivers.
    2.The SOAP sender channel will have the option u201CDo Not Use SOAP envelopeu201D checked and SOAPUI URL will have u201C&nosoap=trueu201D added to the end.
    3.The receiver system name will be stored in the WS-Addressing u201CActionu201D field sent from SOAPUI.
    4.Two ABAP mappings are created. One mapping will extract the system number from the WS-Addressing u201CActionu201D field. The other mapping will extract just the body of the SOAP message to send along. Using regex and string manipulation in the ABAP mappings we can reuse the mappings for any SOAP message.
    5.Enhanced (Extended) Receiver Determination is selected and interface mapping using system/XI ReceiverDetermination  service interface is used to capture the receiver system.
    While this is a solution is not the best, it is a solution. Upon research I found a recent SAP Note 1385579 talking about implementing a SAP delivered generic SOAP Sender AXIS handler com.sap.aii.axis.soap.HeaderExtractionHandler to extract SOAP Header elements and place in message attributes. I will be trying this out.

  • Webservice security: manipulating the SOAP Header

    Hi all,
    I need to call a web service for which the following XWSS security policy is specified:
    <xwss:SecurityConfiguration dumpMessages="false" xmlns:xwss="http://java.sun.com/xml/ns/xwss/config">
    <xwss:RequireUsernameToken passwordDigestRequired="true" nonceRequired="true"/>
    </xwss:SecurityConfiguration>
    Looking at the BPEL Admin guide, I tried to add the following to the bpel.xml file:
    <property name="wsseOASIS2004Compliant">true</property>
    <property name="wsseHeaders">credentials</property>
    <property name="wsseUsername">username</property>
    <property name="wssePassword">digestedPassword</property>
    I tried to encrypt the password using either Base64 or sha1. In any case, the following error is returned:
    com.sun.xml.wss.XWSSecurityException: Receiver Requirement for Digested Password has not been met
    Apparently, the following header format has to be constructed:
    <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
    <SOAP-ENV:Header>
    <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
    SOAP-ENV:mustUnderstand="1">
    <wsse:UsernameToken xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
    wsu:Id="XWSSGID-11553010711772067303919">
    <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">digestedPassword</wsse:Password>
    <wsse:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">aNonce</wsse:Nonce>
    <wsu:Created>2006-08-11T12:57:54Z</wsu:Created>
    </wsse:UsernameToken>
    </wsse:Security>
    </SOAP-ENV:Header>
    <SOAP-ENV:Body>
    theBody
    </SOAP-ENV:Body>
    </SOAP-ENV:Envelope>
    How can I achieve that using BPEL Designer (using 10.1.2.1.0)?
    E.g. are there ways to directly influence the SOAP Header?
    Thanks.
    Best regards, Sjoerd

    More info:
    By specifying the header properties in the bpel.xml BPEL generates the following header data in the SOAP message (obtained using obtunnel):
    <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>
    <wsse:Security soapenv:actor="http://schemas.xmlsoap.org/soap/actor/next"
    soapenv:mustUnderstand="1"
    xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
    <wsse:UsernameToken xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-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#PasswordText">clearTextPassword</wsse:Password>
    </wsse:UsernameToken>
    </wsse:Security>
    </soapenv:Header>
    <soapenv:Body>
    theBody
    </soapenv:Body>
    </soapenv:Envelope>
    As you can see it uses the #PasswordText which indicates the use of a cleartext password.
    Thus the question remains: how to get the Nonce, the CreationTime and the PasswordDigest in the SOAP Header of the message (BPEL 10.1.2.1.0)?
    Thanks, Sjoerd

  • No Receiver in SOAP header in sxmb_moni

    Hi all
    My scenario is using the HTTP sender channel.the url is like this:
    <u>http://xiserver:8000/sap/xi/adapter_plain?namespace=http%3A//my&interface=MI_Leo_HTTP_Sou_OB&service=ZBS_Leo_Http&party=&agency=&scheme=&QOS=EO&sap-user=*****&sap-password=****&sap-client=001&sap-language=EN</u>
    after i trigger the scenario, i got the message'status scheduled
    and the info of SOAP Header in sxmb_moni as followed:
      <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
    - <!--  Inbound Message
      -->
    - <SAP:Main xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsu="http://www.docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" versionMajor="003" versionMinor="000" SOAP:mustUnderstand="1" wsu:Id="wsuid-main-92ABE13F5C59AB7FE10000000A1551F7">
      <SAP:MessageClass>ApplicationMessage</SAP:MessageClass>
      <SAP:ProcessingMode>asynchronous</SAP:ProcessingMode>
      <SAP:MessageId>7603ACFE-A4DB-5F48-8F6A-A9DFC3CB97CB</SAP:MessageId>
      <SAP:TimeSent>2007-11-01T03:34:43Z</SAP:TimeSent>
    - <SAP:Sender>
      <SAP:Service>ZBS_Leo_Http</SAP:Service>
      <SAP:Interface namespace="http://my">MI_Leo_HTTP_Sou_OB</SAP:Interface>
      </SAP:Sender>
    <i><b>  <SAP:Interface namespace="http://my">MI_Leo_HTTP_Sou_OB</SAP:Interface></b></i>
      </SAP:Main>
    i think it's really wired, in the info, i couldn't find the receiver info, while my receiver determination is really ok.
    the bold highlighted aboved should be like this:
    <i><b><SAP:Receiver>
      <SAP:Party agency="" scheme="" />
      <SAP:Service>*******</SAP:Service>
      <SAP:Interface namespace="****">*****</SAP:Interface>
      <SAP:Mapping notRequired="X" />
      </SAP:Receiver></b></i>
    but it's wrong.how should solve this????
    and i restarted the message, it became manual restart status, it didn't work
    Please help me.
    Thank you in advance.

    it works now

  • WSSE usename token not in the SOAP Header

    Background:
    Webservice with four methods; OpGet, OpCreate, OpGetList, OpSet. Setup a jcx with this webservice URL, generate a test harness from workshop, and running this test harness and looking at the SOAP messages being send and received to verify that the web services are working. The OpGet is working since it doesn't require user credentials. But the OpCreate is currently not working. Remedy is rejecting it because of access control.
    Problem #1:
    Need to pass the user credential in the SOAP header. Here's the required information in WSDL regarding Authentication.
    <wsdl:operation name="OpCreate">
    <soap:operation soapAction="urn:SimpleWebService/OpCreate" style="document"/>
    <wsdl:input>
    <soap:header message="s:ARAuthenticate" part="parameters" use="literal">
    </soap:header>
    <soap:body use="literal"/>
    </wsdl:input>
    <wsdl:output>
    <soap:body use="literal"/>
    </wsdl:output>
    </wsdl:operation>
    Solution that I have implemented so far:
    I have setup a WSSE file with the simple username/password in the <wsSecurityOut> element and was expecting to see this in the SOAP Header element in the WSDL message. When I look at the SOAP message in the test harness that I have generated in Workshop, I don't see this credential information. I have set the "ws-security-service property to the wsse file. I know that the harness has seen the wsse file since it gives me warning about having the password in simple text without encryption.
    Shouldn't I be seeing this userNameToken information in the SOAP Header when I run the test harness (jws) from workshop? As you can see below (Problem #2) no SOAP header is being generated.
    Problem #2:
    I see that in the SOAP message that test harness is sending wrong "xsi:type" information. It seems to be sending the "StatusType" for all the parameters except the one "Status" where it needs to?
    SOAP-ENV:Envelope xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <SOAP-ENV:Body>
    <ns:OpCreate xmlns:ns="urn:SimpleWebService">
    <ns:Assigned_To xsi:type="ns:StatusType">donnab</ns:Assigned_To>
    <ns:Short_Description xsi:type="ns:StatusType">testing from weblogic 8.1 SP3 Workshop</ns:Short_Description>
    <ns:Status>New</ns:Status>
    <ns:Submitter xsi:type="ns:StatusType">donnab</ns:Submitter>
    </ns:OpCreate>
    </SOAP-ENV:Body>
    </SOAP-ENV:Envelope>
    Here's the WSDL where the OpCreate is defined:
    <xsd:element name="OpCreate" type="s:CreateInputMap"/>
    <xsd:complexType name="CreateInputMap">
    <xsd:sequence>
    <xsd:element name="Assigned_To" type="xsd:string"/>
    <xsd:element name="Short_Description" type="xsd:string"/>
    <xsd:element name="Status" type="s:StatusType"/>
    <xsd:element name="Submitter" type="xsd:string"/>
    </xsd:sequence>
    </xsd:complexType>

    I've never been able to see that information because I assume Weblogic server strips it out the minute it receives it and uses it to authenticate the user against a principal in the server.
    You can get ahold of this info, though. In your .jws file, in workshop, add this as a context:
    /** @common:context */
    JwsContext context;
    In your web services method, access the context to get the username:
    context.getCallerPrincipal().getName();
    That will return a String w/ the username passed in the username token.
    -Becky

  • Not able to Pass header info to Microsoft MapPoint WebService using WLS10

    We are passing some Header info to the MapPoint Web Service from our client Web Service which is hosted in Weblogic 10, however we are not sure if the info is getting passed.
    The actual soap header which we are trying to postis as below:
    <env:Header xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
    <m:CustomerInfoFindHeader xmlns:m="http://s.mappoint.net/mappoint-30/">
    <m:CustomLogEntry>2</m:CustomLogEntry>
    </m:CustomerInfoFindHeader>
    </env:Header>
    We are using the below code snippet for setting the header:
    Document doc = null;
    try
    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    factory.setNamespaceAware(true);
    doc = factory.newDocumentBuilder().newDocument();
    catch(ParserConfigurationException pce)
    System.out.println("ERROR -> " + pce.getMessage());
    Element header = doc.createElementNS("http://schemas.xmlsoap.org/soap/envelope/", "SOAP-ENV:Header");
    Element headerContent = doc.createElementNS("http://s.mappoint.net/mappoint-30/","m:CustomerInfoFindHeader");
    Element headerChildContent = doc.createElementNS("http://s.mappoint.net/mappoint-30/", "m:CustomLogEntry");
    headerChildContent.appendChild(doc.createTextNode("2"));
    headerContent.appendChild(headerChildContent);
    header.appendChild(headerContent);
    Attr nsAttr = doc.createAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:m");
    nsAttr.setValue("http://s.mappoint.net/mappoint-30/");
    headerContent.setAttributeNodeNS(nsAttr);
    findServiceControl.setOutputHeaders(new Element[] {header});
    Here findServiceControl is the Service Control object.
    Even if the code is not throwing any error/exception I am not able to see the header portion which invoking the Mappoint Web Service (using the weblogic test client for testing the webservice).
    Is there any other methodology for setting the header.
    Regards
    Sanjeev Singh

    If you're not sure the header is being created properly, you should switch to using a javax.xml.transform.stream.StreamSource and javax.xml.transform.dom.DOMResult. For instance:
    import java.io.ByteArrayInputStream;
    import javax.xml.transform.TransformerFactory;
    import javax.xml.transform.Transformer;
    import javax.xml.transform.dom.DOMResult;
    import javax.xml.transform.stream.StreamSource;
    import org.w3c.dom.Document;
    import org.w3c.dom.Element;
    StringBuffer xml = new StringBuffer()
    .append("<env:Header ")
    .append("xmlns:env=\"http://schemas.xmlsoap.org/soap/envelope/\">")
    .append("<m:CustomerInfoFindHeader xmlns:m=\"http://s.mappoint.net/mappoint-30/\">")
    .append("<m:CustomLogEntry>2</m:CustomLogEntry>")
    .append("</m:CustomerInfoFindHeader>")
    .append("</env:Header>);
    TransformerFactory xformFactory = TransformerFactory.newInstance();
    Transformer transformer = xformFactory.newTransformer();
    ByteArrayInputStream bais = new ByteArrayInputStream(xml.toString().getBytes());
    DOMResult result = new DOMResult();
    transformer.transform(new StreamSource(bais), result);
    Document document = (Document)result.getNode();
    findServiceControl.setOutputHeaders(new Element[] {document.getDocumentElement()});
    If you want to see the SOAP request being sent to the Mappoint Web Service, add the following to the JAVA_OPTIONS environment variable (in the startWebLogic.cmd file), and bounce it:
    -Dweblogic.wsee.verbose=*
    -Dweblogic.log.RedirectStdoutToServerLogEnabled=true
    This will write the SOAP request (and SOAP response) to the server log of the WebLogic Server instance, which the service control is running in.

  • SOAP Header modification.

    Hello All,
    Please help me. I am trying to use the following scenario RFC to XI and SOAP to post the message.
    I am getting all the info I need in RFC, but the problem is I have to modify the Header fields. The SOAP system is expecting custom parameters in Header and Body (envelope). I know we can do this using ‘Do not use SOAP envelope’ in communication channel check box. My problem is how can I map for header and as well as body.
    Please help me as soon as possible.
    Thank you very much and have a nice day.

    Hi,
    Check out this threads
    Re: XI30 SPS16 - SOAP Sender Adapter - self-defined SOAP-Header
    SOAP Adapter: DO not use soap envelope
    Thanks,
    Prakash

  • Generating Web Service with SOAP Header

    Hello,
    I have a WSDL for a web Service using document encoding and with a soap header.
    I generate a jws file using WL Workshop 81.SP4 but I always have this error message :
    ERROR: AjoutContactService.jws:13: The binding for AjoutContact does not declare one part.
    ERROR:      SUGGESTION: A document literal binding must have at most one part. Make sure you have a WSDL that declares just one part for each message with a document literal binding.
    The header is a recent adding on an existing Web Service, and I can't change the wsdl definition. I also need to use data contained by the header in conjunction with data in the body.
    Is it a limitation with workshop or a problem with with my binding file ?
    I give sample of my two wsdl files.
    Given wsdl file
         <wsdl:message name="inputAjoutContact">
              <wsdl:part name="body" element="xsdin:NouveauContact"/>
    <wsdl:part name="header" element="xsdinhead:EnTeteRequete"/>          
         </wsdl:message>
         <wsdl:message name="outputAjoutContact">
              <wsdl:part name="body" element="xsdout:StatutAjoutContact"/>
         </wsdl:message>
         <wsdl:message name="faultAjoutContact">
              <wsdl:part name="body" element="xsdfault:Exception"/>
         </wsdl:message>
         <wsdl:portType name="AjoutContactPortType">
              <wsdl:operation name="AjoutContact">
                   <wsdl:input name="ParametresEntree" message="tns:inputAjoutContact"/>
                   <wsdl:output name="ParametresSortie" message="tns:outputAjoutContact"/>
                   <wsdl:fault name="ParametresException" message="tns:faultAjoutContact"/>
              </wsdl:operation>
         </wsdl:portType>
    binding file
              <wsdl:operation name="AjoutContact">
                   <soap:operation soapAction="urn:#AjoutContact"/>
                   <input>
    <soap:header part="header" use="literal"/>
    <soap:body parts="body" use="literal"/>
                   </input>
                   <output>
                        <soap:body use="literal"/>
                   </output>
    <fault name="ParametresException">
    <soap:fault use="literal" name="ParametresException" />
    </fault>
         </wsdl:operation>

    Hi,
    This appears to be a known limitation and is addressed by CR227689
    which has a workaround that needs the wsdl to be modified.
    I am not sure if this is possible given that we don't control the wsdl most times.
    Could you please open a BEA support case and refer to CR227689?
    Vimala-
    p.s:
    I found some info on the issue which could help:
    1) Refer to <http://lists.oasis-open.org/archives/regrep/200306/msg00071.html>
    you will see that only one part is allowed in the message part for doc/literal webservices Snippet from the above link
    "Also, keep in mind that WS-I BP permits only one <part> on document/literal messages, so to be WS-I compliant, you would have to include it in the message structure. "
    2) Refer to http://www.ws-i.org/Profiles/Basic/2003-08/BasicProfile-1.0a.html#refinement35722968 <http://www.ws-i.org/Profiles/Basic/2003-08/BasicProfile-1.0a.html>
    below R2208)
    "For document-literal bindings, the Profile requires that at most one part, abstractly defined with the element attribute, be serialized into the soap:Body element."
    This implies Soap body contains message which contains a at most one part.

  • Unable to get Http Header info in webservice Handler

    Hi,
    I have been trying to get the Header info in my custom Handler unsuccessfully
    for the past few days.
    Upon web search, I am constantly redirected to use a Servlet filter to get the
    headers. I have to use the Weblogic Native SOAP engine and not any Servlet Filters.
    In Axis, I can do a (HttpServletRequest)messageContext.getProperty(HTTPConstants.MC_HTTP_SERVLETREQUEST)
    which returns the HttpServletRequest and then I can get the headers off that.
    I can't find something similar in WebLogic. Any ideas?
    Any help in helping me track this problem down would be much appreciated.
    Thanks,
    Sridhar.

    Yes, you are correct that you are taking a risk by using the "__BEA_PRIVATE_BINDING_PROP"
    property, on the MessageContext object. The mechanism I provided is the recommended
    (and supported) way to get the HTTP headers, as it only uses "documented" class.
    Some developers think you are trying to "hide" something with undocumented classes,
    but I don't think this is the case with BEA. There are good reasons and the point
    you made about the likelihood of an unannouced future change breaking your code,
    is probably pretty high on the list :-)
    Getting the REMOTE_ADDR (or REMOTE_HOST) would most likely require the "undocumented"
    approach you've taken. You could get the HttpServletRequest from this same HttpServerBinding
    object, and call the getRemoteAddr() method on it. However, I really, really,
    really think you should consult our "fantabulous" BEA support department, to see
    if doing this will be supported.
    Regards,
    Mike Wooten
    "Sridhar" <[email protected]> wrote:
    >
    Michael,
    Thanks a bunch for your reply. I have been going crazy over this and
    your reply
    made my day.
    I still have a slight problem with this though. This does not seem to
    give me
    the Client IP etc. Any ideas to get that?
    Thanks again for the code. It was a great help.
    Sridhar.
    PS BTW, I found another way of getting the same info:
    HttpServerBinding httpBinding = (HttpServerBinding) messageContext.getProperty("__BEA_PRIVATE_BINDING_PROP");
    Enumeration headerEnum = httpBinding.getRequest().getHeaderNames();
    while (headerEnum.hasMoreElements()) {
    String header = (String) headerEnum.nextElement();
    System.out.println("header = " + header);
    System.out.println("header Value = " + httpBinding.getRequest().getHeader(header));
    But, I am guessing BEA doesn't want me to go this route as they might
    change the
    implementation and my code will immediately break.
    "Michael Wooten" <[email protected]> wrote:
    Hi Sridhar,
    You should be able to get at the HTTP Headers that were sent by theconsumer
    of
    your web service, by using the following code in your JAX-RPC handler:
    import java.util.Iterator;
    import javax.xml.rpc.handler.MessageContext;
    import javax.xml.rpc.handler.soap.SOAPMessageContext;
    import javax.xml.rpc.JAXRPCException;
    import javax.xml.soap.MimeHeaders;
    import javax.xml.soap.MimeHeader;
    import javax.xml.soap.SOAPMessage;
    public boolean handleRequest(MessageContext mc)
    SOAPMessageContext messageContext = (SOAPMessageContext) mc;
    try
    SOAPMessage original = messageContext.getMessage();
    MimeHeaders mimeheaders = original.getMimeHeaders();
    MimeHeader mimeheader = null;
    Iterator iter = mimeheaders.getAllHeaders();
    for (; iter.hasNext();)
    mimeheader = (MimeHeader) iter.next();
    System.out.println("name=" + mimeheader.getName() + ", value="
    + mimeheader.getValue());
    catch (Exception e)
    e.printStackTrace();
    throw new JAXRPCException(e);
    Here's the output from the System.out.println():
    name=Content-Type, value=text/xml
    name=SOAPAction, value=""
    name=User-Agent, value=Java1.4.1_05
    name=Host, value=localhost:7001
    name=Accept, value=text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
    name=Connection, value=Keep-Alive
    name=Content-Length, value=505
    Regards,
    Mike Wooten
    "Sridhar" <[email protected]> wrote:
    Hi,
    I have been trying to get the Header info in my custom Handler unsuccessfully
    for the past few days.
    Upon web search, I am constantly redirected to use a Servlet filterto
    get the
    headers. I have to use the Weblogic Native SOAP engine and not any
    Servlet
    Filters.
    In Axis, I can do a (HttpServletRequest)messageContext.getProperty(HTTPConstants.MC_HTTP_SERVLETREQUEST)
    which returns the HttpServletRequest and then I can get the headersoff
    that.
    I can't find something similar in WebLogic. Any ideas?
    Any help in helping me track this problem down would be much appreciated.
    Thanks,
    Sridhar.

  • Create XML with digital sign and SOAP header...

    Hi.
    With ABAP, I need create an XML file iwith SOAP envelope. The message has to be signed and the sign data saved in the ws-security part in the SOAP header. I have to sign the file with a X509v3 certificate in base64.
    Somebody can tell me how can create the SOAP header and sign it with ABAP for the XML.
    Thanks.

    Please refrain from implementing WS-Security yourself.
    NWAS ABAP 7.x provides support for WS-Security - in both roles, as Consumer and Provider.
    The right approach is to generate a proxy based on a given WSDL.
    What kind of (message-based) authentication is demanded by the WS Provider?
    Other info source: see https://wiki.sdn.sap.com/wiki/display/Security/SingleSignonforWeb+Services
    Edited by: Wolfgang Janzen on Jul 8, 2009 12:11 AM

  • Sending parameters through SOAP header

    Hi all..
    Iam using web services model in my web dynpro application. How will i send some paramters/info in SOAP header??

    Hello Sujesh,
    In your last thread of SOAP Headers I tried to paste the link containing some information on it's usage, but today when i navigated to the link it took me to different location , so the below message
    The SOAP Headers Protocol
    Definition
    In some scenarios, the client may need to add SOAP headers to the request. This can be done using the SOAP headers protocol, which can be accessed by SOAP Web services. This protocol is not available to Web services with HTTP GET or POST bindings.
    The SOAP headers protocol is a client runtime plugin located in com.sap.engine.services.webservices.jaxrpc.wsdl2java.features.builtin.SoapHeadersProtocol.
    Use
    To get an instance of the protocol, use:
    SoapHeadersProtocol headers = (SoapHeadersProtocol) ((BaseGeneratedStub) client)._getGlobalProtocols().getProtocol("SoapHeadersProtocol");
    Structure
    The Service Endpoint Interface (SEI) is typecasted to BaseGeneratedStub, which exposes the internal plugin methods of the client:
    com.sap.engine.services.webservices.jaxrpc.wsdl2java.BaseGeneratedStub
    The basic methods of the SOAP headers protocol are as follows:
    ·        headers.setOutputHeader(new Name("urn:myuri.com","myHeader"),value) – With this method you can pass, as a value, any schema-derived element type that is generated by the proxy generator for your client or generic DOM element.
    Remember that all header elements must be namespace-qualified and, if you use a schema-derived value, it must be declared by the schema element as follows:
    <xs:element name="myHeader" namespace="urn:myuri.com" type=”tns:myType”/>
    ·        The methods for getting response headers are as follows:
    ¡        headers.getInputHeader(headerName:QName):Element – Returns the DOM element with the header content response
    ¡        headers.getInputHeader(headerName:QName,headerClass:Class):Object – Deserializes the schema-declared header in the response class
    and once again the link http://help.sap.com/saphelp_nw04/helpdata/en/45/f957507cb343f78e818c50620ed5ca/frameset.htm
    Good Luck,
    Dharmi

Maybe you are looking for

  • Substitution variable in the functions

    Can we call substitution variable in the functions in essbase calc scripts for example fix (@IRSIBLINGS(&mois_en_cours_reprev));

  • Wifi issue: always turned off on startup

    I think this is an OS bug: the wifi is always off on startup, even if it was on before shutdown/restart. It is not life-threatening, but a sign of some housekeeping needed in the OS. Or I should just delete some plist? (Reading the cries about 10.5.6

  • How to set screen resolution on Apple TV Gen2

    This is my first bad out of the box experience with an Apple product. I got my brand new Apple TV Gen 2 and hooked it up to our Sony Receiver/TV. Plugged everything in. Turned it on and I got the screen but am not able to change resolution. With the

  • Need to change my online number

    I have recently purchased an online number based in London prefix numbers. However, this number has been proven to be an ex-scam number appearred in all anti-scam sites all over the Internet. I accept several calls a day addressing the previous owner

  • Replace a string with another string in a file

    I have to replace a string with another string. Say for example in a html file it got a line like, <a href="##"></a> now i want to replace this ## with the full derived path like "c;\\sample folder\\sample subfolder\\samplefile.html" can someone help