comment Utiliser JAXWS/JAXB renommer le paramètre
- Je utiliser CXF(2.2.3) pour compiler le Amazon Web Service WSDL (http://s3.amazonaws.com/ec2-downloads/2009-07-15.ec2.wsdl)
Mais suis d'erreur comme ci-dessous.
Paramètre: snapshotSet existe déjà
pour la méthode describeSnapshots mais de
type
com.amazonaws.ec2.doc._2009_07_15.DescribeSnapshotsSetType
au lieu de
com.amazonaws.ec2.doc._2009_07_15.DescribeSnapshotsSetResponseType.
Utiliser un JAXWS/JAXB de liaison de personnalisation
pour renommer le paramètre.
Le conflit était dû au type de données ci-dessous:
<xs:complexType name="DescribeSnapshotsType">
<xs:sequence>
<xs:element name="snapshotSet" type="tns:DescribeSnapshotsSetType"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="DescribeSnapshotsResponseType">
<xs:sequence>
<xs:element name="requestId" type="xs:string"/>
<xs:element name="snapshotSet" type="tns:DescribeSnapshotsSetResponseType"/>
</xs:sequence>
</xs:complexType>
J'ai créer un fichier de liaison tenter de répondre à la question...mais il n'a pas faire le travail
<jaxws:bindings
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
wsdlLocation="EC2_2009-07-15.wsdl"
xmlns="http://java.sun.com/xml/ns/jaxws"
xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
xmlns:jaxws="http://java.sun.com/xml/ns/jaxws">
<enableWrapperStyle>false</enableWrapperStyle>
<jaxws:bindings node="wsdl:definitions/wsdl:types/xs:schema[@targetNamespace='http://ec2.amazonaws.com/doc/2009-07-15/']">
<jxb:bindings node="xs:complexType[@name='tns:DescribeSnapshotsType']//xs:element[@name='snapshotSet']">
<jxb:property name="snapshotRequestSet"/>
</jxb:bindings>
<jxb:bindings node="xs:complexType[@name='DescribeSnapshotsResponseType']//xs:element[@name='snapshotSet']">
<jxb:property name="snapshotResponseSet"/>
</jxb:bindings>
</jaxws:bindings>
</jaxws:bindings>
Et la commande que j'ai utilisé, c'était comme ci-dessous
<wsdlOptions>
<wsdlOption>
<wsdl>${basedir}/src/main/resources/wsdl/EC2_2009-07-15.wsdl</wsdl>
<extraargs>
<extraarg>-b</extraarg>
<extraarg>${basedir}/src/main/resources/wsdl/Bindings_EC2_2009-07-15.xml</extraarg>
</extraargs>
</wsdlOption>
</wsdlOptions>
Quel est le problème avec mon code????
Et vous pouvez consulter mon projet en utilisant svn....
svn co http://shrimpysprojects.googlecode.com/svn/trunk/smartcrc/AWSAgent/
-autoNameResolution
devrait résoudre le conflit automatiquement... BTW, ce qui est erroné avec votre liaisons personnalisées? Avez-vous la même erreur?OriginalL'auteur jojo | 2009-09-25
Vous devez vous connecter pour publier un commentaire.
Cette partie
<enableWrapperStyle>false</enableWrapperStyle>
devrait être
<jaxws:enableWrapperStyle>false</jaxws:enableWrapperStyle>
OriginalL'auteur MJB
Dans votre liaison de fichier, vous utilisez
xs:.....
mais la référence de l'espace de noms http://www.w3.org/2001/XMLSchema estxds
donc si il ne fonctionne pas, essayez de renommer la référencexsd
àxs
(en passant merci pour la solution, ça fonctionne)
OriginalL'auteur Ricahard van den den berg
@PascalThivent mentionné, CXF a un paramètre, -autoNameResolution, que vous devez essayer d'utiliser. Le message donné par CXF lorsqu'il rencontre ce, malheureusement, n'en fait pas mention.
OriginalL'auteur Chris
Pour quiconque essaie ceci: je résume toutes les corrections:
OriginalL'auteur albfan