29 votes

Comment puis-je faire un WebMethod paramètre obligatoire

Nous utilisons le "commencer à partir de Java" approche pour la création de JAX-WS 2.0 de services web en utilisant le Métro de 1,5 pile. Lorsque nous point une norme comme outil SoapUI à l'un de nos services web, il indique que les paramètres de WebMethods sont facultatifs. L'généré xsd montre minOccurs=0.

J'ai besoin d'un moyen de faire WebMethod paramètres requis (peut-être minOccurs=1 dans le fichier xsd) dans le "démarrer à partir de Java" approche. Je pense qu'il y a une annotation Java, mais je n'ai pas été capable d'en trouver un. XmlElement annotation a attribut obligatoire, mais XmlElement ne peut pas être appliqué à WebMethod paramètres.

Est-il un moyen de faire de mon WebMethod paramètres requis, court de modifier manuellement le fichier xsd et réglage minOccurs à 1?

28voto

Dean Schulze Points 2408

J'ai vérifié que le Métro 2.0 ne vous permettent de fixer @XmlElement(required=true) sur un paramètre. L'généré xsd n'ont pas d' minOccurs=0. Il laisse minOccurs de la générées xsd donc il prend la valeur par défaut de 1.

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

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

Grâce à jitu pour à la fois la réponse et en soulignant que minOccurs par défaut à 1, afin de laisser de la .xsd a l'effet désiré.

Quand @XmlElement(required=true) est définie sur le paramètre SoapUI n'indique plus que le paramètre facultatif.

6voto

Pascal Thivent Points 295221

L'généré xsd montre minOccurs=0.

C'est par spécification: non-primitives sont en option, seules les primitives sont nécessaires.

J'ai besoin d'un moyen de faire WebMethod paramètres requis (peut-être minOccurs=1 dans le fichier xsd) dans le "démarrer à partir de Java" approche.

Ce n'est pas possible, à moins d'utiliser des primitives, comme mentionné précédemment.

Et effectivement, c'est une des raisons pour lesquelles Java-aspire d'abord (oui, les développeurs comme elle, mais il ne fonctionne tout simplement pas): fragile, le contrat peut changer(!), sa ne vous donne pas tout le contrôle dont vous avez besoin, il ne fait pas bon ménage avec WS-Security, etc. Donc, en effet, en premier contrat n'est pas agréable, mais au moins, il fonctionne.

2voto

Dean Schulze Points 2408

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

http://forums.java.net/jive/thread.jspa?messageID=385565

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X