Sto provando a scrivere un servizio Web per l'API java.util.logging
. Così ho scritto una classe MyLogRecord che eredita da LogRecord. Ho annotato questa classe con annotazioni JAX-B, incluso @XmlAccessorType(XmlAccessType.NONE)
in modo da ignorare i campi e le proprietà non annotati. Quando avvio Tomcat, ottengo errori che le classi e altre java.util.logging
non hanno un costruttore predefinito, ma nessuno dei miei metodi annotati fa alcun riferimento alla classe Level o alle altre classi java.util.logging
. Questi sono referenziati dalla classe genitore.Come posso ignorare una superclasse?
La mia sottoclasse ha tutto ciò che è necessario definire. Come posso far sì che JAX-B ignori completamente la classe genitore?
Aggiornamento: ho trovato another post on this, che suggerisce di modificare la classe genitore. Questo ovviamente non è possibile perché sto estendendo una classe java.util
. C'è un modo per farlo senza modificare la superclasse?
Update2: Ho trovato a thread on java.net per un problema simile. Tale thread ha generato un enhancement request, contrassegnato come duplicato di another issue, che ha provocato l'annotazione @XmlTransient
. I commenti su questi bug report mi portano a credere che questo sia impossibile nelle specifiche attuali.
perché non utilizzare la composizione, invece di eredità e avvolgere un LogRecord piuttosto che estendono esso? – Yishai
Dovendo convertire avanti e indietro sembra più maldestro di questo. Non vedo ragioni per cui questo non dovrebbe essere possibile. La mia più grande preoccupazione è perché XmlAccessType.NONE non ha influenzato la superclasse. –