5

我正在尝试为java.util.loggingapi 编写 Web 服务。所以我写了一个继承自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注释。对这些错误报告的评论让我相信这在当前规范中是不可能的。

4

1 回答 1

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>

于 2010-07-06T14:32:30.287 回答