5

JAX-RPC1.1を使用するJavaEE1.4では、Webサービスを公開するにはどうすればよいですか?wsdlには複合型(person)があり、personのプロパティの1つは日付であり、WSDL/XSDでは日付としてのみ表示されますWSDL / XSDのdateTime(時刻が不要な場合)の代わりに(生年月日など)?

wsdlで参照されているxsdに

<xs:element name="birthdate" type="xs:date"/>

それ以外の

<xs:element name="birthdate" type="xs:dateTime"/>

java.util.Calendarとjava.util.Dateはどちらも、wsdl / xsdでレンダリングされると、xsdデータ型がdateTimeになるようです。

javaEE1.4にはjavaEE5のような注釈がないことは知っていますが、Webサービスにxs:dateデータ型を使用するように指示する方法はありますか?

4

3 に答える 3

1

これを達成できるとは思いません。JAX-RPC には柔軟性がありません (これが JavaEE 5 で廃止された理由です)。

一般に、WSDL ジェネレーターには、必要な WSDl を正確に生成するための表現力がないことがよくわかります。そのため、WSDL ジェネレーターを使用して開始点として WSDL を生成し、結果を変更する傾向があります。次に、生成されたファイルではなく、静的ファイルとして WSDL をサーバーにアップします。理想的ではありませんが、大したことでもありません。

于 2009-07-27T16:37:02.097 に答える
1

私は実際にこれを適切に行う方法を理解しました。

WEB-INF/wsdl/(schemaname).xsd で、データ型を dateTime から date に変更し、サービスを再デプロイすると、既存の java.util.Calendar 型で動作します。

于 2009-07-28T19:25:23.273 に答える
0

あなたが正しいIBMのドキュメントによると、 dateとdateTimeの両方がCalendarにマップされます。日付部分のみを使用する標準的な方法はないようです。もちろん、独自の方法を作成することもできます(興味深いことに、参照記事の 2 ページ目には日付は日付専用であると記載されていますが、3 ページ目ではそれが Calendar にマップされていることが確認されています)。

参考までに、 WCF でこれを行うことについて同様の質問があります。

于 2009-07-26T21:35:33.693 に答える