我正在尝试为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注释.对这些错误报告的评论让我相信这在目前的规范中是不可能的.
您需要标记父类@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>
Run Code Online (Sandbox Code Playgroud)