【问题标题】:wsgen fails to ignore JAXB annotationswsgen 无法忽略 JAXB 注释
【发布时间】:2012-11-20 21:09:25
【问题描述】:

我一直在使用 Metro,但遇到了一个问题,即 wsgen 似乎忽略了我在 Web 方法响应类上放置的任何 JAXB 注释。

我正在尝试返回一组我想通过 Web 服务向外部客户端公开的实体类,但是我只想让某些类属性和方法对外部客户端可见,因此设置了类访问类型成为 PROPERTY,并用 @XmlElement 注释了我想成为该类的 XML 版本的一部分的所有属性。

我可以使用 schemagen ant 任务为实体类创建 XML 模式,该任务正确地忽略了我没有使用 @XmlElement 注释的任何属性或方法,但是当我运行 wsgen 为具有一个返回一组实体类的方法,然后我得到一个 java.lang.NoClassDefFoundError。这似乎是因为 wsgen 没有忽略它应该执行的实体类上的公共方法,异常引用的类是该方法的参数。

我尝试用 @XmlTransient 注释该方法,以便 wsgen 忽略它,但无济于事。如果有人能建议我应该做些什么来让 wsgen 关注我的注释,那就太好了。

【问题讨论】:

    标签: jaxb annotations wsdl wsgen


    【解决方案1】:

    无论访问器类型如何,都将始终处理带注释的字段/属性。如果您只想将带注释的字段/属性视为映射,则需要指定 @XmlAccessorType(XmlAccessType.NONE)

    更多信息

    【讨论】:

    • 感谢 Blaise 的建议,但是即使我将访问器类型更改为 NONE,然后运行 ​​wsgen 仍然会抱怨一个类,它是一个方法的参数,应该被忽略但由于某种原因不是。我有点困惑,因为运行 schemagen 会为关注我的注释的实体类生成一个有效的 xml 模式,但似乎 wsgen 必须有自己的方法来创建似乎忽略我的注释的模式
    猜你喜欢
    • 2021-05-11
    • 1970-01-01
    • 1970-01-01
    • 2019-03-14
    • 1970-01-01
    • 1970-01-01
    • 2016-05-22
    • 2011-11-13
    • 2012-07-16
    相关资源
    最近更新 更多