2010-11-16 35 views

回答

2

是的,它可以。

合同第一種方法
您需要使用jaxb:javaType元素。有一些一般信息here和你需要做的一個例子here

合同最後一種方法

@WebMethod(operationName = "getTest") 
public Calendar getTest(@WebParam(name = "input") Calendar input) { 
    input.roll(Calendar.DAY_OF_YEAR, 1); 
    return input 
} 

將映射到:

<xs:complexType name="getTest"> 
    <xs:sequence> 
    <xs:element name="input" type="xs:dateTime" minOccurs="0"/> 
    </xs:sequence> 
</xs:complexType> 

<xs:complexType name="getTestResponse"> 
    <xs:sequence> 
    <xs:element name="return" type="xs:dateTime" minOccurs="0"/> 
    </xs:sequence> 
</xs:complexType> 
+0

如果我使用http://static.springsource.org/spring-ws/sites/1.5/reference/html/why-contract-first.html(生成WSDL中描述的最後合同方法,該怎麼辦?和來自Java源的模式),而不是您的示例假設的合同優先方法? – 2010-11-16 22:19:33

+0

@Derek - 我已經更新了我的答案,但是我還沒有嘗試過最後一種方法。 – Catchwa 2010-11-16 23:56:43

+0

我試過了你的建議,但沒有'@ WebParam',它可以工作。 – 2010-11-18 22:07:30

1

我認爲這將默認工作; JAXB(JAX-WS實現使用的數據綁定)應該知道如何在XML值和java.util.Calendar之間進行轉換。

如果不是,則用於XML的默認日期/時間數據類型是javax.xml.datatype.XMLGregorianCalendar,可以使用方法toGregorianCalendar()轉換它(它將是java.util.GregorianCalendar類型,java.util類型.Calendar子類)。所以有一種可能性是將數據綁定到XMLGregorianCalendar,然後在訪問時只需將其來回轉換。這也可以通過使用XMLJavaTypeAdapter自動完成。