3

我正在使用 wsimport (JAX-WS 2.1.3) 从 WSDL 生成 Java,并且需要使其生成 @HandlerChain 注释。所以我创建了一个 JAX-WS 绑定文件:

<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>

并运行 wsimport Ant 任务:

 <wsimport 
        wsdl="../etc/MessageStudio.wsdl"
        sourcedestdir="../src/gen"
        destdir="../classes"
        verbose="false"
        binding="../etc/jaxws.bindings.xml">
 </wsimport>

但我没有得到注释,也没有处理程序链 XML 文件。谷歌搜索只能找到更改包、方法和参数的解决方案以及我复制 XML的 JAX-WS RI 页面

你能帮我找到我的配置中的缺陷,或者以其他方式,而不是修改生成的代码,让我的处理程序进入链吗?

4

3 回答 3

5

答案是 RI 示例不正确。需要有一个 handler-chains 包装标签:

<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>

于 2012-06-26T10:28:47.067 回答
2

事实证明,生成的处理程序链文件放在编译的类文件所在的输出目录(目标/包)中。如果你想改变它,你可以使用“destDir”选项来做到这一点。此外,将“xnocompile”设置为 false,否则生成的类文件将与处理程序文件位于同一目录中。希望他们没有在文档方面做这么半**的工作。

于 2013-10-26T21:16:26.353 回答
1

示例中仍然存在错误。根据 XML 方案 ( http://www.oracle.com/webfolder/technetwork/jsc/xml/ns/javaee/javaee_web_services_metadata_handler_2_0.xsd ) ,该标签<javaee:handler-chain-name>不存在。

修正是:

<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>
                <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>

于 2014-11-19T09:01:39.463 回答