cancel
Showing results for 
Search instead for 
Did you mean: 

Async Service Issue

Former Member
0 Kudos

Hi,

Slightly strange one this. In summary I have an Outbound/Async interface for which I generated a WSDL:

As circled you can see it is an outbound, asynchronous interface. However, when the WSDL is consumed by a particular application the message hits PI as follows:

Simple question is, how is it possible for a service defined as asynchronous in PI to be consumed in such a way that it hits PI as a synchronous request ?

Cheers,

PaulC.

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

Hi,

Usually the wsdl that we generate in ID by clicking tools-->displaywsdl--propose url... will have no info about quality of service.while trying from source system or via soap ui some times by default it takes as synchronous .

Sol:

Just open the wsdl using editplus and at soap:address section after the service interface add as below.

Before :

<soap:address location="http://hostname:50300/sap/xi/engine?type=entry&version=3.0&Sender.Service=ArcFMDesigner&Interface=ur..." xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"/>

After:

<soap:address location="http://hostname:50300/sap/xi/engine?type=entry&version=3.0&Sender.Service=ArcFMDesigner&Interface=ur..." xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"/>

save the wsdl.Now it will acts as asynchronous.

Regards

Venkat

Former Member
0 Kudos

Venkat/Satish,

Thanks for your input. I think you are both saying the same thing i.e. set "Quality of Service" on the sender HTTP adapter to "Exactly Once".

I just assumed that the definition you gave in the Message Interface would be sufficient. Didn't realise that you needed to set this param to enforce sync or async.

(Venkat - Yes, I have noticed this from SOAP UI as well i.e. it always defaults to synchronous.)

Cheers,

PaulC.

Former Member
0 Kudos

Venkat,

Within the SOAP sender adapter I changed the 'Quality of Service' value to "Exactly Once". However, this seemed to make no difference. The WSDL generated does not make reference to the 'Quality of Service'. As such I'm not sure what the purpose of this field is as it doesn't seem to impact the WSDL.

However, when I do what you suggested and manually edit the WSDL to insert

&QualityOfService=ExactlyOnce it works. Question I suppose is why should I need to manually edit. Why can't I achieve the same result via the config directory.

Cheers,

PaulC.

Former Member
0 Kudos

Hi Paul,

When we create wsdl file and end point  from ID part .

And trigger from testing  tool called soapUI or xml spy then it directly hits to integration engine of PI .

Thats what there is no impact on sender soap channel .

If you trigger from ws navigator then it impacts on soap sender channel .

Change the soap sender channel as Exactly once then recreate wsdl file then diffidently it will work.

thanks and regards,

Anup Banerjee

Former Member
0 Kudos

Hi,

I think I may have found out why changing the Sender Adapter makes no difference. The WSDL generated via Tools/Define Web Service is of the following format:

"http://SERVER:PORT/sap/xi/engine?type=entry&version=3.0&Sender.Service=SENDER&Interface=NAMESPACE:OU..."

i.e. there is no reference at all to the sender communication channel.

This being the case would I be correct in thinking that the sender channel is therefore completely ignored and is actually not even needed ?

For info the SAP help site states that the WSDL should have a soap address location of:

"http://host:port/XISOAPAdapter/MessageServlet?channel=party:service:channel"

In this case changing the channel would work because it is explicitly referenced in the WSDL.

Cheers,

PaulC.

Former Member
0 Kudos

Hi Paul,

For your clear understanding ...

When we use the WSDL wizard in the Integration Directory and have clicked on "Propose URL" ,the URL does not point to a sender SOAP adapter channel; it is the URL of the Integration Server instead.

The reason for this is an undocumented feature of the Integration Server. We cannot send only XI messages to the Integration Server; we have the option to send standard SOAP messages as well.

The Web Service Wizard of the Integration Repository creates a WSDL concerning this URL and this SOAP action automatically. Only for asynchronous calls we need to change the URL inside the WSDL file with an editor and add &QualityOfService=ExactlyOnce.

Advantage

When you send SOAP messages directly to the Integration Server, you reduce the message load on the adapter engine. This can improve the performance.

Approach2:

If the soap messages wants to pass through SOAP adapter, In WSDL wizard in the Integration Directory and have to avoid to clicking on "Propose URL" in the second screen, instead have to give the customized URL does which should point to a sender SOAP adapter channel as below.

The other parameters are described below.

After activating the SOAP adapter channel, you can send SOAP messages to the following address:

http://<host>:<j2ee-port>/XISOAPAdapter/MessageServlet?channel=<party>:<service>:<channel>

If the SOAP adapter channel belongs to a service without party, the address is as follows:

  http://<host>:<j2ee-port>/XISOAPAdapter/MessageServlet?channel=:<service>:<channel>

  http://<host>:<j2ee-port>/XISOAPAdapter/MessageServlet?channel=<party>:<service>:<channel>

Advantage

When you send SOAP messages directly to the Soap Adapter, we can have the provision to have monitored the adapter level message monitoring. 

It supports the attachments, by selecting Keep Headers in the SOAP adapter, the SOAP adapter transforms a SOAP message with attachments to an XI message with attachments and the other way around.

Restrictions

  When you send SOAP messages to the SOAP Adapter, it is the message load on the adapter engine. This cannot improve the performance.

Regards

Venkat

Answers (1)

Answers (1)

Former Member
0 Kudos

Hi Paul,

Can you check the processing mode what you configured in the communication channel.

Thanks,

Satish.