我如何忽略超类?

时间:2009-09-06 17:30:07

标签: java jaxb jax-ws

我正在尝试为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注释。对这些错误报告的评论让我相信这在目前的规范中是不可能的。

1 个答案:

答案 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>