此規則標記對以下任何架構類型的參考:
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類型一起使用
javax.xml.datatype.XMLGregorianCalendar
取代。
JAX-RPC 日曆類別的範例如下所示:
導入java.util.Calendar ;
import java.rmi.RemoteException;
公共日曆calculateShippingDate(CalendarrequestedDate )拋出RemoteException; {
// 將日期設定為發送給我們的日期並新增 7 天。
requestedDate .add( java.util.Calendar.DAY_OF_MONTH , 7);
// . 。 。
返回requestedDate;
}
JAX-WS XMLGregorianCalendar類別的範例如下所示:
導入javax.xml.datatype.XMLGregorianCalendar;
導入javax.xml.datatype.DatatypeConfigurationException;
public XMLGregorianCalendar calculateShippingDate(
XMLGregorianCalendar requestedDate) {
嘗試{
//建立資料類型工廠。
DatatypeFactory df = DatatypeFactory.newInstance( );
//將日期設定為發送給我們的日期並新增 7 天。
持續時間 = df.newDuration("P7D" );
requestedDate .add(duration);
} catch ( DatatypeConfigurationException e) {
// TODO 自動產生的 catch 區塊
e.printStackTrace();
}
// . 。 。
回傳requestedDate;
}
從上面的例子可以看出,輸入參數的類型發生了變化
java.util.Calendar
收件者
javax.xml.datatype.XMLGregorianCalendar
.
這是因為 WSDL 將這些參數指定為下列類型:
xsd:dateTime
, JAX-RPC 將此資料類型對應到
java.util.Calendar
,而 JAX-WS 和 JAXB 將其映射到
javax.xml.datatype.XMLGregorianCalendar
.