使用wsimport
从我的WSDL生成的类没有equals()
和hashcode()
方法。如何自定义和生成客户端类以获取equals()
和hashcode()
方法。
我不确定使用JAXB来实现这一目标。
在Axis2.0生成的存根中生成了这些方法,但不确定为什么JAXWS中没有这样的基本内容!
答案 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()的配置: