我正在尝试为java.util.logging
api编写一个Web服务。所以我写了一个继承自LogRecord的类MyLogRecord。我用JAX-B注释注释了这个类,包括@XmlAccessorType(XmlAccessType.NONE)
,因此它会忽略未注释的字段和属性。当我启动tomcat时,我得到java.util.logging.Level
和其他java.util.logging
类没有默认构造函数的错误,但我的注释方法都没有引用Level类或任何其他类{{ 1}}类。这些由父类引用。
我的子类拥有它需要定义的所有内容。如何让JAX-B完全忽略父类?
更新:我找到another post on this,建议修改父类。这显然是不可能的,因为我正在扩展java.util.logging
类。有没有办法在不修改超类的情况下做到这一点?
Update2:我发现了a thread on java.net类似的问题。该帖子产生了enhancement request,其被标记为another issue的副本,从而产生了java.util
注释。对这些错误报告的评论让我相信这在目前的规范中是不可能的。
答案 0 :(得分:2)
您需要标记父类@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>