getter for boolean properties with JAXB

2019-04-08 23:09发布

问题:

I´m trying to expose services using jax-ws but the first surprise i got was that Weblogic does not support inner classes for request/response objects. After get over this situation here, i´m facing another challenge:

Generate getXXX() rather than/additionally to the isXXX() Method.

I need to generate this methods cause when i start the service i get the message:

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

Tried a customization:

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

without effect. :(

Any help?

回答1:

BooleanGetter XJC plugin for JAXB is available at http://fisheye5.cenqua.com/browse/~raw,r=1.1/jaxb2-commons/www/boolean-getter/index.html

If you are working with JavaSE 6 then it needs to be re-packaged - see http://forums.java.net/jive/message.jspa?messageID=319434

Use in ant build like below:

    <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



回答2:

This has been fixed or better to say supported in jaxb 2.1.13 ( see JAXB-131 for more details). Upgrade your dependencies and configure enableIntrospection xjc option. More details on xjc options can be found on this link. If you're using org.codehause.mojo:jaxb2-maven-plugin:1.3.1 plugin see this issue comment for a workaround.

Option: -enableIntrospection



回答3:

Here is another plugin which resolves the issue:

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

It geneates the getXXX() addiotionally to the default isXXX() , hence, code already using these classes do not break after applying the plugin.