XI APIs to access SOAP Header Tags
Hi Forum,
The way we use DynamicConfiguration class from com.sap.aii.mapping.api.* API, to access file names etc,
is there classes available for accessing other tags in the SOAP Header, for example ReliableMessaging, PerformanceHeader, etc
U can look into Adapter Specific attributes for soap adapter also. If you want to transfer header fields, set the relevant indicator for Variable Header in the SOAP communication channel. This is generic for header fields. Not sure about the particual fields
Regards,
Prateek
Similar Messages
-
Hi,
I'm using with great success JDEV9.0.3prod for create and deploy web services. I maked all with wizard.
All work, but now I would read and manage SOAP header tag.
This is the question: how is possible to read the header tag of the SOAP Message, using jdev wizard?
Any help would be very appreciated.
Thank in advanced.
massimoUnfortunately, the JDev wizards don't help access the header characteristics, yet.
It is further complicated in that the Oracle9iAS Web Services implementation right now does not have a good way to get the header information, however, the Apache SOAP implementation that also ships with Oracle9iAS does.
As we go forward to JAX-RPC the API's for the header will be exposed. If absolutely necessary now, you can use the Apache SOAP implementation (we are actually at 2.3.1) so the doc at xml.apache.org on Apache SOAP and pointers to headers should give you an idea of how to approach it.
Sorry I don't have any code samples to point you at.
Mike. -
Accessing SOAP header information in a custom adaptor module
Hi Guys,
Could anyone point me in the direction of information on how to access the SOAP:Header element when writing a custom adaptor module for a http/ SOAP communication channel?
I'm trying to add some WS-Security stuff which isn't available in XI 3.0.
Many thanks,
JohnThe solution is as follows:
Mark as Do Not Use SOAPEnvelope in the communication channel.
It may be possible to use the SAP implementation of MessageFactory, SOAPEnvelope etc., I forced XI the Apache Axis implementation, a thread on which can be found here Link: [Accessing SOAP header information in a custom adaptor module;
The SOAP Envelope is created by
javax.xml.soap.MessageFactory mf= org.apache.axis.soap.MessageFactoryImpl.newInstance();
This doesn't work it creates a com.sap.engine.services.webservices.jaxm.soap.SOAPMessageImpl
org.apache.axis.message.SOAPEnvelope env = new org.apache.axis.message.SOAPEnvelope();
org.apache.axis.Message iSoapMessage = new org.apache.axis.Message(env);
SOAPMessage sm = iSoapMessage;
SOAPBody iBody = se.getBody();
if(iBody!=null)
iBody.addDocument(iDoc);
addDocument failed for some reason when called in XI returning
Exception caught by adapter framework: Exception in method process.
The code below is copied straight from the addDocument method, but it works.
org.w3c.dom.Element iDocRoot= iDoc.getDocumentElement();
org.apache.axis.message.SOAPBodyElement bodyElement = new org.apache.axis.message.SOAPBodyElement(iDocRoot);
iBody.addChildElement(bodyElement);
In order to get a document representation of the Envelope you can use
Document iEnvelopeDoc = ((org.apache.axis.message.SOAPEnvelope)env).getAsDocument();
You are now in a position to add or adjust the SOAP Envelope as your require. It enabled me to add WS-Security information to a message.
It is normally possible to use javax.xml.transform.Transformer on the various classes SOAPEnvelope, SOAPBody etc. as they implement Node. However doing this in XI caused a crash.
The final document can be then be set in the xmlPayload before being sent out the door.
Hope this helps someone,
John -
Hi All,
Is there any way out to eliminate the tag <SOAP:Header/> while sending the message to a legacy system using a receiver SOAP adapter.
<SOAP:Envelope xmlns:SOAP='http://schemas.xmlsoap.org/soap/envelop
e/'>
<SOAP:Header/>
<SOAP:Body>
Need to eliminate the SOAP:Header tag while sending...Is this possible in any way..
Thanks
AmitHi All
We have a empty SOAP Header tag which needs to be suppressed so that the target system receives the data...
Any way we can achieve this without going in for adapter module..
I have tried with Do not use SOAP envelope, Encoded headers...All options dont yield the desired result..
It is an empty <SOAP Header/> tag which we want to eliminate.. -
Could not access SOAP header - sending sopa message using weblogic
i am using saaj to send a SOAP message ,through weblogic, i am getting an error like below
Could not access SOAP header
what should i do for sending a soap message using weblogicYou're going to have to provide many more details than that. If it's useful, you could go here and read all the documentation books covering web services.
-
Soap Sender Adapter Preserve And Access Soap Header
Hi,
I would like to preserve the Soap Header created by a client and access it in a mapping using the the Soap Sender Adapter (SP16). Does anybody know how to do this?
Kind regards,
HeikoHello Udo,
I have found a solution to this problem. It is possible to add header entries to the DynamicConfiguration which is available by an API:
soapMsg.append("<SOAP-ENV:Header>");
soapMsg.append("<SAP:DynamicConfiguration xmlns:SAP=\"http://sap.com/xi/XI/Message/30\" xmlns:SOAP=\"http://schemas.xmlsoap.org/soap/envelope/\" SOAP:mustUnderstand=\"1\">");
soapMsg.append("<SAP:Record namespace=\"http://sap.com/xi/XI/System/SOAP\" name=\"SRmsUser\">test</SAP:Record>");
This code snip shows Java client code to add an element to the SOAP header which corresponds to the DynamicConfiguration. In XI it will be accessable using the respective API.
Cheers,
Heiko -
Hey there,
is there a way to read out the custom header elements of the invoking soap message in a process? E.g. a client creates a soap message, adds optional information to the header and sends it to the bpel server. In order to react on that information, the process needs to access these data.
Thanks!Another example to look at for this is the Sabre HotelShopFlow (Iâll see if I can send you this sample - please email me). All the interesting work is done in the WSDL for the service. If the WSDL for the service defines a multi-part input message, where some parts are mapped to the SOAP header and some to the soap body, then you are in good shape and can set those parts in BPEL like any other input message data. From the enterprise.wsdl in salesforce demo:
<operation name="describeSObject">
<soap:operation soapAction=""/>
<input>
<soap:header use="literal" message="tns:Header" part="SessionHeader"/>
<soap:body parts="parameters" use="literal"/>
</input>
And then from the BPEL code, the SessionHeader is set with:
<copy>
<from variable="loginResponse" part="parameters" query="/salesforce:loginResponse/salesforce:result/salesforce:sessionId">
</from>
<to variable="headerRequest" part="SessionHeader" query="/salesforce:SessionHeader/salesforce:sessionId"/>
</copy>
Note that if the WSDL does not define the header data as a messageType, then you will need to create your own local copy of the WSDL for the service and edit it to be what you want.
(taken from one of the devloper responses to this question already available). Please let me know if you can move forward with this response. -
Accessing Soap header in webservices
Hi,
My webservice needs to read a soap header "locale" and do some processing based on this soap header.
I understand the concept of handlers..but anywhere I see examples, the handler handles it and returns the data back.
My requirement is that once this locale is retrieved, each of the webservice method should be able to read this locale, and do some processing based on that, as they need to return the localized data.
I am not sure if I am missing something, but not yet able to find a direct way of doing it..
Any response would be highly appreciated..
Thanksuser10455639 wrote:
Yes I can..what I still dont understand from yourr email is why are you askign this..
"if you can get the soap header"
Because any header we should be able to retrieve from this context...Because I saw the following statement from [JavaDoc | http://e-docs.bea.com/wls/docs103/javadocs/weblogic/wsee/jws/JwsContext.html#getInputHeaders()].
<<<<<<<<<<
....The SOAP headers used by WebLogic Workshop to manage conversations are included in the list of headers returned.
<<<<<<<<<<
If it works, then just use it :) because it is public supported
Edited by: LJ on Apr 23, 2009 10:04 PM
Edited by: LJ on Apr 23, 2009 10:21 PM -
Access SOAP:Header section
Hello,
I need to call a WebService with some extensions in the SOAP:Header. I don't find a solution without a custom develop Adaptermodul which renders the whole SOAP request and uses the SOAP Adapter without the SOAP functions.
What do you think ?
Regards,
GeraldHi,
We have the same problem with SP14.
Looks like the soap adapter can't handle soap headers correctly.
A workaround may be to use the http adapter instead and generate the xml envelope messages for request and parsing the response. We have tried this for document based soap and it works.
Obbviously you would like to have the soap adapter fixed so it can support soap headers.
Best regards otto -
How to access SOAP header without using SOAP message handler
I have a requirement to retrieve SOAP header information within each web services operation. So I can't use SOAP message handler. Is there any way to do that? BTW, I am not using workshop.
Thanks.Howeve how can I put data into soap header in UDF? DynamicConfiguration won't work for soap header, right?
Which data do you want ot put into the Header section.
ASMA or Dynamic Configuration is used to read/ put the details from/ into the header elements.....
Refer: http://help.sap.com/saphelp_nw04/helpdata/en/43/0a7d1be4e622f3e10000000a1553f7/frameset.htm
From the help section:
This information is not located in the payload of the message, but in additional message header fields.
Regards,
Abhishek. -
Hello,
How can I implement a web service in jdev that extracts some elements from the SOAP header ?
How can I implement a web service proxy in jdev so that it inserts elements in SOAP header?
Thank you.
The operation WSDL looks approx like this:
<operation name="SoapDDXML">
<soap:operation soapAction="someaction"/>
<input>
<soap:body
use="encoded"
namespace="ns"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
parts="psXML"/>
</input>
<output>
<soap:Header>
<OurCredentials xmlns="ns">
<UserName>string</UserName>
<Password>string</Password>
</OurCredentials>
</soap:Header>
<soap:body
use="encoded"
namespace="ns"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
parts="Result"/>
</output>
</operation>Also facing the same problem - has anyone found an answer?
Thanks, -
Access to SOAP Header/SOAP Envelope in OSB
We have a need where we need to copy the SOAP header request to SOAP header response. Is there a way to access SOAP Header/SOAP Env in OSB ?
Thanks,
Pavan
Edited by: user10413378 on Mar 6, 2010 7:14 AMThere is $header variable with headers:
http://download.oracle.com/docs/cd/E13159_01/osb/docs10gr3/userguide/modelingmessageflow.html#wp1093911
You can pass all headers through using "Get All Headers" option in Proxy settings and Transport Headers - Pass all Headers in your flow:
http://download.oracle.com/docs/cd/E13159_01/osb/docs10gr3/userguide/modelingmessageflow.html#wp1125345 -
Remove Soap Header while calling a WS from BPEL 11g
Hi
My requirement is to remove the entire SOAP Header tag in the invoke activity. How this can be achieved? Please help
thanks
SeshaNote sure if this possible.. but just wondering if you can try using <bpelx:remove> extention to delete the soap header variables..
Other viable option is to write SOAP Message handlers on your outbound webservices... -
Remove XI-part of SOAP Header in Axis Adapter
Hi folks!
We are running a PI 7.11 and use the SOAP Axis Sender Adapter in a synchronous SOAP Web Service scenario. Our challenge is that in our response we definitely need a SOAP Header tag, but it should be empty like this <soapenv:Header/> or this <soapenv:Header></soapenv:Header>
We tried to achieve this with the Axis Handler com.sap.aii.axis.soap.HeaderRemovalHandler. But regardless of the parameters we provide to this handler it always removes the complete SOAP Header. On sample is to remove the PI-specific Main header tag from SOAP Header:
name.1=Main
namespace.1=http://sap.com/xi/XI/Message/30
We also tried it only with namespace. But always the same sh... happens: The SOAP Header is removed completely.
Any ideas?
Thanx very much in advance!
Regards,
VolkerHi Stefan!
Thanx for your reply. We found that Axis handler mentionedby me in SAP Note 1039369 "FAQ XI Axis Adapter" .
But please tell me how to parameterize the java:com.sap.aii.axis.xi.XI30InboundHandler to ensure that the XI part of SOAP header is removed, but not the complete SOAP header.
Thanx in advance!
Regards,
Volker -
Hi Experts,
My scenario is to access the HEADER element in the incoming SOAP Header and use it as a condition for Receiver determination.
Can somebody give example of
1) XSLT / java code which can be used to access SOAP Header elements.
2) How use this to determine the receiver.Hi,
You can achieve this by setting the Adapter-Specific Message Attributes under advanced tab in your CC.
check below link for the same..
http://help.sap.com/saphelp_nw70ehp1/helpdata/en/fc/5ad93f130f9215e10000000a155106/content.htm
Regards,
Sarvesh
Maybe you are looking for
-
Multiple instances of the same entity bean?
I am designing a J2EE application that is made up of a number of separate components that each have a well-defined responsibility. Each component is made up of one or more J2EE components (web clients and EJBs). I want to design the application such
-
*Hai Experts!* *I am facing an issue in Quality server. The scenario is SOAP to JDBC. Which is working fine in Development server. But in QA the mapping is not happening and the Following error is displaying in the Trace view.* *Can any one help me i
-
Sales Invoice no & date is not showing in J2I6 Report
Hello Experts, I am running J2I6 report for RG23A PART2 register. In this report Duty like BED, Ecess & HEcess is showing in all case but for credit utilization i.e. sales part INVOICE no & Invoice no is not showing in Report.We have applied Enhance
-
Changing the nextval of a sequence using alter sequence
Hello experts, Is there any option to modify the nextval of a sequence using alter sequece command? Thanks in advance. J.Prakash
-
Select Query Based on date condition
Hi , Is it Possible. i want to run select query based on date condition. Eg... if the date between 01-jan-01 and 01-jan-05 then select * from table1; if the date between 02-jan-05 and 01-jan-08 then select * from table2; Becaz i have data in 2 diffre