IllegalAnnotationsException:类有两个同名的属性
Posted
技术标签:
【中文标题】IllegalAnnotationsException:类有两个同名的属性【英文标题】:IllegalAnnotationsException: Class has two properties of same name 【发布时间】:2012-09-05 17:06:46 【问题描述】:我正在尝试使用 RSA 7.5 和 Websphere 7 服务器开发 IBM JAX_WS Web 服务。由于我是初学者,因此我遵循 Java 类优先方法,即我先创建 Java 类,然后生成 WSDL 文件。
当我尝试创建 wsdl 文件时,出现异常:
java.security.PrivilegedActionException:com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException: 1 次 IllegalAnnotationsException 类有两个同名的属性“planId”
这里提到的我的班级看起来像这样:
public class MemberDetails
@XMLElement(required=true)
private String planId;
//public getters and setters for the planId;
我不知道为什么会发生这种异常。通过谷歌搜索,我尝试了一些替代方法来解决它,但没有一个对我有用:(
注意:
这是我在整个工作区中使用的唯一注释。我不确定这是否依赖于其他一些注释。但我尝试了一些,例如@XMLElement(name="Plan",required=true)、@XMLType 等,但每次我都遇到这个异常。
在 wsgen 期间发生此异常。 (java.lang.reflect.InvocationTargetException)
编辑
基本上,当我们从 java 服务方法创建一个 wsdl 并在 SOAP UI 中打开该 WSDL 时,我们会在每个元素的顶部看到 <!--Optional-->
。我想删除此选项标签 <!--Optional-->
标签,因此我正在尝试使用 @XMLElement(required=true) 方法,以便当我在 SOAP UI 中打开 WSDL <!--Optional-->
时不会出现强制元素。
根据我的概念,@XMLElement(required=true) 会将 minOccurs 设置为 1,即大于零,因此当我在 SOAP UI 中打开可选注释时,将从 WSDL 中删除可选注释。但不幸的是它不起作用,因此我的概念是不正确的。生成WSDL后,可以看到minOccurs还是0。
请解释当我在 SOAP UI 中打开 WSDL 时如何删除可选标记。
问候,
【问题讨论】:
【参考方案1】:默认情况下JAXB (JSR-222) 实现处理公共访问器方法和注释字段。如果你注释了一个你也有 get/set 方法的字段,你会得到这个异常:
如果要注释字段,则应指定@XmlAccessorType(XmlAccessType.FIELD)
@XmlAccessorType(XmlAccessType.FIELD)
public class MemberDetails
@XMLElement(required=true)
private String planId;
//public getters and setters for the planId;
或者你可以注释属性
public class MemberDetails
private String planId;
@XMLElement(required=true)
public String getPlanId()
return planId;
更多信息
http://blog.bdoughan.com/2011/06/using-jaxbs-xmlaccessortype-to.html【讨论】:
感谢您的回复。按照您建议的方式,正在创建 WSDL,没有任何 wsgen 异常。但是我的目标没有实现。我已经编辑了我上面的帖子来描述我想要实现的任何原因。请查看第 1 篇文章的编辑部分和帮助。【参考方案2】:对于 JAXB2.0,在 getter 或 setter 上使用 @XmlTransient
注释将防止冲突。
在此处查看更多信息:http://docs.oracle.com/javase/8/docs/api/javax/xml/bind/annotation/XmlTransient.html
【讨论】:
以上是关于IllegalAnnotationsException:类有两个同名的属性的主要内容,如果未能解决你的问题,请参考以下文章