Showing results for 
Show  only  | Search instead for 
Did you mean: 

How can I inject a custom correlation header for WSO2 ESB?


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?