Bonjour à toute la communauté.
Je suis spectateur de ce site et son forum depuis de nombreuses années.
Aujourd'hui je deviens acteur en demandant votre aide.

J'expose actuellement un WebService devant reposer sur la norme de JAX-WS.
Pour ce faire j'utilise donc les librairies JAXB (Peut être est-il possible d'en utiliser d'autres ?)

Mon problème est que je dois forcer la présence de paramètres en entrée de la méthode exposer.

Exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "Internaute ", propOrder = {
    "civilite",
    "nom",
    "prenom",
    "eMail",
})
public class Internaute {
		@XmlElement(required = true)
		private String civilite;
		@XmlElement(required = true)
		private String nom;
		@XmlElement(required = true)
		private String prenom;
		@XmlElement(required = true)
		private String eMail;
Dans mon cas tout les éléments sont obligatoires.
Cependant, une fois mon webservice exposé, la WSDL générée me donne le schéma suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
<xs:sequence>
    <xs:element name="civilite" type="xs:string"/>
    <xs:element name="nom" type="xs:string"/>
    <xs:element name="prenom" type="xs:string"/>
    <xs:element name="eMail" type="xs:string"/>
</xs:sequence>
Mon problème est que après avoir consulter de nombreux forums et essayer de nombreuses solutions, je ne parviens toujours pas à forcer le minOccurs=1 dans l'élément du schéma.

Par défaut si je supprime l'annotation Java : @XmlElement(required = true)
J'obtient le schéma suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
<xs:sequence>
    <xs:element minOccurs="0" name="civilite" type="xs:string"/>
    <xs:element minOccurs="0" name="nom" type="xs:string"/>
    <xs:element minOccurs="0" name="prenom" type="xs:string"/>
    <xs:element minOccurs="0" name="eMail" type="xs:string"/>
</xs:sequence>
J'ai aussi essayé avec les annotations suivantes :
@XmlElement(nillable = true, required = true)
@XmlElement(nillable = false, required = true)

Mais le schéma est identique au premier cité ci-dessus.

Ce que je voudrais obtenir devrais ressembler à ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
<xs:sequence>
    <xs:element minOccurs="1" name="civilite" type="xs:string"/>
    <xs:element minOccurs="1" name="nom" type="xs:string"/>
    <xs:element minOccurs="1" name="prenom" type="xs:string"/>
    <xs:element minOccurs="1" name="eMail" type="xs:string"/>
</xs:sequence>
Sur certains forum on parle du fait que JAXB ne gère pas cette annotation au niveau du schéma mais uniquement au niveau de la documentation.

Est-ce vrai ou bien y'a-t-il une solution que je n'ai pas trouvée ?

Merci d'avance à vous.