我正在尝试为java.util.loggingapi 编写Web服务。因此,我编写了一个MyLogRecord类,该类继承自LogRecord。我用JAX- B注释对此类进行了注释,包括,@XmlAccessorType(XmlAccessType.NONE)因此它将忽略未注释的字段和属性。当我启动tomcat时,出现错误,java.util.logging.Level并且其他java.util.logging类没有默认的构造函数,但是没有带注释的方法对Level类或任何其他java.util.logging类进行任何引用。这些由父类引用。
java.util.logging
@XmlAccessorType(XmlAccessType.NONE)
java.util.logging.Level
我的子类具有需要定义的所有内容。如何使JAX-B完全忽略父类?
更新:我在此找到,建议修改父类。这显然是不可能的,因为我正在扩展java.util课程。有没有不修改超类就可以做到这一点的方法?
java.util
Update2:我在java.net上发现了一个类似问题的线程。该线程导致了一个增强请求,该请求被标记为另一个问题的重复,从而导致了@XmlTransient注释。对这些错误报告的评论使我相信在当前规范中这是不可能的。
@XmlTransient
您需要标记父类@XmlTransient。由于父类位于JRE中,并且您无法对其进行修改,因此需要备用机制。
EclipseLink JAXB(MOXy)实现提供了一种将元数据表示为XML的方式,您可以使用:
http://wiki.eclipse.org/EclipseLink/Examples/MOXy/EclipseLink- OXM.XML
您可以使用批注指定一些元数据,其余的作为XML。您的文档如下所示:
<java-types> <java-type name="java.util.logging.LogRecord" xml-transient="true"/> </java-types>