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 :

Générer un fichier WSDL avec Eclipse


Sujet :

Services Web Java

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 126
    Points : 48
    Points
    48
    Par défaut Générer un fichier WSDL avec Eclipse
    Bonjour,

    J'essaie de recréer sous Eclipse avec Tomcat 7 et Axis 2 un web service que j'ai écrit sous NetBeans avec GlassFish. Quand je clique sur Run as > Run on server, j'obtiens bien cela :

    Nom : eclipse.png
Affichages : 2132
Taille : 170,3 Ko

    Donc jusque-là ça va...

    J'essaie ensuite de créer un client pour consommer ce service, et j'aimerais pour cela me servir du fichier WSDL. Malheureusement voici ce que j'obtiens :

    Nom : eclipse.png
Affichages : 1970
Taille : 228,8 Ko

    <reason>If you wish Axis2 to automatically generate the WSDL 1.1, then please set useOriginalwsdl as false in your services.xml</reason>
    Je ne trouve pas ce fichier services.xml (j'ai regardé dans WebContent/WEB-INF/services). Dois-je le créer, si oui que mettre dedans ?

    Quelqu'un saurait-il m'indiquer comment résoudre ce problème ?

    Merci d'avance pour votre aide.

  2. #2
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2014
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mai 2014
    Messages : 153
    Points : 227
    Points
    227
    Par défaut
    Salut.Je te donne un ex simple:
    Tu crées un java project.
    Une class a serializable,une class aservice (@webservice(name=aservice) avec des @webmethodes manipulant ton objet de la class a.
    Enfin tu crées une class serveur (par ex String url ="http://localhost:8580 ou 8585 etc /";
    Endpoint.publish(url, new aService()).

    Tu testes en lançant ton serveur,tu tapes ton url dans ton navigateur préféré (localhost:8580/aservice?wsdl) et voilà.
    Pour générer par ex un client java ou tester tes méthodes avant ,utilise soapui.Ça localhost:8580/aservice?wsdl)c'est ton wsdl.Ensuite tu récup le stub pour les clients java,donet,php,jsp...
    Essaie soapui logiciel sympa pour tester tes méthodes ,et générer un client java.

    Pour revenir à ta question,je n'aime pas netbeans,on ne fait plus rien ok,mais on ne maitrise plus rien....
    Bonne continuation.

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 126
    Points : 48
    Points
    48
    Par défaut
    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
    package com.joan.search;
     
    import java.io.IOException;
    import java.io.InputStream;
    import java.sql.DriverManager;
    import javax.jws.WebService;
    import javax.jws.WebMethod;
    import javax.jws.WebParam;
    import java.sql.*;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Properties;
    import java.util.logging.Level;
    import java.util.logging.Logger;
     
    @WebService()
    public class Book {
     
     
    	/**
             *
             * @author Administrator
             */
    	@WebService(serviceName = "WebServiceBook")
    	public class WebServiceBook {
     
    	    Connection conn;
    	    Statement statement;
    	    ResultSet res;
     
    	    public void connect() {
     
    	    	Properties properties = new Properties();
     
    	    	try {
    	    		InputStream inputstream = Book.class.getResourceAsStream("/config.properties");
    				properties.load(inputstream);
    				inputstream.close();
    			} catch (IOException e1) {
    				e1.printStackTrace();
    			}
     
    	        try {
    	            Class.forName("com.mysql.jdbc.Driver");
    	            String url = properties.getProperty("url");
    	            try {
    	                conn = DriverManager.getConnection(url, properties.getProperty("user"), properties.getProperty("password"));
    	            } catch (SQLException ex) {
    	                Logger.getLogger(WebServiceBook.class.getName()).log(Level.SEVERE, null, ex);
    	            }
    	        } catch (ClassNotFoundException ex) {
    	            Logger.getLogger(WebServiceBook.class.getName()).log(Level.SEVERE, null, ex);
    	        }
    	        catch(Exception e){
    	            throw new RuntimeException(e);
     
    	        }
    	    }
    	    /**
                 * This is a sample web service operation
                 */
    	    @WebMethod(operationName = "SearchBook")
    	    public  List<String> book(@WebParam(name = "isbn") String isbn) {
    	        try{
    	            List<String> book = new ArrayList<String>(0);
     
    	        try {
    	            connect();
    	            statement = conn.createStatement();
    	            res = statement.executeQuery("select * from book where isbn ='"+isbn+"'");
    	            while(res.next())
    	                book.add(res.getString(1)+" / "+res.getString(2)+" / "+res.getString(3)+" / "+res.getString(4)+" / "+res.getString(5));
    	            statement.close();
    	            res.close();
    	        } catch(SQLException ex) {
    	            Logger.getLogger(WebServiceBook.class.getName()).log(Level.SEVERE, null, ex);
    	        }
     
    	        return book;
    	    }catch(Exception e){
    	        throw new RuntimeException(e);
    	        }
    	    }
    	}
    }
    J'ai ma classe Objet mais une classe serveur ça ressemble à quoi ?

    J'ai écrit ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    package com.joan.endpoint;
     
    import com.joan.search.*;
    import javax.xml.ws.Endpoint;
     
    public class BookResultPublisher {
     
    		public static void main(String[] args) {
    		   Endpoint.publish("http://localhost:8080/search/book", new Book());
    	    }
     
    }
    Mais quand j'essaie d'aller à http://localhost:8080/search/book?wsdl j'ai "ressource demandée non disponible".

  4. #4
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2014
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mai 2014
    Messages : 153
    Points : 227
    Points
    227
    Par défaut
    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
     
    package server;          
     
    import javax.xml.ws.Endpoint;
     
    import service.BanqueService;
     
    public class ServerJAXWS1 {
     
    	public static void main(String[] args) {      
    	   String url ="http://localhost:8580/";
           Endpoint.publish(url, new BanqueService());            //publication du web service sur le port
           //et l'objet concerne
     
           System.out.printf("%s", url);
    	}
     
    }

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 126
    Points : 48
    Points
    48
    Par défaut
    Merci footsteps mais j'avais réussi à écrire cette partie. Et ça ne fonctionne pas, j'obtiens une page sur laquelle il est écrit que la ressource est indisponible.

  6. #6
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2014
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mai 2014
    Messages : 153
    Points : 227
    Points
    227
    Par défaut
    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
    ackage metier;
     
    import java.io.Serializable;
    import java.util.Date;
     
    import javax.xml.bind.annotation.XmlAccessType;
    import javax.xml.bind.annotation.XmlAccessorType;
    import javax.xml.bind.annotation.XmlRootElement;
    import javax.xml.bind.annotation.XmlTransient;
    @XmlRootElement
    @XmlAccessorType(XmlAccessType.FIELD)      
    public class Compte implements Serializable{
            private double solde;
            private Long code;
            @XmlTransient                  
            private Date dateCreation;
    		public Compte(double solde, Long code, Date dateCreation) {
    			super();
    			this.solde = solde;
    			this.code = code;
    			this.dateCreation = dateCreation;
    		}
    		public Compte() {
    			super();
    			// TODO Auto-generated constructor stub
    		}
    		public double getSolde() {
    			return solde;
    		}
    		public void setSolde(double solde) {
    			this.solde = solde;
    		}
    		public Long getCode() {
    			return code;
    		}
    		public void setCode(Long code) {
    			this.code = code;
    		}
    		public Date getDateCreation() {
    			return dateCreation;
    		}
    		public void setDateCreation(Date dateCreation) {
    			this.dateCreation = dateCreation;
    		}
    }

  7. #7
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2014
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mai 2014
    Messages : 153
    Points : 227
    Points
    227
    Par défaut
    Couche service

    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
    package service;
     
    import java.util.ArrayList;
    import java.util.Date;
    import java.util.List;
     
    import javax.jws.WebMethod;
    import javax.jws.WebParam;
    import javax.jws.WebService;
     
    import metier.Compte;
    @WebService(name="BanqueWS")                   //ici pas de bdd
    public class BanqueService {
    	      @WebMethod
              public double conversion(@WebParam(name="montant")double mt){
            	  return mt*6.55957;
              }
    	      @WebMethod
              public Compte getCompte(@WebParam(name="code")Long code){
            	  return new Compte(Math.random()*7500,code,new Date());
              }
    	      @WebMethod
              public List<Compte> listeComptes(){
            	  List<Compte> comptes = new ArrayList<Compte>();
            	  comptes.add(new Compte(Math.random()*7500,1L,new Date()));    //pour tester..
            	  comptes.add(new Compte(Math.random()*7500,2L,new Date()));
            	  comptes.add(new Compte(Math.random()*7500,3L,new Date()));
     
            	  return comptes;
              }
    }

  8. #8
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 126
    Points : 48
    Points
    48
    Par défaut
    Hey merci ça fonctionne quasiment pour moi ! (même si avec la bdd ça va etre plus dur).

    Par contre je peux pas gérer la wsdl j'ai l'erreur suivante :

    <description>Unable to generate WSDL 1.1 for this service</description>

    <reason>If you wish Axis2 to automatically generate the WSDL 1.1, then please set useOriginalwsdl as false in your services.xml</reason>

    J'ai cherché sur le net et j'ai rien trouvé d'efficace contre ça...Si tu as une idée...

    Merci beaucoup en tout cas.

  9. #9
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 126
    Points : 48
    Points
    48
    Par défaut
    J'ai trouvé, j'ai pu générer le wsdl ! Merci

    J'ai testé le web service avec SOAPUi et c'est parfait.

    Maintenant saurais-tu me dire si je peux utiliser exactement la même architecture ou pas pour mon projet avec base de données ? (est ce que je peux toujours me servir de xml.bind.annotation ?

Discussions similaires

  1. [Web Service] générer un fichier wsdl avec php
    Par jof8dev dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 01/06/2012, 10h51
  2. comment obtenir un fichier WSDL avec Eclipse
    Par thomas3 dans le forum Services Web
    Réponses: 6
    Dernier message: 20/12/2006, 09h01
  3. Générer un fichier résultat avec sépateur ;
    Par soulryo dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 30/08/2005, 09h57
  4. Générer un fichier résultat avec sépateur ;
    Par soulryo dans le forum Langage SQL
    Réponses: 3
    Dernier message: 29/08/2005, 12h29
  5. générer un fichier svg avec le bon encoding
    Par TOM-Z dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 24/08/2005, 17h39

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