IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Services Web Java Discussion :

[AXIS][WSDL] Type abstraits, Gestion du polymorphisme ?


Sujet :

Services Web Java

  1. #1
    Membre actif
    Étudiant
    Inscrit en
    Février 2004
    Messages
    193
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 193
    Points : 246
    Points
    246
    Par défaut [AXIS][WSDL] Type abstraits, Gestion du polymorphisme ?
    Bonjour,

    Je developpe un webservice a l'aide d'AXIS et d'eclipse sur un serveur tomcat.

    Mon soucis est le suivant:

    J'ai defini une structure de donnees suivante:

    - TypeParent (abstract=true)
    --- TypeFils
    --- TypeFille

    Je manipule des types fils et fille qui ont une classe mere abstraite (TypeParent)

    Le soucis, c'est que j'utilise mon type abstrait comme parametre pour certaines operations. De cette facon, je peux choisir d'envoyer l un des deux sous type a mon webservice (TypeFils ou TypeFille).

    J'ai genere un client proxy, j ai cree un appel a mon operation en lui passant en parametre l un des deux sous types.

    Seulement, lorsque mon client genere le message soap, le type transmis est le TypeParent. Apparement, Axis ne permet pas de gerer les types abstraits (alors que XML Schema prevoit cette possibilité). Par contre, je ne sais pas si passer un type abstrait en parametre d une operation est correct (apparement oui d'apres ce document : http://www-128.ibm.com/developerwork...xsdchoice.html )
    ou alors si c'est AXIS qui n'est pas capable de gerer ce cas de figure (bug etc ...?)


    Voici l'extrait de mon XSD:

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
     
     
    <complexType name="SearchFragmentType" abstract="true">
    		<annotation>
    			<documentation>
    				A Search Fragment define a sequence of tests (binary
    				comparisons) linked by binary operator (and / Or)
    			</documentation>
    		</annotation>
    	</complexType>
     
    	<complexType name="SearchFragmentSequenceType">
    		<annotation>
    			<documentation>
    				A binary operator is a fragment of a Where clause.
     
    				It links two statements of a where clause by a binary
    				operator such as OR or AND.
     
    				The current statement contains a Clause (which is a
    				test) and the next fragment. The BinaryOperator Element
    				defines how are linked the current clause and the next
    				fragment (AND or OR)
    			</documentation>
    		</annotation>
    		<complexContent>
    			<extension base="tns:SearchFragmentType">
    				<sequence>
    					<element name="CurrentClause"
    						type="tns:SearchConditionClauseType" maxOccurs="1"
    						minOccurs="1">
    					</element>
    					<element name="NextFragment"
    						type="tns:SearchFragmentType" maxOccurs="1" minOccurs="1">
    					</element>
    					<element name="BinaryOperator"
    						type="tns:SearchBinaryOperatorType" maxOccurs="1" minOccurs="1">
    					</element>
    				</sequence>
    			</extension>
    		</complexContent>
    	</complexType>
     
     
     
     
    	<complexType name="SearchConditionClauseType">
    		<annotation>
    			<documentation>
    				Search Clause Fragment is a comparison between a field
    				and a value.
    			</documentation>
    		</annotation>
    		<complexContent>
    			<extension base="tns:SearchFragmentType">
    				<sequence>
    					<element name="Comparator"
    						type="tns:SearchComparatorType" minOccurs="1" maxOccurs="1">
    						<annotation>
    							<documentation>
    								Comparison operator between the field
    								and the value. The field is always
    								compared TO the value. So, the operator
    								LessThan will match the rows where the
    								fieldname's values are less than the
    								submitted value.
    							</documentation>
    						</annotation>
    					</element>
    					<element name="FieldName" type="string"
    						maxOccurs="1" minOccurs="1">
    						<annotation>
    							<documentation>
    								FieldName to search. Pay attention,
    								fieldnames that are not defined by a
    								type will throw an exception.
    							</documentation>
    						</annotation>
    					</element>
    					<element name="Values" maxOccurs="unbounded"
    						minOccurs="1">
    						<annotation>
    							<documentation>
    								Value for the test. When using the Like
    								operator, the wildcard % can be used.
    								Multiples values can be tested (via OR
    								operator)
     
    							</documentation>
    						</annotation>
    					</element>
    				</sequence>
    			</extension>
    		</complexContent>
    	</complexType>
    Avez vous deja essayé de travailler avec le polymorphism avec AXIS ? est-ce possible ? si oui, y-a-t'il des preconisations particulieres, ou alors voyez vous une erreur ?

    Merci
    Java/J2EE, PHP, ASP.NET

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    319
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 319
    Points : 417
    Points
    417
    Par défaut
    j'ai le même problème... j'utilise Eclipse + WTP + Tomcat + Axis 1.4 + JAXB 2.0 (ce dernier est mon deserializer)

    Honnêtement, je pense zapper le polymorphisme...

    Mais si qqun trouve une solution, je suis preneur

  3. #3
    Membre actif
    Étudiant
    Inscrit en
    Février 2004
    Messages
    193
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 193
    Points : 246
    Points
    246
    Par défaut
    Pas trouvé de solution au probleme du polymorphisme avec axis du moins....

    j'ai utilisé une structure en Choice, mais c'est bien moins propre et faut gerer cette structure coté serveur.

    dommage ... :-/
    Java/J2EE, PHP, ASP.NET

  4. #4
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Points : 5 059
    Points
    5 059
    Par défaut
    salut,

    j'ai eu le meme probleme, et axis ne supporte ni le polymorphimse ni les classes abstraites.
    je pense meme le version 2.0 ne les supporte pas..

Discussions similaires

  1. [Axis] WSDL to Java - Problème de conversion type hexBinary
    Par verbose dans le forum Services Web
    Réponses: 1
    Dernier message: 02/09/2011, 15h37
  2. Service Web avec Axis et types complexes.
    Par Skyman37 dans le forum Services Web
    Réponses: 17
    Dernier message: 13/01/2011, 09h28
  3. Réponses: 6
    Dernier message: 25/01/2010, 01h58
  4. Type abstrait de donnée
    Par mia123 dans le forum Pascal
    Réponses: 1
    Dernier message: 01/06/2007, 14h00
  5. TAO, Value types et gestion mémoire
    Par TiChabin972 dans le forum CORBA
    Réponses: 1
    Dernier message: 25/04/2006, 20h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo