Skip to Content

Problem with SOAP LookUp + LoopBack Interface

Nov 21, 2016 at 07:23 PM


avatar image

Hello experts,

I’m having a problem while trying to use the SOAP LoopBack technique to start a second interface during runtime. We are with SAP PI 7.5 SP04 with a Dual Usage installation.

Explaining the current design of the whole interface:

Main Interface (Synchronous):

ECC (proxy) <-> PI <-> External web service (SOAP)

Secondary Interface (Asynchronous):

LookUp -> PI -> LoopBack -> PI -> ECC

After receiving the response from the web service (main interface), I’ve created a JavaMapping which objective is to prepare a second message (using some of the received data) and start an Asynchronous Interface [PI -> ECC (Proxy)]. The remaining data of the response message must follow it’s normal course through synchronous response.

In order to implement the LoopBack I’m using the SOAP Lookup API which is pointing to a dummy Business Component “BC_PI”, the interface “SI_MsgContent_Async” and a receiver Communiation Channel “CC_SOAP_RCV” (all the names have been simplified to better illustrate). The receiver CC points to a sender CC “CC_SOAP_SND” using http://<serve>:<port>/XISOAPAdapter/MessageServlet?channel=SPB:BC_SPB:CC_SOAP_SND url.

Both interfaces are being executed, but the Async interface is started without any payload. Which leads to an error at the Receiver Determination phase, since we have multiple receiver rules based on the content of the message that should have arrived. I know that the receiver CC is being called with a valid payload, because if I send an invalid one an xmlParse exception gets raised at the Receiver CC.

Further information: Running a trace with XPI I could identify two exceptions raised:

  • 1)“[EXCEPTION] Couldn't retrieve outbound binding for the given P/S/A values: FP=;TP=;FS=Mapping;TS=BC_PI;AN=SI_Msg_Content_Async;ANS=urn:xxx::receive; in the current context [Classic]. ”
  • 2)“Error occurred calling adapter
    java.lang.NullPointerException: while trying to invoke the method of a null object loaded from local variable 'resPayload'”

The second error seems to be after the Receiver Determination error of the Async Interface, and since not even an ack is replied an exception is raised.

Form the first error, I’ve already tried to create a dummy receiver agreement pointing to the Receiver CC, but it didn’t solved the issue.

I could see that the interface gets started without a payload message looking SXI_MONITOR and with PIMON, which logs an error for Integration Engine informing “Invalid Message Text. Blank message text.”

Does anyone have bumped into a similar error? Any Suggestions?

Kind Regards,

Yuri Gaidarji.

10 |10000 characters needed characters left characters exceeded
* Please Login or Register to Answer, Follow or Comment.

1 Answer

Evgeniy Kolmakov Nov 22, 2016 at 06:17 AM

Hi Yuri!

Try to set "Sender uses virtual receiver" in your async sender's Sender Agreement.

Regards, Evgeniy.

Show 1 Share
10 |10000 characters needed characters left characters exceeded

Hi Evgeniy,

Thanks for the suggestion, but sadly it did not changed my problem. Let me explain what I've done.

1) I've deleted my old Sender Agreement and created a new one selecting "Sender uses virtual receiver".

2) Cleared the CPA Cache and started the interface.

The same exceptions occurred.

I've even deleted and created a new Receiver Determination with "Sender uses virtual receiver" option selected, but it didn't changed the error.

It seems that PI loses the message payload somewhere between the processing at the Adapter engine for the Receiver CC and the call to the sender CC using http://<serve>:<port>/XISOAPAdapter/MessageServlet?channel=SPB:BC_SPB:CC_SOAP_SND url.