このルールは、以下のいずれかのスキーマ・タイプへの参照にフラグを立てる:
http://www.w3.org/2001/XMLSchema:duration, http://www.w3.org/2001/XMLSchema:dateTime,
http://www.w3.org/2001/XMLSchema:time, http://www.w3.org/2001/XMLSchema:date,
http://www.w3.org/2001/XMLSchema:gYearMonth, http://www.w3.org/2001/XMLSchema:gYear, NAMESPACE:gMonth,
http://www.w3.org/2001/XMLSchema:gDay
これらのスキーマ型とJAX-RPCに関連するJava型
java.util.String
および
java.util.Calendar
はJAX-WSではサポートされていない。
JAX-WSおよびJAXBへの移行には、サポートされるJava型にこれらのスキーマ型を使用する必要がある。
これらのスキーマ・タイプをサポートされているJavaタイプ
javax.xml.datatype.XMLGregorianCalendar
代わりに使用します。
JAX-RPCカレンダー・クラスの例は次のようになる:
インポートjava.util.Calendar.Calendar
import java.rmi.RemoteException;
public CalendarcalculateShippingDate(Calendar requestedDate) throwsRemoteException;{
// 送信された日付に設定し、7日追加します。
requestedDate.addjava.util.Calendar.DAY_OF_MONTH, 7);
//・・・。
returnrequestedDate;
}.
JAX-WSXMLGregorianCalendarクラスの例は以下のようになる:
インポートjavax.xml.datatype.XMLGregorianCalendar;
インポートjavax.xml.datatype.DatatypeConfigurationException;
public XMLGregorianCalendar calculateShippingDate(
XMLGregorianCalendar requestedDate) {
try {
// データ型ファクトリーを作成します。
DatatypeFactorydf =DatatypeFactory.newInstance();
//送信されてきた日付を設定し
7日を加える。
Duration duration =df.newDuration("P7D");
requestedDate.add(duration);
} catchDatatypeConfigurationExceptione) {
// TODO 自動生成キャッチブロック
e.printStackTrace();
}
//・・・。
returnrequestedDate;
}.
上の例からわかるように、入力パラメータは、型が
java.util.Calendar
へ
javax.xml.datatype.XMLGregorianCalendar
.
これは、WSDLがこれらのパラメーターの型を指定しているためである、
xsd:dateTime
JAX-RPC はこのデータ型を
java.util.Calendar
にマップする
javax.xml.datatype.XMLGregorianCalendar
.