Estoy tratando de escribir un servicio web para la api java.util.logging
. Así que escribí una clase MyLogRecord que hereda de LogRecord. Anoté esta clase con anotaciones JAX-B, incluido @XmlAccessorType(XmlAccessType.NONE)
, por lo que ignoraría los campos y propiedades no anotados. Cuando inicio tomcat, recibo errores que java.util.logging.Level
y otras clases java.util.logging
no tienen un constructor predeterminado, pero ninguno de mis métodos anotados hacen referencia alguna a la clase Level o cualquiera de las otras clases java.util.logging
. Estos son referenciados por la clase padre.¿Cómo puedo ignorar una superclase?
Mi subclase tiene todo lo que necesita definido. ¿Cómo puedo hacer que JAX-B ignore completamente la clase padre?
Actualización: Encontré another post on this, lo que sugiere modificar la clase principal. Esto obviamente no es posible porque extiendo una clase java.util
. ¿Hay alguna manera de hacer esto sin modificar la superclase?
Update2: Encontré a thread on java.net para un problema similar. Ese hilo resultó en un enhancement request, que se marcó como un duplicado de another issue, lo que dio como resultado la anotación @XmlTransient
. Los comentarios sobre estos informes de errores me llevan a creer que esto es imposible en la especificación actual.
Por qué no usar la composición en lugar de la herencia y envuelve una LogRecord en lugar de extenderlo? – Yishai
Tener que convertir de ida y vuelta parece más torpe que esto. No veo ninguna razón por la que esto no sea posible. Mi mayor preocupación es por qué XmlAccessType.NONE no afectó a la superclase. –