cancel
Showing results for 
Search instead for 
Did you mean: 

Lookup Service channels are not updated

helmut_skolaut3
Active Participant
0 Kudos

We have build a mapping (it's in several scenarios, in one scenario it's a graphical map where the Lookup service is using in an UDF, in the 2nd scenario it's a java mapping) and we are consuming the Lookup Services (Lookup Service).

Then I made a mistake in the Channel configuration and I have corrected it. But for some reason the change is not been taken into account for the mapping. Looks like the channel is cached somewhere and I have not found the place where I can refresh the cache.

What I have done (and what has not helped):

- Full CPA Cache Refresh
- Checked Cache Notifications
- Redeployed the affected Graphical Map/Java Map (changed comment and activated again).

Has anybody an idea?

Looks like the behavior is not in all systems, because I have spoken to a business partner and he said, he cannot reproduce the problem in his environment.

Regards
Helmut

PS: I am on PI 7.5

Accepted Solutions (0)

Answers (4)

Answers (4)

juan_vasquez2
Active Participant
0 Kudos
Hello Helmut 


Try this


Channel channel = LookupService.getChannel(CommunicationComponentString, ChannelString);
SystemAccessor accessor = LookupService.getSystemAccessor(channel);
// *** take care with namespaces in varXML
InputStream inputStream = new ByteArrayInputStream(varXML.getBytes());
XmlPayload payload = LookupService.getXmlPayload(inputStream);
SOAPOutPayload = accessor.call(payload);
InputStream inp = SOAPOutPayload.getContent();




Remeber to change your channel and activate.

former_member190293
Active Contributor
0 Kudos

Hi Juan!

And what's the difference between your code and the code that Helmut has already provided?

Regards, Evgeniy.

juan_vasquez2
Active Participant
0 Kudos

Hello Evgeniy

I recomend two things

Verify namespaces in the xml string

verify the channel changes are activated

regards

helmut_skolaut3
Active Participant
0 Kudos

Hi Juan,

can you explain what you mean with "verify namespaces"? I don't unterstand this. My code is working in general fine- I only have an issue that a change in the channel is cached somewhere and I don't know what to do to invalid the cache.

Regards
Helmut

juan_vasquez2
Active Participant
0 Kudos

Hi Helmut

This is what I mean with namespaces

"<?xml version=\"1.0\" encoding=\"UTF-8\"?>"+ "<sap:Request-sap.com-home-cltrasp-ClaseTransporteFlow-ClaseTransporteFlow xmlns:sap=\"http://www.sap.com\" xmlns:par=\"http://www.example.org/params/\">"+

...

If the scenario is working fine (no code errors, or warnings), verify the activatin process, the cache.

Integration builder cache status.

Regards

former_member190293
Active Contributor
0 Kudos

Hi Helmut!

Just for case: did you also try to Stop/Start the channel?

Regards, Evgeniy.

helmut_skolaut3
Active Participant
0 Kudos

Hi Evgency,

even if i am deleting the channel and create it with the same name - it's still using the old values. So something is caching the connection and not look up the values from the channel.

I want to find the way to delete out the channel from the cache used by the lookup service.

As mentioned before, also a full cache refresh, change of channel and even deleting and creating it again is not solving the issue.

Regards
Helmut

former_member190293
Active Contributor
0 Kudos

Hi Helmut!

We have such kind of issues from time to time. Deleting and creating the channel with different name often helps or even re-creating the ICo object.

Regards, Evgeniy.

ArielBravo
Active Participant
0 Kudos

A silly question and just in case as I saw that you already refreshed all the caches... did you check the namespace/software component of the mapping?

You might consider having a look a the traces after the activation of the objects.

Best regards,

Ariel Bravo Ayala

helmut_skolaut3
Active Participant
0 Kudos

Hi Anurag,

it's in the last example an UDF:

Channel channel = LookupService.getChannel(System,Channel);
SystemAccessor accessor = LookupService.getSystemAccessor(channel);
InputStream inputStream = new ByteArrayInputStream(query.getBytes());
Payload QueryPayload = LookupService.getXmlPayload(inputStream);
Payload ResponsePayload = accessor.call(QueryPayload);

Looks like any change I am doing in a channel is not been used -even if I am deleting the channel and create it with same name newly - it's still using old credentials, URLs, ... Only if I am creating a new channel with a different name - than it's consuming the values of the new channel.

BR Helmut

PRAGSMATIC
Participant
0 Kudos

can you mention how do you use the lookup service ?