I'm trying to do custom transaction correlation for WSO2 ESB. The exit point (producer) of WSO2 ESB is the send() method of Axis2FlexibleMEPClient class [1].
send() method is as below.
public static void send( EndpointDefinition endpoint, org.apache.synapse.MessageContext synapseOutMessageContext) throws AxisFault { boolean separateListener = false; boolean wsSecurityEnabled = false; String wsSecPolicyKey = null; String inboundWsSecPolicyKey = null; String outboundWsSecPolicyKey = null; boolean wsRMEnabled = false; boolean wsAddressingEnabled = false; String wsAddressingVersion = null;
Can someone please help me how can inject correlation data in this case? org.apache.synapse.MessageContext doesn't have a class field to hold the correlation key.
If I want to add a custom HTTP header to the outgoing call in WSO2 ESB (using org.apache.synapse.MessageContext object in the send() method), I would do like below.
org.apache.axis2.context.MessageContext axisMC = ((org.apache.synapse.core.axis2.Axis2MessageContext) synapseOutMessageContext).getAxis2MessageContext();
Map headers = (Map) axisMC.getProperty(org.apache.axis2.context.MessageContext.TRANSPORT_HEADERS); headers.put("correlationKey", value"); axisMC.setProperty(org.apache.axis2.context.MessageContext.TRANSPORT_HEADERS, headers);
How do I the same thing in appd to inject a custom HTTP header?
Can someone please help me on how we can cast objects in custom-activity-correlation.xml when configuring <payload-pointer/> section?