2010-11-16 12 views

Répondre

2

Oui, c'est possible.

contrat première approche
Vous devez utiliser l'élément jaxb:javaType. Il y a quelques informations générales here et un exemple de ce que vous devez faire here.

contrat dernière approche

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

cartographierons à:

<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

Que puis-je faire si j'utilise l'approche Contract Last décrite dans http://static.springsource.org/spring-ws/sites/1.5/reference/html/why-contract-first.html (générer le WSDL et le schéma à partir de la source Java) plutôt que l'approche Contrat d'abord que votre exemple suppose? –

+0

@Derek - J'ai mis à jour ma réponse mais je n'ai pas encore essayé la dernière approche du contrat. – Catchwa

+0

J'ai essayé votre suggestion, mais sans '@ WebParam' et cela fonctionne. –

1

Je pense que cela fonctionnerait par défaut; JAXB (lieur de données utilisé par les implémentations JAX-WS) doit savoir convertir les valeurs XML en java.util.Calendar. Si ce n'est pas le cas, le type de date/heure par défaut utilisé avec XML est javax.xml.datatype.XMLGregorianCalendar, qui peut être converti en utilisant la méthode toGregorianCalendar() (qui sera de type java.util.GregorianCalendar, un java.util .Catégorie secondaire). Donc, une possibilité est d'obtenir des données liées à XMLGregorianCalendar, puis de simplement revenir en arrière lors de l'accès. Cela peut également être automatisé en utilisant XMLJavaTypeAdapter.