Apache CXF / JAXB为所需的元素/属性生成默认构造函数

时间:2013-09-12 15:37:33

标签: java web-services jaxb wsdl cxf

我刚开始使用Apache CXF(v2.7.6)。我正在使用wsdl2java生成WSDL的客户端,如:

wsdl2java -client -d src -exsh true -dns true -dex true -xjc-Xdv -wsdlLocation file:/some.wsdl -verbose -defaultValues -fe jaxws -db jaxb -wv 1.1 some.wsdl

在wsdl中,我有一些具有必需属性的元素,如:

<element name="Attribute">
    <complexType>
        <attribute name="id" type="string" use="required"></attribute>
    </complexType>
</element>

对于这些元素,我想获得在java代码中生成的默认构造函数。目前它生成:

public static class Attribute {
    @XmlAttribute(name = "id", required = true)
    @XmlSchemaType(name = "anySimpleType")
    protected String id;

我想要像:

public static class Attribute {
    @XmlAttribute(name = "id", required = true)
    @XmlSchemaType(name = "anySimpleType")
    protected String id = new String("");

我已经搜索了很长时间(CXF,JAXB选项),但还没有找到。

是否有可能像我想要的那样生成java代码?如果是这样,你能指出我正确的方向(自定义绑定文件吗?)或提供一些关于如何做的小样本?

非常感谢,

JG

2 个答案:

答案 0 :(得分:0)

我自己没有测试过,但似乎你可以使用“defaultValues”参数实现org.apache.cxf.tools.wsdlto.core.DefaultValueProvider接口并将其传递给wsdl2java命令行。

查看there的语法“defaultValues”

让我知道它是否有效。

编辑:正如dcsohl所说,你的要求似乎很奇怪,也许我们会错过一些所以请详细解释一下背景

答案 1 :(得分:0)

我通过创建XJC插件解决了我的问题。在看了之后,并不那么困难(因为我熟悉使用com.sun.codemodel。*类生成代码):