2009-09-06 42 views
5

java.util.logging api için bir web hizmeti yazmaya çalışıyorum. Bu yüzden LogRecord'dan miras alan bir sınıf MyLogRecord yazdım. Bu dersi, @XmlAccessorType(XmlAccessType.NONE) da dahil olmak üzere JAX-B ek açıklamalarıyla açıkladım, bu yüzden açıklanmamış alanlar ve özellikleri göz ardı eder. Ben tomcat başlangıç, ben java.util.logging.Level ve diğer java.util.logging sınıflar bir varsayılan kurucu yok hataları olsun, ama benim açıklamalı yöntemlerin hiçbiri Düzeyi sınıf veya diğer java.util.logging sınıfların herhangi birine herhangi bir referans. Bunlar ana sınıf tarafından başvurulan.Bir üst sınıfı nasıl göz ardı edebilirim?

Benim alt sınıfın tanımlandığı ihtiyacı her şeye sahiptir. JAX-B'yi ana sınıfı tamamen yok saymayı nasıl sağlayabilirim?

Güncelleme: Ben üst sınıfını değiştirerek ileri süren another post on this bulundu. Bu kesinlikle mümkün değil çünkü bir java.util sınıfını genişletiyorum. Süper sınıfı değiştirmeden bunu yapmak için herhangi bir yolu var mı?

Update2: Ben benzer bir sorun için a thread on java.net bulundu. Bu iplik @XmlTransient açıklama ile sonuçlanmıştır another issue bir kopya olarak işaretlenmiş bir enhancement request sonuçlanmıştır. Bu hata raporları hakkındaki yorumlar, mevcut şartlarda bunun imkansız olduğuna inanmamı sağladı.

+0

yerine neden miras bileşimini kullanın ve LogRecord sarın ziyade uzatmaz: Aşağıda belge gibi görünür nedir? – Yishai

+0

Geri ve ileri dönüştürmek zorunda kalmak bundan daha sakıncalı görünüyor. Bunun mümkün olmaması için bir sebep göremiyorum. En büyük endişem, XmlAccessType.NONE'un süper sınıfı neden etkilemediğidir. –

cevap

2

Sen üst sınıf @XmlTransient işaretlemesi gerekir. Ebeveyn sınıfı JRE’de olduğundan ve sizin tarafınızdan değiştirilemediğinden, alternatif bir mekanizmaya ihtiyacınız vardır.

http://wiki.eclipse.org/EclipseLink/Examples/MOXy/EclipseLink-OXM.XML

ek not kullanarak meta bazı belirtebilirsiniz ve XML olarak dinlenme:

EclipseLink JAXB (Moxy) uygulaması bir kullanabilirdin XML olarak meta temsil araçlarını sunmaktadır.

<java-types> 

    <java-type name="java.util.logging.LogRecord" xml-transient="true"/> 

</java-types> 

İlgili konular