如何在jaxws中使用wsimport生成equals()和hashcode()方法

时间:2011-06-29 15:50:12

标签: jaxb jax-ws

使用wsimport从我的WSDL生成的类没有equals()hashcode()方法。如何自定义和生成客户端类以获取equals()hashcode()方法。

我不确定使用JAXB来实现这一目标。

在Axis2.0生成的存根中生成了这些方法,但不确定为什么JAXWS中没有这样的基本内容!

3 个答案:

答案 0 :(得分:6)

您可以使用JAXB2 Basics插件生成equals()hashcode()方法:

答案 1 :(得分:1)

有关其工作原理的更多信息。 我必须将类路径添加到jaxb2-commons,如果没有抱怨,wsimport就会运行而没有任何反应!添加类路径后如下

<path id="jaxb2-commons.classpath">
    <fileset dir="${dir.toolchain}/noarch/jaxb2-basics-dist-0.6.0">
        <include name="**/*.jar" />
    </fileset>
</path>

以下wsimport按预期工作

<wsimport wsdl="@{dir-wsdl}/@{name-wsdl}"
          taskname="wsimport-@{service}"
          destdir="@{dest-dir}"
          sourcedestdir="@{source-dest-dir}"
          package="@{package}"
          keep="@{keep}"
          verbose="@{verbose}"
          xdebug="@{xdebug}"
          xnocompile="@{xnocompile}"
          target="2.1">
    <binding dir="@{dir-wsdl}" includes="bindings-wsdl-@{name-wsdl}.xml, bindings-schema-@{name-wsdl}.xml" />
    <xjcArg value="-Xequals" />
    <xjcArg value="-XhashCode" />
    <xjcArg value="-XtoString" />
    <!-- Generates per-package jaxb.index file which lists all of the schema-derived classes in this package.-->
    <xjcArg value="-Xjaxbindex" />
    <xjcArg value="-Xsetters" />
</wsimport>

答案 2 :(得分:1)

如果您希望在maven中使用wsimport生成hashcode()和equals(),请查看有关如何生成值构造函数的答案,还包括生成hashcode()和equals()的配置:

How do I make wsimport generate constructors?