使用JAXB获取布尔属性的getter

时间:2008-10-14 17:44:27

标签: xml xsd jaxb jax-ws

我试图使用jax-ws公开服务,但我得到的第一个惊喜是Weblogic不支持请求/响应对象的内部类。在克服了这种情况后here,我面临着另一个挑战:

生成getXXX()而不是isXXX()方法。

我需要生成此方法,因为当我启动服务时,我收到消息:

<WS data binding error>could not find getter for property 'IsXXX' on com.foo.MyClass

尝试过定制:

<jaxb:globalBindings generateIsSetMethod="false" enableJavaNamingConventions="false">

没有效果。 :(

任何帮助?

3 个答案:

答案 0 :(得分:7)

这已被修复或更好地说jaxb 2.1.13支持(有关详细信息,请参阅JAXB-131)。升级依赖项并配置enableIntrospection xjc选项。有关xjc选项的更多详细信息,请参见this link。如果您正在使用org.codehause.mojo:jaxb2-maven-plugin:1.3.1插件,请参阅this issue comment以获取解决方法。

选项:-enableIntrospection

答案 1 :(得分:2)

这是另一个可以解决问题的插件:

http://code.google.com/p/nebulent-xjc-booleangetter/wiki/AboutThisProject

它将getXXX()添加到默认isXXX(),因此,使用这些类的代码在应用插件后不会中断。

答案 2 :(得分:1)

JAXB的BooleanGetter XJC插件位于http://fisheye5.cenqua.com/browse/~raw,r=1.1/jaxb2-commons/www/boolean-getter/index.html

如果您正在使用JavaSE 6,则需要重新打包 - 请参阅http://forums.java.net/jive/message.jspa?messageID=319434

在ant build中使用,如下所示:

    <taskdef name="xjc" classname="com.sun.tools.xjc.XJCTask" classpathref="development.classpath"/>

    <xjc schema="some.xsd" package="com.acme.jaxb" destdir="gen-src">
        <arg value="-Xcollection-setter-injector"/>  
        <arg value="-Xboolean-getter"/>
    </xjc>          

HTH