我如何忽略超类?

我正在尝试为java.util.logging api编写一个Web服务。 所以我编写了一个inheritance自LogRecord的类MyLogRecord。 我使用JAX-B注释注释了这个类,包括@XmlAccessorType(XmlAccessType.NONE)因此它会忽略未注释的字段和属性。 当我启动tomcat时,我得到的错误是java.util.logging.Level和其他java.util.logging类没有默认构造函数,但是我的注释方法都没有引用Level类或任何其他类java.util.logging类。 这些由父类引用。

我的子类拥有它需要定义的所有东西。 如何让JAX-B完全忽略父类?

更新:我发现了另一篇文章 ,建议修改父类。 这显然是不可能的,因为我正在扩展java.util类。 有没有办法在不修改超类的情况下做到这一点?

Update2:我在java.net上发现了一个类似问题的线程 。 该线程产生了一个增强请求 ,该请求被标记为另一个问题的副本,从而产生了@XmlTransient注释。 对这些错误报告的评论让我相信这在目前的规范中是不可能的。

您需要标记父类@XmlTransient。 由于父类在JRE中并且您无法修改,因此您需要一种备用机制。

EclipseLink JAXB(MOXy)实现提供了一种将元数据表示为可以使用的XML的方法:

http://wiki.eclipse.org/EclipseLink/Examples/MOXy/EclipseLink-OXM.XML

您可以使用注释指定一些元数据,其余的作为XML。 以下是您的文档的样子: