Wow. I thought I wanted to do something simple. Turns out adding a JAX-RPC handler to the Axis client-config.wsdd file is harder than you might think. Well, it’s actually not hard, it’s just not documented properly anywhere! 
First off the best reference for wsdd is not the Apache Axis site, that’s rubbish, OIO GmbH have a much better version. Far more helpful and far more comprehensive.
Once you’ve got that you’re part-way there.
First, don’t confuse a JAX-RPC handler with an Axis handler, they’re apparently not the same thing. Axis wsdd allows you to configure ‘handler’ and ‘handlerInfo’, the former is an Axis handler, the latter a JAX-RPC handler. If you try to set up a JAX-RPC handler using ‘handler’ you’ll get a class cast exception.
‘handlerInfo’ can only exist inside ‘handlerInfoChain’ which in turn must be inside a ’service’ configuration, like this:
<service name="MyService" provider="java:RPC" style="document">
<parameter name=”className” value=”com.foo.services.ServiceImpl” />
<handlerinfochain>
<handlerinfo classname=”com.foo.handler.MyJAXRPCHandler”>
<parameter name=”parm1″ value=”someValue” />
</handlerinfo>
</handlerinfochain>
</service>
Your ‘handlerInfoChain’ can’t be inside a ‘requestFlow’ or ‘responseFlow’. JAX-RPC handlers are invoked in both directions of the call anyway, so this would be pointless. You’ll notice from the documentation that the parameter element is optional, except it’s not. Without it your service will work, you’ll get no error or exception, or even a warning, Axis will just silently fail to call your handler.
The ‘className’ parameter is vital. Without this Axis will silently fail when you call your service, not in a way that’ll break the call, but it will stop your handler running. The class name required is that of your service implementation. In the case of the client classes that Axis generates this will be your stub implementation.
Armed with this everything should be straight-forward. Good luck!