Skip to main content

WSO2 ESB learning part1-Usage of a class mediator in a makeFault mediator

Class Mediator-The class mediator creates an instance of a custom specified class and sets it as a mediator. The class must implement the org.apache.synapse.api.Mediator interface.For more info

makeFault mediator-The fault mediator transforms the current message into a SOAP fault message.but does NOT send it. The mediator needs to be invoked to send a fault message created this way.For more info

Sample makeFault mediator

Below is the sample fault mediator that we are going to use in ESB sequence.


Creating a new class mediator

There is a good article on how to create a new class mediator which can be found here.Hence I'm not going to repeat those steps.But for your easier,i'll give the overview of a class mediator.Any class mediator must have to extend 'AbstractMediator' abstract class and hence such a mediator need to implement the method 'mediate()'.The purpose of creating the class mediator here,is to set the property value 'ERROR_CODE' which is going to use as the fault code value in above makeFault mediator.How we have done it using the class mediator is shown as below.
package org.wso2.carbon.mediator;


import org.apache.synapse.MessageContext;
import org.apache.synapse.mediators.AbstractMediator;
import javax.xml.namespace.QName;

public class SynapseMessageContextMediator extends AbstractMediator{
public boolean mediate(MessageContext messageContext) {
QName qname=new QName("http://www.w3.org/2003/05/soap-envelope","soap12Env:Receiver");
messageContext.setProperty("ERROR_CODE",qname);
return true;

}
}
Since ESB supports SOAP 1.2,based on SOAP 1.2 specification,the fault code value should contains the same prefix of the SOAP envelope namespace.Hence we have set 'ERROR_CODE' property value as a QName,which has a namespace and a prefix.

How to make usage of created class mediator into the makeFault mediator.

To do this we have to add above both class mediator and fault mediator into synapse.xml file.Then add a log mediator exactly after the makeFault mediator.Then once we have accessed http://localhost/8280 we can see the SOAP fault[which follows SOAP 1.2 specification] which is corresponding to the above created makeFault mediator in ESB server log as below.



You can see the above soap envelope fault code value has set to 'soap12Env:Receiver' by using the class mediator we have created.






Comments

Popular posts from this blog

Passing end-user details from client to real backend endpoint via JWT token

In real-world business system,WSO2 API Manager useful on exposing company APIs, in a secured and controlled manner with the features provided by APIManager as; OAuth support [To secure API invocations] Throttling support [To control API invocations] Monitoring support [To track API usage] More technically what happening is when a user sends a particular API request,it will goes to WSO2 APIManager node and from there,the request will route to the real implemented back-end endpoint of the particular API and get back the response and returned it to the API invoked user. There can be a use-case,that this back-end endpoint may expect the details of API invoked user as to pass those details to some internal company usage  as; Additional authentication/authorization Track usage data from an internal system. So how to support above requirement from WSO2 AM. There comes the use of JSON Web Token[JWT] implementation done inside WSO2 AM. JWT is a means of representing claims to...

How to rollback/commit processing messages from WSO2 ESB when enabled JMS transaction

This blog post describes the below use-case where WSO2 ESB 4.6.0 act as the intermediate channel in-between two JMS queues. The Use-case First messages will be de-queue to a proxy service deployed in WSO2 ESB from an queue in ActiveMQ message broker. Then inside ESB,the incoming messages will undergo with some message mediation flow and then the message will be send to another JMS queue deployed in JBoss server. Inside the ESB,following failures could be happen;            a) Failures during message mediation process failure inside ESB [for example if you                use   dbreportmediator/lookup mediator inside mediation flow,some times failures can                happen due  to database connection failures]          b) Message sending failure,due to endpoint is unavailability.[For example,the JBoss  ...

Covid19 - A threat against traditional Banking

I would like to start this blog post by wishing all of you to be safe from Covid19 and wish all infected ones safe speedy recovery from the decease.. Due to the global pandemic situation,  'working from home' , "delivery food/goods to your homes" and importantly "purchases via digital money" have been become the norms for the situation.  Thinking further this global epidemic situation has made a huge opportunity for banks on digitalizing projects. As I expressed earlier "purchases via digital money" is the norm which banks has to rethink about their current offerings. For "purchases via digital money" ,Open Banking is the main capability that banks should have.Open Banking has become a global trend during last few years due to the regulations and obligations set by law in different regions as EU, AU. From the experiences with closely worked on open banking field the common observation which I felt was banks tried to become open ba...