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

Spring Java Discussion :

Spring Web Services [Web Services]


Sujet :

Spring Java

  1. #1
    Membre éclairé
    Profil pro
    ingenieur
    Inscrit en
    Avril 2002
    Messages
    207
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : ingenieur

    Informations forums :
    Inscription : Avril 2002
    Messages : 207
    Par défaut Spring Web Services
    Bonjour,
    J'essai de mettre en place un webService avec spring ws (je reprends l'exemple en ligne sur le site de spring) et je ne sais pas trop ce qu'il faut déclarer ?
    Soit mon bean "holiday" suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <bean id="holiday" class="org.springframework.ws.wsdl.wsdl11.DynamicWsdl11Definition">
    	<property name="builder">
    		<bean class="org.springframework.ws.wsdl.wsdl11.builder.XsdBasedSoap11Wsdl4jDefinitionBuilder">
    			<property name="schema" value="/WEB-INF/v100.xsd" />
    			<property name="portTypeName" value="holidayInterface" />
    			<property name="locationUri" value="http://localhost:8080/mytest-web/my/test/v100/" />
    			<property name="targetNamespace" value="http://www.test.fr/my/test/v100/wsdl" />
    		</bean>
    	</property>
    </bean>
    Je pense que "holiday" correspondait à mon wsdl ?
    A quoi correspond la property "locationUri" ?
    A quoi correspond la property "portTypeName" ?


    Par avance Merci pour ces infos.

  2. #2
    Rédacteur
    Avatar de Hikage
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 177
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 177
    Par défaut
    Citation Envoyé par Ho(c)ine. Voir le message
    Bonjour,
    J'essai de mettre en place un webService avec spring ws (je reprends l'exemple en ligne sur le site de spring) et je ne sais pas trop ce qu'il faut déclarer ?
    Soit mon bean "holiday" suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <bean id="holiday" class="org.springframework.ws.wsdl.wsdl11.DynamicWsdl11Definition">
    	<property name="builder">
    		<bean class="org.springframework.ws.wsdl.wsdl11.builder.XsdBasedSoap11Wsdl4jDefinitionBuilder">
    			<property name="schema" value="/WEB-INF/v100.xsd" />
    			<property name="portTypeName" value="holidayInterface" />
    			<property name="locationUri" value="http://localhost:8080/mytest-web/my/test/v100/" />
    			<property name="targetNamespace" value="http://www.test.fr/my/test/v100/wsdl" />
    		</bean>
    	</property>
    </bean>
    Je pense que "holiday" correspondait à mon wsdl ?
    A quoi correspond la property "locationUri" ?
    A quoi correspond la property "portTypeName" ?


    Par avance Merci pour ces infos.

    Bonjour,

    "holiday" correspond en fait à l'url d'acces du wsdl en effet.
    http://tondomaine/tonapplication/url...-dans-web-xml/holiday.wsdl

    locationUri correspond à l'adresse d'accès a ton web service, ce qui correspond a la valeur du tag soap:adresse dans le wsdl :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     <wsdl:service name="HumanResourceService">
            <wsdl:port binding="tns:HumanResourceBinding" name="HumanResourcePort">          
                <soap:address location="http://localhost:8080/holidayService/"/>
            </wsdl:port>
        </wsdl:service>
    Le port type name est le nom du port WebService :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <wsdl:portType name="HumanResource">                                                 
            <wsdl:operation name="Holiday">
                <wsdl:input message="tns:HolidayRequest" name="HolidayRequest"/>             
            </wsdl:operation>
        </wsdl:portType>
    Hikage
    SCJP / SCWCD & SCWSJD Certified / Spring Framework Certified
    [Personal Web] [CV]

    F.A.Q Spring Framework - Participez !

  3. #3
    Membre éclairé
    Profil pro
    ingenieur
    Inscrit en
    Avril 2002
    Messages
    207
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : ingenieur

    Informations forums :
    Inscription : Avril 2002
    Messages : 207
    Par défaut
    Merci pour cette réponse ultra rapide.

  4. #4
    Rédacteur
    Avatar de Hikage
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 177
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 177
    Par défaut
    De rien

    Je suis en train de préparer un article sur le sujet, et ta question me permet de voir qu'il faut que j'explique plus en détail cette partie ;-)
    Hikage
    SCJP / SCWCD & SCWSJD Certified / Spring Framework Certified
    [Personal Web] [CV]

    F.A.Q Spring Framework - Participez !

  5. #5
    Membre éclairé
    Profil pro
    ingenieur
    Inscrit en
    Avril 2002
    Messages
    207
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : ingenieur

    Informations forums :
    Inscription : Avril 2002
    Messages : 207
    Par défaut
    C'est bon ca fonctionne... !
    Bon courage pour ton article....

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 44
    Par défaut Récupérer et insérer des objet depuis et dans le XPath, Spring WS.
    Bonjour,
    J'ai suivi votre exemple pour developper un ws Spring un peu plus volumineu, et j'ai une question à vous poser.
    voici mon fichier 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
     
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:test="http://www.mycompagny.com/schema/test"
               targetNamespace="http://www.mycompagny.com/schema/test" elementFormDefault="qualified">
        <xs:element name="IdentificationRequest" type="test:IdentificationRequestType"/>
        <xs:element name="IdentificationResponse" type="test:IdentificationResponseType"/>
        <xs:complexType name="IdentificationRequestType">   	
            <xs:sequence>
                <xs:element name="attr1" type="xs:ineteger"/>
                <xs:element name="attr2" type="xs:ineteger"/>
                <xs:element name="attr3" type="xs:string"/>
                <xs:element name="attr4" type="xs:string"/>
                <xs:element name="attr5" type="xs:string"/>
                <xs:element name="attr6" type="xs:string"/>
                <xs:element name="attr7" type="xs:date"/>
                <xs:element name="attr8" type="xs:string"/>
                <xs:element name="attr9" type="xs:string"/>
                <xs:element name="attr10" type="xs:string"/>
                <xs:element name="attr11" type="xs:string"/>
            </xs:sequence>
        </xs:complexType>
        <xs:complexType name="IdentificationResponseType">	
            <xs:sequence>
              <xs:element name="Text" type="test:TextType"/>                       
              <xs:element name="Auteur" type="test:AuteurType"/>
            </xs:sequence>
        </xs:complexType>
    	<xs:complexType name="TextType">		
            <xs:sequence>
                <xs:element name="attr1" type="xs:integer"/>
                <xs:element name="attr2" type="xs:ineteger"/>
                <xs:element name="attr3" type="xs:string"/>
                <xs:element name="attr4" type="xs:string"/>
                <xs:element name="attr5" type="xs:string"/>
                <xs:element name="attr6" type="xs:string"/>
                <xs:element name="attr7" type="xs:string"/>
                <xs:element name="attr8" type="xs:string"/>
                <xs:element name="attr9" type="xs:string"/>
                <xs:element name="attr11" type="xs:string"/>
                <xs:element name="attr12" type="xs:string"/>
                <xs:element name="attr13" type="xs:string"/>
                <xs:element name="attr14" type="xs:string"/>
                <xs:element name="attr15" type="xs:string"/>
                <xs:element name="attr16" type="xs:string"/>
                <xs:element name="attr17" type="xs:string"/>
                <xs:element name="attr18" type="xs:string"/>
                <xs:element name="attr19" type="xs:integer"/>
                <xs:element name="attr20" type="xs:string"/>
                <xs:element name="attr21" type="xs:string"/>
                <xs:element name="attr22" type="xs:string"/>
                <xs:element name="attr23" type="xs:string"/>
                <xs:element name="attr24" type="xs:string"/>
                <xs:element name="attr25" type="xs:string"/>
                <xs:element name="attr26" type="xs:string"/>
            </xs:sequence>
        </xs:complexType>
    	<xs:complexType name="AuteurType" maxOccurs="15">
    		<xs:sequence>
    		   <xs:element name="attr1" type="xs:string"/>
                <xs:element name="attr2" type="xs:string"/>
                <xs:element name="attr3" type="xs:string"/>
                <xs:element name="attr4" type="xs:date"/>
                <xs:element name="attr5" type="xs:string"/>
                <xs:element name="attr6" type="xs:string"/>
                <xs:element name="attr7" type="xs:string"/>
                <xs:element name="attr8" type="xs:string"/>
                <xs:element name="attr9" type="xs:string"/>
                <xs:element name="attr10" type="xs:string"/>
                <xs:element name="attr11" type="xs:string"/>
                <xs:element name="attr12" type="xs:string"/>
                <xs:element name="attr13" type="xs:string"/>
                <xs:element name="attr14" type="xs:string"/>
                <xs:element name="attr15" type="xs:string"/>
                <xs:element name="attr16" type="xs:string"/>
                <xs:element name="attr17" type="xs:string"/>
                <xs:element name="attr18" type="xs:integer"/>
                <xs:element name="attr19" type="xs:string"/>
                <xs:element name="attr20" type="xs:string"/>
                <xs:element name="attr21" type="xs:string"/>
    		</xs:sequence>
    	</xs:complexType>
    </xs:schema>
    est ce possible lors de la récupération des données depuis le XPath on peut récupérer un objet Toto par exemple si on considère que les élements de IdentificationRequest ne sont que les attributs de cet objet Toto.
    également lors de la création de la réponse est ce possible au lieu d'injecter élement par élement à l'élement root comme vous le fait dans votre exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Element root = new Element("TraductionResponse", namespace);
            Element auteur = new Element("auteur", namespace);
            auteur.setText(traduction.getAuteur());
    //puis 
    root.addContent(auteur);
    est ce possible de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    /*supposons que l'objet de retour de la méthode traduitText, est un objet complexe composé à la fois d'un objet text et d'une liste de 15 auteurs par exemple comme le monte le code suivant :*/
     
    Traduction traduction = traductionService.traduitTexte(langueOrigine, langueDestination, texteOriginal);
    Text text = (Text) traduction.getText();
    List<Auteur> auteurs = (List<Auteur>) traduction.getListAuteurs;
    ensuite :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Element root = new Element("TraductionResponse", namespace);
    Element text= new Element("Text", namespace);
    text.setAttributes("text");
     
    Element auteur= new Element("Auteur", namespace);
    auteur.setAttributes("auteur");
    //Ensuite 
    root.addContent(text);
    root.addCotent(auteur)
    //Sachant que text est un objet maitenant complexe, et n'est pas un simple //text!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    est ce possible également de faire ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    //auteurs est une liste des auteurs;
    Element auteurs= new Element("List<Auteur>", namespace);
    auteurs.setAttributes("auteurs");
    root.addContent(auteurs);// ça m'étonne! que cela peut se faire comme ça!!
    ou plutôt, je dois setter chaque attribut de chaque objet de la manière dont vous le faite dans l'exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    text.setAttribute(attr1, traduction.getText().getAttr1);
    //ensuite faire :
    root.addContent(text
    Merci d'appuiyer votre réponse par des portions de code.

    Une deuxième question on me demande, l'url, le service, et la méthode (soient disant des élements techniques de la WS), je connais l'url, mais je ne sais pas à quoi correspondent les deux autres?

    Pourriez vs me les indiquer svp.

    Je vous remercie d'avance.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 44
    Par défaut Récupérer et insérer des objet depuis et dans le XPath, Spring WS.
    Bonjour,
    J'ai suivi votre exemple pour developper un ws Spring un peu plus volumineu, et j'ai une question à vous poser.
    voici mon fichier 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
     
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:test="http://www.mycompagny.com/schema/test"
               targetNamespace="http://www.mycompagny.com/schema/test" elementFormDefault="qualified">
        <xs:element name="IdentificationRequest" type="test:IdentificationRequestType"/>
        <xs:element name="IdentificationResponse" type="test:IdentificationResponseType"/>
        <xs:complexType name="IdentificationRequestType">   	
            <xs:sequence>
                <xs:element name="attr1" type="xs:ineteger"/>
                <xs:element name="attr2" type="xs:ineteger"/>
                <xs:element name="attr3" type="xs:string"/>
                <xs:element name="attr4" type="xs:string"/>
                <xs:element name="attr5" type="xs:string"/>
                <xs:element name="attr6" type="xs:string"/>
                <xs:element name="attr7" type="xs:date"/>
                <xs:element name="attr8" type="xs:string"/>
                <xs:element name="attr9" type="xs:string"/>
                <xs:element name="attr10" type="xs:string"/>
                <xs:element name="attr11" type="xs:string"/>
            </xs:sequence>
        </xs:complexType>
        <xs:complexType name="IdentificationResponseType">	
            <xs:sequence>
              <xs:element name="Text" type="test:TextType"/>                       
              <xs:element name="Auteur" type="test:AuteurType"/>
            </xs:sequence>
        </xs:complexType>
    	<xs:complexType name="TextType">		
            <xs:sequence>
                <xs:element name="attr1" type="xs:integer"/>
                <xs:element name="attr2" type="xs:ineteger"/>
                <xs:element name="attr3" type="xs:string"/>
                <xs:element name="attr4" type="xs:string"/>
                <xs:element name="attr5" type="xs:string"/>
                <xs:element name="attr6" type="xs:string"/>
                <xs:element name="attr7" type="xs:string"/>
                <xs:element name="attr8" type="xs:string"/>
                <xs:element name="attr9" type="xs:string"/>
                <xs:element name="attr11" type="xs:string"/>
                <xs:element name="attr12" type="xs:string"/>
                <xs:element name="attr13" type="xs:string"/>
                <xs:element name="attr14" type="xs:string"/>
                <xs:element name="attr15" type="xs:string"/>
                <xs:element name="attr16" type="xs:string"/>
                <xs:element name="attr17" type="xs:string"/>
                <xs:element name="attr18" type="xs:string"/>
                <xs:element name="attr19" type="xs:integer"/>
                <xs:element name="attr20" type="xs:string"/>
                <xs:element name="attr21" type="xs:string"/>
                <xs:element name="attr22" type="xs:string"/>
                <xs:element name="attr23" type="xs:string"/>
                <xs:element name="attr24" type="xs:string"/>
                <xs:element name="attr25" type="xs:string"/>
                <xs:element name="attr26" type="xs:string"/>
            </xs:sequence>
        </xs:complexType>
    	<xs:complexType name="AuteurType" maxOccurs="15">
    		<xs:sequence>
    		   <xs:element name="attr1" type="xs:string"/>
                <xs:element name="attr2" type="xs:string"/>
                <xs:element name="attr3" type="xs:string"/>
                <xs:element name="attr4" type="xs:date"/>
                <xs:element name="attr5" type="xs:string"/>
                <xs:element name="attr6" type="xs:string"/>
                <xs:element name="attr7" type="xs:string"/>
                <xs:element name="attr8" type="xs:string"/>
                <xs:element name="attr9" type="xs:string"/>
                <xs:element name="attr10" type="xs:string"/>
                <xs:element name="attr11" type="xs:string"/>
                <xs:element name="attr12" type="xs:string"/>
                <xs:element name="attr13" type="xs:string"/>
                <xs:element name="attr14" type="xs:string"/>
                <xs:element name="attr15" type="xs:string"/>
                <xs:element name="attr16" type="xs:string"/>
                <xs:element name="attr17" type="xs:string"/>
                <xs:element name="attr18" type="xs:integer"/>
                <xs:element name="attr19" type="xs:string"/>
                <xs:element name="attr20" type="xs:string"/>
                <xs:element name="attr21" type="xs:string"/>
    		</xs:sequence>
    	</xs:complexType>
    </xs:schema>
    est ce possible lors de la récupération des données depuis le XPath on peut récupérer un objet Toto par exemple si on considère que les élements de IdentificationRequest ne sont que les attributs de cet objet Toto.
    également lors de la création de la réponse est ce possible au lieu d'injecter élement par élement à l'élement root comme vous le fait dans votre exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Element root = new Element("TraductionResponse", namespace);
            Element auteur = new Element("auteur", namespace);
            auteur.setText(traduction.getAuteur());
    //puis 
    root.addContent(auteur);
    est ce possible de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    /*supposons que l'objet de retour de la méthode traduitText, est un objet complexe composé à la fois d'un objet text et d'une liste de 15 auteurs par exemple comme le monte le code suivant :*/
     
    Traduction traduction = traductionService.traduitTexte(langueOrigine, langueDestination, texteOriginal);
    Text text = (Text) traduction.getText();
    List<Auteur> auteurs = (List<Auteur>) traduction.getListAuteurs;
    ensuite :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Element root = new Element("TraductionResponse", namespace);
    Element text= new Element("Text", namespace);
    text.setAttributes("text");
     
    Element auteur= new Element("Auteur", namespace);
    auteur.setAttributes("auteur");
    //Ensuite 
    root.addContent(text);
    root.addCotent(auteur)
    //Sachant que text est un objet maitenant complexe, et n'est pas un simple //text!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    est ce possible également de faire ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    //auteurs est une liste des auteurs;
    Element auteurs= new Element("List<Auteur>", namespace);
    auteurs.setAttributes("auteurs");
    root.addContent(auteurs);// ça m'étonne! que cela peut se faire comme ça!!
    ou plutôt, je dois setter chaque attribut de chaque objet de la manière dont vous le faite dans l'exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    text.setAttribute(attr1, traduction.getText().getAttr1);
    //ensuite faire :
    root.addContent(text
    Merci d'appuiyer votre réponse par des portions de code.

    Une deuxième question on me demande, l'url, le service, et la méthode (soient disant des élements techniques de la WS), je connais l'url, mais je ne sais pas à quoi correspondent les deux autres?

    Pourriez vs me les indiquer svp.

    Je vous remercie d'avance.

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 44
    Par défaut
    Bonjour,
    Je vais me répondre moi même, car je pense avoir trouvé la solution:

    En fait lorsqu'on a une liste des objets a rajouter à l'élement root de JDom , il faut faire comme suivant :
    Supposons que nous avons une liste des objets auteurs, ainsi qu'un objet text,
    Voici comment j'avais fais:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Element root = new Element("TraductionResponse", namespace);
     
    Element text = new Element("text", namespace);
    Element titre = new Element("titre", namespace);
    text.addContent(titre);
    root.addContent(text);
    for(Auteur aut : listeAuteurs){
    Element auteur = new Element("auteur", namespace);
    		Element civilite = new Element("civilite", namespace);
    		civilite.setText(aut.getCivilite());
    		auteur .addContent(civilite);
    		root.addContent(auteur );
    }
    Et ça marche.

    J'espère que ça a apporté de l'aide pour certains.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Web Services] Tutoriel sur l'utilisation de Spring Web Services
    Par regis1512 dans le forum Spring
    Réponses: 1
    Dernier message: 02/07/2015, 07h54
  2. [Web Services] Intégration de Esper avec Spring Web Service
    Par lollita2321 dans le forum Spring
    Réponses: 0
    Dernier message: 15/04/2013, 21h20
  3. configurer hibernate sous Spring web services
    Par MyPaiN dans le forum Hibernate
    Réponses: 2
    Dernier message: 25/05/2009, 11h22

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