Я пытаюсь написать веб-службу для java.util.logging
api. Поэтому я написал класс MyLogRecord, который наследуется от LogRecord. Я аннотировал этот класс с аннотациями JAX-B, включая @XmlAccessorType(XmlAccessType.NONE)
, поэтому он игнорировал бы не аннотированные поля и свойства. Когда я запускаю tomcat, я получаю ошибки, которые java.util.logging.Level
и другие классы java.util.logging
не имеют конструктора по умолчанию, но ни один из моих аннотированных методов не ссылается на класс уровня или любой другой класс java.util.logging
. Они ссылаются на родительский класс.Как игнорировать суперкласс?
В моем подклассе есть все необходимое. Как я могу заставить JAX-B полностью игнорировать родительский класс?
Обновление: Я нашел another post on this, в котором предлагается изменить родительский класс. Это, очевидно, невозможно, потому что я расширяю класс java.util
. Есть ли способ сделать это без изменения суперкласса?
Update2: Я нашел a thread on java.net для аналогичной проблемы. Эта нить привела к enhancement request, который был помечен как дубликат another issue, в результате чего была сделана аннотация @XmlTransient
. Комментарии к этим сообщениям об ошибках заставляют меня думать, что это невозможно в текущей спецификации.
Почему бы не использовать композицию вместо наследования и обернуть LogRecord, а не продлить его? – Yishai
Необходимость конвертировать туда и обратно кажется более неуклюжим, чем это. Я не вижу причин, чтобы это было невозможно. Моя самая большая проблема заключается в том, почему XmlAccessType.NONE не повлиял на суперкласс. –