on 03-21-2011 12:03 PM
Hi,
I have a requirement to send multiple messages to PI using same SOAP Sender Channel; I referred to help.sap.com and found that there is no restriction in re-using a SOAP Sender Channel.
However when I sent a message using SAP SOAP client, namespace for soap envelope got added which is failing the messages in PI.
Correct message:
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<ConsumerData>
<UserId>12345</UserId>
<AccountData>9561234</AccountData>
</ConsumerData>
Incorrect message (in SXMB_MONI):
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<ConsumerData xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/">
<UserId>12345</UserId>
<AccountData>9561234</AccountData>
</ConsumerData>
1) How to avoid getting the URL (xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/") in the message?
2) Is it really possible to re-use the SOAP Sender Channel to get different types of messages (from same sender party & service)?
I did make use of Do Not Use SOAP Envelope in the channel and &nosoap=true in URL; but no luck.
Please help. I need to get this approach working
Thanks
Pankaj
>>1) How to avoid getting the URL (xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/") in the message?
Dont worry about extra adding soap namespace. This issue might be specific to soap client itool in your case SAP SOAP CLIENT. If you use other soap client tools like XMLSPY or SOAPUI or SOAPSONAR, this might not occur. Test with other tools too.
>>2) Is it really possible to re-use the SOAP Sender Channel to get different types of messages (from same sender party & service)?
Yes it is possible.
But you cannot reuse in the following situation.
Example:
a) the same channel for both synchronous and asynchronous
b) if you use some messages for http and some for https.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi,
I will try to use different tools (may not be possible due to security restrictions).
The basic aim is to:
1) Use one Sender channel per source system; so less number of objects.
2) to keep the PI URL common for one source system; PI URL dependent only on Sender Party, Sender Service and Sender Channel, no mention of Sender Interface Name in the URL
I am using the format http://host:port /XISOAPAdapter/MessageServlet?channel=p:s:c (Note - 856597).
I hope I can achieve the requirement in point 2 without any issue.
Thanks
Pankaj
>>1) Use one Sender channel per source system; so less number of objects.
Yes, you can reuse one sender channel for many WSDL scenarios.
>>2) to keep the PI URL common for one source system; PI URL dependent only on Sender Party, Sender Service and Sender Channel, no mention of Sender Interface Name in the URL I am using the format http://host:port /XISOAPAdapter/MessageServlet?channel=p:s:c (Note - 856597).
I hope I can achieve the requirement in point 2 without any issue.
This is not possible. WSDL URL will be different for every interface. Because it is also specific to sender interface and sender interface namespace. When you create you have to specify these variables too.
Example:
When you create initially you input only first
http://host:port /XISOAPAdapter/MessageServlet?channel=p:s:c
and subsequent screen you will need to input sender service interface and interface namespace.
Hope that helps.
Hi,
This is not possible. WSDL URL will be different for every interface.
The problem the legacy system which will send message to PI can include only one URL in its code and hence the need to generate one URL per source system.
If it is really not possible to use a common URL then I am lost as how to solve the problem
Thanks
Pankaj
>>The problem the legacy system which will send message to PI can include only one URL in its code and hence the need to generate one URL per source system.
Dont understand your statement generate one URL per source system
What I meant is you create webservice using soap sender and provide wsdl to the client or legacy system.
Example: Interface A Using your webservice get database query information (synchronous and HTTP)
Example Interface B Using your webservice get mortgage information (synchronous and HTTP)
For Interface A and B, You can use the same soap sender communication channel but you might have to create different wsdl for these two. so you will provide 2 WSDL to the client.
In your WSDL, if you search for the <soap:address location xml tag, you will find URL that has different sender interface and namespace details.
Note: If you deal with one interface, then you dont have any issue.
Hope that helps.
Hi Pankaj,
>>>>1) How to avoid getting the URL (xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/") in the message?
have a look at these blogs, it might be helpful to you.
/people/stefan.grube/blog/2007/02/02/remove-namespace-prefix-or-change-xml-encoding-with-the-xmlanonymizerbean
/people/sameer.shadab/blog/2005/12/05/how-to-remove-namespaces-in-mapping--xi
Regards,
P.Rajesh
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi,
The references do not seem to help. I cannot use the module as it is a SOAP Sender CHannel and cannot be extended to add modules.
I cannot use the second blog as I do not use a DT/ MT; I am using an external Definition which does not have a namespace associated with the root tag. The namespace that is shown above is due to the use of SOAP Channel.
Thanks
Pankaj.
User | Count |
---|---|
93 | |
10 | |
10 | |
9 | |
9 | |
7 | |
6 | |
5 | |
5 | |
4 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.