Skip to Content
avatar image
Former Member

PI 7.1 Adapter Module Development - Identify Service Provider Name

Hi Experts,

here's another PI 7.1 Adapter Module Development issue I hope you can help me to resolve. It's about identifying Request's receiver service.

Scenario at a glance:

Adapter Modules placed in the modules chain at request and response time in a synchronous Scenario:

- Request: SOAP Axis to RFC

- Response and Fault Response: RFC to SOAP Axis

The issue is to find out the Service Provider (that is: ToService from Request's point of view and FromService from Response's point of view) in the SOAP Axis Adapter Module at Response time.

The coding snippet ...

// Try to get "service provider" ID

String zv_vkFromService = zv_piMsg.getFromService().toString();

String zv_vkToService = zv_piMsg.getToService().toString();

... returns the following values:

START - Request SOAP Axis Adapter;

FromService = Axis Client

ToService = null

IN - Request RFC Adapter:

FromService = Axis Client

ToService = SAP Backend

OUT - Response RFC Adapter:

FromService = SAP Backend

ToService = Axis Client

END - Response SOAP Axis Adapter:

FromService = Axis Client

ToService = null

Thus RFC Adapter returns consistent and logical data to me, but SOAP Axis Adapter returns ... to be honest ... "****!".

By the way: Using DynamicConfigurationBean features (like e.g. message.receiverService) to access these information leads to the same problems/results.

That means that only in the RFC Adapter Module the Service Provider is well-known at both points in time: Request and Response.

In the SOAP Axis Adapter Module the Service Provider is never known, but there (and only there) I need it for logging purposes.

Because if we use Proxy technology instead of RFC we have no chance to use Java Adapter Modules to obtain the Service Provider information.

My question is now: Is there any (maybe undocumented) way to obtain the Name of the request's Receiver Service (=name of Service Provider) in the SOAP

Axis Adapter Module at response time.

That this is not possible at Request time is quite clear to me, because at this time receiver determination has not taken place yet.

Any ideas on how to solve this issue?

Thanx in advance!

Regards,

Volker

Add comment
10|10000 characters needed characters exceeded

  • Follow
  • Get RSS Feed

3 Answers

  • avatar image
    Former Member
    Aug 17, 2009 at 01:32 PM

    Hello Kolberg,

    You are able to get the service provider name at RFC Adapter Module at reponse time, try to assign/append that to the payload's any element and from your SOAP Axis Adapter get the payload element and from there get the service provider name.

    Regards,

    Prasanna

    Add comment
    10|10000 characters needed characters exceeded

    • Former Member Former Member

      Hi Stefan! Hi Netweaver Expert!

      That does not really help me. Like already mentioned in my original post the really important and only helpful action times are START and END, that is the request messages passes the SOAP Axis Adapter and the Response Messages again passes the SOAP Axis Adapter. The action times IN and OUT are applicable only in case of RFC. If we use XI Proxy we won't have the chance to implement any Adapter Module. Thus I need to gather ALL logging relevant information in the SOAP Axis Adapter.

      The funny thing is that in the Integration Engine (ABAP) as well as in the Message Mapping Runtime the information about sender and receiver of the response are also still "correct":

      START - Request SOAP Axis Adapter:

      FromService = Axis Client

      ToService = null (is quite logical, because Receiver Determination has not been done yet)

      IN - Request RFC Adapter - OKAY:

      FromService = Axis Client

      ToService = SAP Backend

      OUT - Response RFC Adapter - OKAY:

      FromService = SAP Backend

      ToService = Axis Client

      Integration Engine (ABAP) and Message Mapping Runtime - OKAY:

      FromService = SAP Backend

      ToService = Axis Client

      END - Response SOAP Axis Adapter - NOT OKAY:

      FromService = Axis Client

      ToService = null

      Only that f... SOAP Axis Adapter at Response Time makes my life hard ...

      The only workaround I see here is to "save" the relevant information in a "dummy" UDF in Message Mapping. But that's I think a very ugly solution. It would be better to find a way to gather the correct information about sender and reciever in the Adapter Module.

      Any ideas?

      Regards,

      Volker

  • avatar image
    Former Member
    Aug 05, 2009 at 06:19 AM

    ... any ideas in this forum?

    Thanx!

    Regards,

    Volker

    Add comment
    10|10000 characters needed characters exceeded

  • avatar image
    Former Member
    Sep 23, 2009 at 02:43 PM

    Solved by implementing workaround: UDF in response mapping "saves" correct service names in DCH. Adapter Module in SOAP Axis Adapter then reads DCH.

    Add comment
    10|10000 characters needed characters exceeded

    • Former Member Stefan Grube

      Hi Stefan!

      I've done it. Currently it is an ongoing process ... but I'm afraid in the end the answer will be more or less exactly: Works as designed. Got this answer too often in the past, when addressing such special kinds of issues obviously only I have 😉

      Regards,

      Volker