java - cxf wsdl2java 生成 'protected' 属性,如何生成私有(private)属性?

标签 java cxf wsdl2java

我正在使用带有 wsdl2java 目标的 cxf-codegen-plugin (maven) 从我的 wsdl 生成 java 代码。

问题是当我想要private 属性时,它会生成protected 属性:

我的 wsdl 元素:

<element name="productCode" type="string"/>

预期:

@XmlElement(required = true)
private String productCode;

结果:

@XmlElement(required = true)
protected String productCode;

是否有任何东西要添加到我的 wsdl 或插件配置中以生成私有(private)字段?

谢谢!

最佳答案

我认为这是因为 jaxb 而不是 cxf。您需要开发自己的 xjc 插件才能做到这一点。

https://jaxb.java.net/nonav/2.0.2/docs/developPlugins.html

也谷歌关于开发和插入你自己的xjc 创建插件是正确的方法。重新使用本论坛中的代码

public class PrivateMemberPlugin
    extends Plugin
{

    @Override
    public String getOptionName()
    {
        return "Xpm";
    }

    @Override
    public String getUsage()
    {
        return "  -Xpm    : Change members visibility to private";
    }

    @Override
    public boolean run(Outline model, Options opt, ErrorHandler errorHandler)
        throws SAXException
    {
        for (ClassOutline co : model.getClasses())
        {

            JDefinedClass jdc = co.implClass;
            // avoid concurrent modification by copying the fields in a new list
            List<JFieldVar> fields = new ArrayList<JFieldVar>(jdc.fields().values());
            for (JFieldVar field : fields)
            {
                // never do something with serialVersionUID if it exists.
                if (!field.name().equalsIgnoreCase("serialVersionuid"))
                {
                    // only try to change members that are not private
                    if (field.mods().getValue() != JMod.PRIVATE)
                    {
                        // since there is no way to change the visibilty, remove the field an recreate it
                        jdc.removeField(field);
                        jdc.field(JMod.PRIVATE, field.type(), field.name());

                    }
                }
            }

        }
        return true;
    }

}

关于java - cxf wsdl2java 生成 'protected' 属性,如何生成私有(private)属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20117774/

相关文章:

java - wsdl 中的 Xsd 选择产生错误

java - 使用CXF和maven将源代码注释导出到WSDL?

maven - 我如何首先为 apache cxf wsdl 创建一个 maven 项目

java - 用 int 映射枚举的最佳方法

java - 如何从 CXF Web 客户端响应创建一个 java 对象

java - DatabaseManager_Impl 不是抽象的,不会覆盖 RoomDatabase 中的抽象方法 clearAllTables()

java - 无法使用 WSDLToJava 和 Apache CXF 3.1.6 为 Web 服务生成 java 代码

java - 从 Onvif wsdl 文件生成客户端 Web 服务

带有 protected 表的 Java 数据库连接

java - Spring boot webflux应用程序不会启动IllegalStateException