How to generate @HandlerChain using wsimport

handlers, java, jax-ws, wsimport

Solution

The answer is that the RI example is incorrect. There needs to be a handler-chains wrapper tag:

<jaxws:bindings
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:jaxws="http://java.sun.com/xml/ns/jaxws"
xmlns:javaee="http://java.sun.com/xml/ns/javaee"
wsdlLocation="../etc/MessageStudio.wsdl">

<jaxws:bindings node="wsdl:definitions">
    <javaee:handler-chains>
        <javaee:handler-chain>
            <javaee:handler-chain-name>StrongmailHandlers</javaee:handler-chain-name>               
            <javaee:handler>
                <javaee:handler-name>OrganizationTokenHandler</javaee:handler-name>         
                <javaee:handler-class>com.bossmedia.strongmailadapter.deliveryadapter.OrganizationTokenHandler</javaee:handler-class>           
            </javaee:handler>                     
        </javaee:handler-chain>
    </javaee:handler-chains>
</jaxws:bindings>

Problem

I'm generating Java from WSDL using wsimport (JAX-WS 2.1.3) and need to make it generate a @HandlerChain annotation. So I create a JAX-WS binding file: ``` <jaxws:bindings xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:jaxws="http://java.sun.com/xml/ns/jaxws" xmlns:javaee="http://java.sun.com/xml/ns/javaee" wsdlLocation="../etc/MessageStudio.wsdl"> <jaxws:bindings node="wsdl:definitions"> <javaee:handler-chain> <javaee:handler-chain-name>StrongmailHandlers</javaee:handler-chain-name> <javaee:handler> <javaee:handler-name>OrganizationTokenHandler</javaee:handler-name> <javaee:handler-class>com.bossmedia.strongmailadapter.deliveryadapter.OrganizationTokenHandler</javaee:handler-class> </javaee:handler> </javaee:handler-chain> </jaxws:bindings> ``` and run the wsimport Ant task: ``` <wsimport wsdl="../etc/MessageStudio.wsdl" sourcedestdir="../src/gen" destdir="../classes" verbose="false" binding="../etc/jaxws.bindings.xml"> </wsimport> ``` but I get no annotation and no handler chain XML file. Googling only finds me solutions for changing packages, methods and arguments and the JAX-WS RI page from where I copied the XML. Could you help me find the flaw in my configuration or another way, short of modifying the generated code, to get my handler into the chain?

Original source