Java Call Out
The Java Call Out policy provides a way to inject custom Java modules as part of the message flow. The callout handler implements a Java interface onto which complete processing context is passed.
Configuration
The properties that have to be configured to use the policy are described below.
Figure 1: Java Call Out Policy Configuration attributes
Qualified Class Name
The fully qualified name of the class which implements the interface Call OutProcessor.
Adding Jars
Jars can be added to the gateway server configuration in one of the following ways:
- Conf file: Go to the bin folder at FIORANO_HOME/esb/server, open the server.conf file and add the jar file path (location) under the tag <java.classpath>.
jars folder: Go to FIORANO_HOME/runtimedata/repository/APIManagement and place the jars in the jars folder.
Placing the files in the jars folder avoids the hassle of stopping/restarting the server.
Is Streaming Supported
This option can be checked if the class does not access or modify the payload and that it works only with parameters and context variables.
Accessing Processor Context
This method has the variable processor context whose methods are listed below. The methods can be used to access or modify the message.
Example
The following class demonstrates the use of Java call out. The class inspects the parameter ID and verifies whether or not the details corresponding to the ID are present in a local database. If present, the details are set as payload and a flag RETRIEVED_FROM_DB will be set so that the execution of other policies can be controlled by rules based on this flag.
Sample Java Call Out Processor
package com.fiorano.samples.callout;
import com.fiorano.api.policies.handlers.callout.java.CallOutProcessor;
import com.fiorano.api.policies.handlers.callout.java.ProcessorContext;
public class SampleCallOutProcessor implements CallOutProcessor {
@Override
public void process(ProcessorContext context) throws CallOutFailedException {
List<String> id = context.getQueryParameter("ID");
String paylod = retrieveFromDB(id);
if(!paylod.isEmpty()){
context.setContextVariable("RETRIEVE_FROM_DB",true);
context.setPayload(paylod);
} else{
context.setContextVariable("RETRIEVE_FROM_DB",false);
}
}
public String retrieveFromDB(List<String> id){
String paylod = null;
/**
* This method will check in local database and retrieve the data corresponding to ID if present.
*/
return paylod;
}