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 :

[JAX-WS]Paramètre d'un webservice


Sujet :

Services Web Java

  1. #1
    Membre confirmé Avatar de Rizzen
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 115
    Par défaut [JAX-WS]Paramètre d'un webservice
    j'utilise actuellement l'api JAX-WS sur un serveur JBoss 4.2.2 GA pour générer et déployer des web services. Je voudrais savoir comment faire pour que lors de l'import de wsdl dans .net ou flex j'ai un appel de méthode avec mes paramètres et non le besoins de passer par un objet dans lequel j'initialise mes paramètres

    ex :
    Je ne veux pas ça
    getMethode m = new getMethode();
    m.arg0 = "";
    m.arg1 = "";
    service.getMethode(m);

    mais ça
    service.getMethode(arg0, arg1);

    voilà mon code
    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
    @Remote
    @WebService(wsdlLocation="META-INF/Media.wsdl")	
    @SOAPBinding(style=SOAPBinding.Style.DOCUMENT, use=SOAPBinding.Use.LITERAL, parameterStyle= SOAPBinding.ParameterStyle.WRAPPED)
     
    public interface MediaService {
     
    	@WebMethod(operationName="saveTheme", action="urn:saveTheme")
    	public String saveTheme(String type, Long idUser, String name, String dsescription, Long idTheme, Long idParent, Integer publish, Long order);
     
    	@WebMethod(operationName="getTheme", action="urn:getTheme")
    	public String getTheme(	@WebParam(name="login" )String login, 
    							@WebParam(name="type" )String type, 
    							@WebParam(name="idTheme" )String idTheme);
     
    	@WebMethod(operationName="getCard", action="urn:getCard")
    	public String getCard(String login, String type, Long id);
    WSDL
    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
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    <?xml version="1.0" encoding="UTF-8"?>
    <definitions name="Media" targetNamespace="http://service.media.bo.priad.com/" xmlns:tns="http://service.media.bo.priad.com/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns="http://schemas.xmlsoap.org/wsdl/">
      <types>
        <xs:schema targetNamespace="http://service.media.bo.priad.com/" version="1.0" xmlns:tns="http://service.media.bo.priad.com/" xmlns:xs="http://www.w3.org/2001/XMLSchema">
       <xs:element name="getCard" type="tns:getCard"/>
       <xs:element name="getCardResponse" type="tns:getCardResponse"/>
       <xs:element name="getTheme" type="tns:getTheme"/>
       <xs:element name="getThemeResponse" type="tns:getThemeResponse"/>
       <xs:element name="saveTheme" type="tns:saveTheme"/>
       <xs:element name="saveThemeResponse" type="tns:saveThemeResponse"/>
       <xs:complexType name="saveTheme">
        <xs:sequence>
         <xs:element minOccurs="0" name="arg0" type="xs:string"/>
         <xs:element minOccurs="0" name="arg1" type="xs:long"/>
         <xs:element minOccurs="0" name="arg2" type="xs:string"/>
         <xs:element minOccurs="0" name="arg3" type="xs:string"/>
         <xs:element minOccurs="0" name="arg4" type="xs:long"/>
         <xs:element minOccurs="0" name="arg5" type="xs:long"/>
         <xs:element minOccurs="0" name="arg6" type="xs:int"/>
         <xs:element minOccurs="0" name="arg7" type="xs:long"/>
        </xs:sequence>
       </xs:complexType>
       <xs:complexType name="saveThemeResponse">
        <xs:sequence>
         <xs:element minOccurs="0" name="return" type="xs:string"/>
        </xs:sequence>
       </xs:complexType>
       <xs:complexType name="getTheme">
        <xs:sequence>
         <xs:element minOccurs="0" name="login" type="xs:string"/>
         <xs:element minOccurs="0" name="type" type="xs:string"/>
         <xs:element minOccurs="0" name="idTheme" type="xs:string"/>
        </xs:sequence>
       </xs:complexType>
       <xs:complexType name="getThemeResponse">
        <xs:sequence>
         <xs:element minOccurs="0" name="return" type="xs:string"/>
        </xs:sequence>
       </xs:complexType>
       <xs:complexType name="getCard">
        <xs:sequence>
         <xs:element minOccurs="0" name="arg0" type="xs:string"/>
         <xs:element minOccurs="0" name="arg1" type="xs:string"/>
         <xs:element minOccurs="0" name="arg2" type="xs:long"/>
        </xs:sequence>
       </xs:complexType>
       <xs:complexType name="getCardResponse">
        <xs:sequence>
         <xs:element minOccurs="0" name="return" type="xs:string"/>
        </xs:sequence>
       </xs:complexType>
      </xs:schema>
      </types>
      <message name="MediaService_saveTheme">
        <part name="saveTheme" element="tns:saveTheme">
        </part>
      </message>
      <message name="MediaService_getCardResponse">
        <part name="getCardResponse" element="tns:getCardResponse">
        </part>
      </message>
      <message name="MediaService_saveThemeResponse">
        <part name="saveThemeResponse" element="tns:saveThemeResponse">
        </part>
      </message>
      <message name="MediaService_getCard">
        <part name="getCard" element="tns:getCard">
        </part>
      </message>
      <message name="MediaService_getTheme">
        <part name="getTheme" element="tns:getTheme">
        </part>
      </message>
      <message name="MediaService_getThemeResponse">
        <part name="getThemeResponse" element="tns:getThemeResponse">
        </part>
      </message>
      <portType name="MediaService">
        <operation name="getCard" parameterOrder="getCard">
          <input message="tns:MediaService_getCard">
        </input>
          <output message="tns:MediaService_getCardResponse">
        </output>
        </operation>
        <operation name="getTheme" parameterOrder="getTheme">
          <input message="tns:MediaService_getTheme">
        </input>
          <output message="tns:MediaService_getThemeResponse">
        </output>
        </operation>
        <operation name="saveTheme" parameterOrder="saveTheme">
          <input message="tns:MediaService_saveTheme">
        </input>
          <output message="tns:MediaService_saveThemeResponse">
        </output>
        </operation>
      </portType>
      <binding name="MediaServiceBinding" type="tns:MediaService">
        <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
        <operation name="getCard">
          <soap:operation soapAction="urn:getCard"/>
          <input>
            <soap:body use="literal"/>
          </input>
          <output>
            <soap:body use="literal"/>
          </output>
        </operation>
        <operation name="getTheme">
          <soap:operation soapAction="urn:getTheme"/>
          <input>
            <soap:body use="literal"/>
          </input>
          <output>
            <soap:body use="literal"/>
          </output>
        </operation>
        <operation name="saveTheme">
          <soap:operation soapAction="urn:saveTheme"/>
          <input>
            <soap:body use="literal"/>
          </input>
          <output>
            <soap:body use="literal"/>
          </output>
        </operation>
      </binding>
      <service name="Media">
        <port name="MediaBeanPort" binding="tns:MediaServiceBinding">
          <soap:address location="http://192.168.10.52:8080/Priad-ejb-0.0.1-SNAPSHOT/MediaBean"/>
        </port>
      </service>
    </definitions>

  2. #2
    oca
    oca est déconnecté
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    354
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2004
    Messages : 354
    Par défaut
    peut-être en exposant tes services en rpc/litteral plutôt qu'en document/litteral ?
    A+

  3. #3
    Membre Expert
    Avatar de alexismp
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 503
    Par défaut
    doc/lit est la bonne solution (seule confirme au WS-I Basic Profile).

    Sinon, en prenant ton WSDL j'écris mon client de la façon suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
                com.priad.bo.media.service.Media service = new com.priad.bo.media.service.Media();
                com.priad.bo.media.service.MediaService port = service.getMediaBeanPort();
                java.lang.String result = port.getCard("arg0", "arg1", Long.valueOf(0L));
                System.out.println("Result = "+result);
    Par contre, j'ai supprimé @SOAPBinding qui me parait redondant par rapport aux informations du WSDL.

  4. #4
    oca
    oca est déconnecté
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    354
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2004
    Messages : 354
    Par défaut
    Citation Envoyé par alexismp Voir le message
    doc/lit est la bonne solution (seule confirme au WS-I Basic Profile).

    C'est vrai, mais comme c'est dommage ! rpc/litteral convient beaucoup mieux lorsque l'on utilise soap pour faire du... rpc...
    les wsdl peuvent alors être bien plus simple dans certains cas...

  5. #5
    Membre confirmé Avatar de Rizzen
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 115
    Par défaut
    Citation Envoyé par alexismp Voir le message
    doc/lit est la bonne solution (seule confirme au WS-I Basic Profile).

    Sinon, en prenant ton WSDL j'écris mon client de la façon suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
                com.priad.bo.media.service.Media service = new com.priad.bo.media.service.Media();
                com.priad.bo.media.service.MediaService port = service.getMediaBeanPort();
                java.lang.String result = port.getCard("arg0", "arg1", Long.valueOf(0L));
                System.out.println("Result = "+result);
    Par contre, j'ai supprimé @SOAPBinding qui me parait redondant par rapport aux informations du WSDL.
    En java oui y a pas de soucis pour l'appel comme ceci mais dés que je passe sur une autre techno .net par exemple cela ne marche plus et je suis obligé de passer par la création d'un objet

Discussions similaires

  1. paramètres d'un webservice via soap
    Par Ambiwow dans le forum Langage
    Réponses: 3
    Dernier message: 02/05/2013, 10h53
  2. Contenu XML en paramètre d'un WebService
    Par etiennegaloup dans le forum Services Web
    Réponses: 0
    Dernier message: 29/01/2013, 18h32
  3. Réponses: 13
    Dernier message: 06/08/2008, 14h16
  4. [JAX-RPC][AXIS] lequel utiliser pour des webservices ?
    Par mlequim dans le forum Services Web
    Réponses: 2
    Dernier message: 10/03/2006, 10h12
  5. [C#][WebServices] Appel methode avec une classe en paramètre
    Par bran_noz dans le forum Windows Forms
    Réponses: 6
    Dernier message: 10/09/2004, 16h41

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