I am using the Axis API to access Axis HTTP server. The documentation of the API can be found here.
I am using the following code to add handlers to the server. service
is of type java.xml.rpc.Service
HandlerRegistry registry = service.getHandlerRegistry();
QName serviceName = new QName(url, "MyServiceClass");
List<HandlerInfo> handlerChain = new ArrayList<HandlerInfo>();
HandlerInfo handlerInfo = new HandlerInfo(MyHandler.class, null, null);
handlerChain.add(handlerInfo);
registry.setHandlerChain(serviceName, handlerChain);
I know that the service name is correct as I am getting the correct output in subsequent calls to the service object.
Somehow the handler is not being invoked. Here is the Handler class. My intention is to add custom headers to the HTTP request before forwarding the request to the server.
import javax.xml.namespace.QName;
import org.apache.axis.AxisFault;
import org.apache.axis.MessageContext;
import org.apache.axis.handlers.BasicHandler;
public class MyHandler extends BasicHandler {
@Override
public void init() {
System.out.println("init called");
super.init();
System.out.println("init called");
}
@Override
public void cleanup() {
super.cleanup();
System.out.println("cleanup called");
}
@Override
public void invoke(MessageContext mc) throws AxisFault {
System.out.println("invoke called");
}
public QName[] getHeaders() {
System.out.println("getHeaders");
return new QName[1];
}
}
What is wrong with the above code?
Is there any other way to modify HTTP Headers using Apache Axis API?