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 :

WebService client à partir de WSDL : Génération érronée d'artefacts


Sujet :

Services Web Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Novembre 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2014
    Messages : 10
    Par défaut WebService client à partir de WSDL : Génération érronée d'artefacts
    Bonjour,
    je viens d’être stupéfait par la génération d'un client webservice. J'utilise netbeans 8.0, glassfish 4.0 sous ubuntu 14.0. J'ai créé un service web de la sorte
    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
     
    @WebService(serviceName = "CentrePrincipalWEBService")
    public class CentrePrincipalWEBService {
        @EJB
        private CentrePrincipalFacade ejbRef;
     
        @WebMethod(operationName = "create")
        @Oneway
        public void create(@WebParam(name = "entity") com.pidpmu.ejb.entities.CentrePrincipal entity) {
            ejbRef.create(entity);
        }
     
        @WebMethod(operationName = "createReturn")
        public com.pidpmu.ejb.entities.CentrePrincipal createReturn(@WebParam(name = "entity") com.pidpmu.ejb.entities.CentrePrincipal entity) {
            return ejbRef.createReturn(entity);
        }
       .......................................................................
       .......................................................................
      }
    Quand je déploie et je teste il y a déjà un problème. Je constate que les arguments des méthodes ont changé de type. Par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
               public abstract void com.pidpmu.webservice.CentrePrincipalWEBService.create(com.pidpmu.webservice.ResultatGain)
    Le comble c'est que je ne sais pas d'où vient le fait que la méthode est abstract.
    Alors je continue je crée un client à partir du WSDL et il me génère les artefacts ce qui est affiché au niveau du test.

    Merci d'avance.

  2. #2
    Membre très 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
    Par défaut
    Une proposition:tu fourres tout dans ton ejb...méthodes,etc.Not good
    Utilises plutôt des interfaces,implémente les .
    Bonne continuité.

  3. #3
    Membre averti
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Novembre 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2014
    Messages : 10
    Par défaut
    Merçi footstep, mais ce n'est pas ce que j'ai demandé. Mon problème ne tient pas à comment faire marcher mon WS mais pourquoi ça ne marche pas. Voici ma procédure de création de mon web service :
    - générer une entité à partir de la base de données
    - créer un EJB session à partir de l'entité
    - créer un service web à partir de l'EJB.

    Ces étapes sont proposées par netbeans 8.0. L'utilisation des IDE nous facilite la tache. Alors qu'est ce qui ne va pas dans ce web service généré à partir d'un EJB?

  4. #4
    Membre très 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
    Par défaut
    Peux tu afficher de tes sessions ton interface /ta class CentrePrincipalFacade @local ou son implémentation.(voir tes méthodes.)

  5. #5
    Membre averti
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Novembre 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2014
    Messages : 10
    Par défaut
    L'abstract facade généré par netbeans
    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
     
     
     
    package com.pidpmu.ejb.sessions;
     
    import java.util.List;
    import javax.persistence.EntityManager;
     
    /**
     *
     * @author simplice
     */
    public abstract class AbstractFacade<T> {
        private Class<T> entityClass;
     
        public AbstractFacade(Class<T> entityClass) {
            this.entityClass = entityClass;
        }
     
        protected abstract EntityManager getEntityManager();
     
        public  void create(T entity) {
            getEntityManager().persist(entity);
     
        }
     
        public  T createReturn(T entity) {
           getEntityManager().persist(entity);
           return entity;
        } 
     
        public void edit(T entity) {
            getEntityManager().merge(entity);
        }
        public T editReturn(T entity) {
            getEntityManager().merge(entity);
            return entity;
        }
        public void remove(T entity) {
            getEntityManager().remove(getEntityManager().merge(entity));
        }
     
        public T find(Object id) {
            return getEntityManager().find(entityClass, id);
        }
     
        public List<T> findAll() {
            javax.persistence.criteria.CriteriaQuery cq = getEntityManager().getCriteriaBuilder().createQuery();
            cq.select(cq.from(entityClass));
            return getEntityManager().createQuery(cq).getResultList();
        }
     
        public List<T> findRange(int[] range) {
            javax.persistence.criteria.CriteriaQuery cq = getEntityManager().getCriteriaBuilder().createQuery();
            cq.select(cq.from(entityClass));
            javax.persistence.Query q = getEntityManager().createQuery(cq);
            q.setMaxResults(range[1] - range[0] + 1);
            q.setFirstResult(range[0]);
            return q.getResultList();
        }
     
        public int count() {
            javax.persistence.criteria.CriteriaQuery cq = getEntityManager().getCriteriaBuilder().createQuery();
            javax.persistence.criteria.Root<T> rt = cq.from(entityClass);
            cq.select(getEntityManager().getCriteriaBuilder().count(rt));
            javax.persistence.Query q = getEntityManager().createQuery(cq);
            return ((Long) q.getSingleResult()).intValue();
        }
     
    }
    L'EJB CentrePrincipalFacade
    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
     
    package com.pidpmu.ejb.sessions;
     
    import com.pidpmu.ejb.entities.CentrePrincipal;
    import javax.ejb.Stateless;
    import javax.persistence.EntityManager;
    import javax.persistence.PersistenceContext;
     
    /**
     *
     * @author simplice
     */
    @Stateless
    public class CentrePrincipalFacade extends AbstractFacade<CentrePrincipal> {
        @PersistenceContext(unitName = "pidpmu-core-1.0PU")
        private EntityManager em;
     
        @Override
        protected EntityManager getEntityManager() {
            return em;
        }
     
        public CentrePrincipalFacade() {
            super(CentrePrincipal.class);
        }
     
    }
    et le service web

    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
     
    package com.pidpmu.webservice;
     
    import com.pidpmu.ejb.sessions.CentrePrincipalFacade;
    import java.util.List;
    import javax.ejb.EJB;
    import javax.ejb.Stateless;
    import javax.jws.Oneway;
    import javax.jws.WebMethod;
    import javax.jws.WebParam;
    import javax.jws.WebService;
     
    /**
     *
     * @author simplice
     */
    @WebService(serviceName = "CentrePrincipalWEBService")
    @Stateless
    public class CentrePrincipalWEBService {
        @EJB
        private CentrePrincipalFacade ejbRef;// Add business logic below. (Right-click in editor and choose
        // "Insert Code > Add Web Service Operation")
     
        @WebMethod(operationName = "create")
        @Oneway
        public void create(@WebParam(name = "entity") com.pidpmu.ejb.entities.CentrePrincipal entity) {
            ejbRef.create(entity);
        }
     
        @WebMethod(operationName = "createReturn")
        public com.pidpmu.ejb.entities.CentrePrincipal createReturn(@WebParam(name = "entity") com.pidpmu.ejb.entities.CentrePrincipal entity) {
            return ejbRef.createReturn(entity);
        }
     
        @WebMethod(operationName = "edit")
        @Oneway
        public void edit(@WebParam(name = "entity") com.pidpmu.ejb.entities.CentrePrincipal entity) {
            ejbRef.edit(entity);
        }
     
        @WebMethod(operationName = "editReturn")
        public com.pidpmu.ejb.entities.CentrePrincipal editReturn(@WebParam(name = "entity") com.pidpmu.ejb.entities.CentrePrincipal entity) {
            return ejbRef.editReturn(entity);
        }
     
        @WebMethod(operationName = "remove")
        @Oneway
        public void remove(@WebParam(name = "entity") com.pidpmu.ejb.entities.CentrePrincipal entity) {
            ejbRef.remove(entity);
        }
     
        @WebMethod(operationName = "find")
        public com.pidpmu.ejb.entities.CentrePrincipal find(@WebParam(name = "id") Object id) {
            return ejbRef.find(id);
        }
     
        @WebMethod(operationName = "findAll")
        public List<com.pidpmu.ejb.entities.CentrePrincipal> findAll() {
            return ejbRef.findAll();
        }
     
        @WebMethod(operationName = "findRange")
        public List<com.pidpmu.ejb.entities.CentrePrincipal> findRange(@WebParam(name = "range") int[] range) {
            return ejbRef.findRange(range);
        }
     
        @WebMethod(operationName = "count")
        public int count() {
            return ejbRef.count();
        }
     
    }
    Je voudrais juste savoir si dans la spécification des services web soap, il y a des contraintes particulières liées aux classes , aux méthodes et aux arguments des méthodes. Merci.

  6. #6
    Membre très 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
    Par défaut
    Netbeans makes it all by himself...
    Remplace la façade par une interface @local ,implémente là,écrits ton web service avec ton ejb métier .Injecte@ejb.
    Pas d'erreur sur eclipse,mais faut tout écrire.
    Par ex pas de criteria avec ton entity manager,ya plus simple etc.
    J'ai refait un ex avec tes champs de ta classe en codant moi même,pas de souci.
    Sinon,ne pas oublier le @persistence context par ex ,le @stateless ..

    Ici interface!

Discussions similaires

  1. Génération classe à partir de WSDL
    Par ekremyilmaz dans le forum Services Web
    Réponses: 1
    Dernier message: 03/06/2010, 10h53
  2. Réponses: 0
    Dernier message: 22/02/2010, 14h45
  3. appel de méthodes d'un webservice à partir du wsdl
    Par fab76000 dans le forum Services Web
    Réponses: 1
    Dernier message: 29/01/2010, 18h32
  4. [WebService]Generation de classes Java a partir de WSDL
    Par CapsSensei dans le forum Services Web
    Réponses: 4
    Dernier message: 06/10/2005, 17h48
  5. [Eclipse 3.1] [Axis] Génération à partir de wsdl
    Par cosmos38240 dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 03/10/2005, 15h48

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