2010-06-02 37 views
0

我已經用spring配置了一個簡單的CXF endpoit,用java.util.Date屬性公開了一個簡單的對象。一旦使用.NET客戶端遠程調用 ,date屬性始終爲空。CXF端點上日期類型的問題

endopit:

<jaxws:endpoint id="simpleService" implementor="cxf.base.SimpleServiceImpl" address="/SimpleService" /> 

.NET呼叫:

SimpleServiceClient client = new SimpleServiceClient(); 
    simpleObject simpleObject = new simpleObject(); 
    simpleObject.date = new DateTime(2010, 1, 1); 
    simpleObject.name = "Simple Object"; 

    txtResult.Text = client.toString(simpleObject); 

其中的toString是exposde web服務方法。

任何想法我在這裏失蹤?

回答

1

我想這是在服務器端的馬歇爾階段,這有bug。如果你不確定,那麼在服務器端做一些日誌記錄。此外,tcp/ip監視器可以顯示傳輸的SOAP元素。 Eclipse例如有一個很好的tcp/ip監視器視圖。

如果這是一個編組錯誤,並且您使用JAXB編組,那麼您必須將java.util.Date值轉換爲javax.xml.datatype.XMLGregorianCalendar值。

這可以通過javax.xml.datatype.DatatypeFactory類來完成。

請務必使用與您的日期元素匹配的超載newXMLGregorianCalendar()方法。

有關不同的日期和時間XSD元素良好的信息的頁面: http://www.w3schools.com/Schema/schema_dtypes_date.asp