5

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

4

1 に答える 1

2

親クラス @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>

于 2010-07-06T14:32:30.287 に答える