web-dev-qa-db-fra.com

Comment puis-je faire un paramètre WebMethod requis?

Nous utilisons l'approche "Démarrer depuis Java" pour créer des services Web JAX-WS 2.0 à l'aide de la pile Metro 1.5. Lorsque nous signalons un outil standard comme SOPUI à l'un de nos services Web, il indique que les paramètres de Webmethods sont facultatifs. Le XSD généré des spectacles minocommunis = 0.

J'ai besoin d'un moyen de faire des paramètres WebMethod requis (peut-être que Minoccurs = 1 dans la XSD) dans l'approche "Démarrer de Java". Je penserais qu'il y a une annotation Java pour cela, mais je n'ai pas pu en trouver un. L'annotation XMLElement a besoin d'attribut requis, mais XMLElement ne peut pas être appliqué sur les paramètres WebMethod.

Existe-t-il un moyen de rendre mes paramètres WebMethod requis, d'édition manuelle de la modification manuelle du XSD et de la définition des minocurs à 1?

30
Dean Schulze

J'ai vérifié que Metro 2.0 vous permet de définir @XmlElement(required=true) sur un paramètre. Le XSD généré n'a pas minOccurs=0. Il laisse minOccurs hors du XSD généré afin qu'il suppose la valeur par défaut de 1.

Vous devez également mettre à niveau votre JDK en mettant le JAX-WS 2.2 webservices-api.jar dans le endorsed/ répertoire.

J'ai posté la même question sur le Java Forums .

Grâce à Jitit pour la réponse et en soulignant que les minocœurs sont par défaut à 1, ce qui le quitte donc de la .xsd a l'effet souhaité.

Lorsque @XMLElement (requis = TRUE) est défini sur le paramètre SOPUII n'indique plus que le paramètre est facultatif.

28
Dean Schulze

Le XSD généré des spectacles minocommunis = 0.

Ceci est spécifié: Toutes les non-primitives sont facultatives, seules les primitives sont nécessaires.

J'ai besoin d'un moyen de faire des paramètres WebMethod requis (peut-être que Minoccurs = 1 dans la XSD) dans l'approche "Démarrer de Java".

Cela n'est pas possible, sauf si vous utilisez des primitives comme mentionné précédemment.

Et en fait, c'est l'une des raisons pour lesquelles Java-d'abord craint (ouais, des développeurs comme celui-ci, mais ça ne fonctionne pas ): sa fragile, le contrat peut changer (!), Sa ne pas vous donner tout le contrôle dont vous avez besoin, cela ne doit pas convient bien à WS-Security , etc. SO, en effet, contrat-premier n'est pas agréable, mais du moins, Ça marche.

6
Pascal Thivent

Voici une autre discussion sur cette même question. Selon la réponse Metro 2.0 prend en charge la mise @XMLElement sur un paramètre de méthode qui devrait résoudre mon problème.

http://forums.java.net/jive/thread.jspa?messageid=385565&#385565

Metro 2.0 a été publié le 10 décembre 2009, ce n'est donc plus dans l'EA. Je vais essayer de voir si cela fonctionne.

2
Dean Schulze