Apache cxf を使用して、WSDL に基づいていくつかのモデル クラスを生成しました。次に、jaxb bindingfile を追加して、すべての xs:dateTime 要素と xs:date 要素を (デフォルトの XMLGregorianCalendar ではなく) java.util.date に変換します。
<jxb:javaType name="java.util.Date" xmlType="xs:date"
parseMethod="org.apache.cxf.tools.common.DataTypeAdapter.parseDate"
printMethod="org.apache.cxf.tools.common.DataTypeAdapter.printDate"/>
<jxb:javaType name="java.util.Date" xmlType="xs:dateTime"
parseMethod="org.apache.cxf.tools.common.DataTypeAdapter.parseDateTime"
printMethod="org.apache.cxf.tools.common.DataTypeAdapter.printDateTime"/>
これはすべてうまく機能し、completype 要素のすべての xs:date および xs:dateTime プロパティは java.util.Date として生成されます。
これらのモデル オブジェクトに基づいて Metro JAX-WS サービスを作成しようとすると、問題が発生します。私の場合、すべての java.util.Date フィールドは、サービスの .xsd ファイルでdataType xs:stringとしてレンダリングされます。
cxf による生成後、関連するモデルのプロパティに次の注釈が付けられているという事実を除いて、なぜこれが起こっているのかわかりません。
@XmlElement(required = true, type = String.class)
@XmlJavaTypeAdapter(Adapter1 .class)
protected Date datumTijdBedrijfsdocument;
type="String.class" が原因で、すべてのプロパティが xs:string フィールドとして生成される可能性があると想像できます。
もちろん、すべてのオブジェクトを手動で編集することもできますが、この問題を宣言的に防ぐために、Metro の apache CFX で解決策を本当に探しています。
この問題が私を膠着状態に陥らせたので、皆さんが私を助けてくれることを願っています
どうも!