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 :

Exposer une interface de service "normal" en webservice


Sujet :

Services Web Java

  1. #1
    Membre actif

    Inscrit en
    Mai 2002
    Messages
    328
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Mai 2002
    Messages : 328
    Points : 209
    Points
    209
    Par défaut Exposer une interface de service "normal" en webservice
    Hello,

    Je cherche un moyen d'exposer l'interface de mes services "normaux", sous forme de webservices...

    Quel serait la/les piste/s à étudier ?

    Merci !

    Anthony

  2. #2
    hlr
    hlr est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 57
    Points : 64
    Points
    64
    Par défaut
    Que veux-tu dire par "services normaux" ?

  3. #3
    Membre actif

    Inscrit en
    Mai 2002
    Messages
    328
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Mai 2002
    Messages : 328
    Points : 209
    Points
    209
    Par défaut
    En fait, une interface avec des méthodes dessus permettant effectuer des opérations...

    Je voudrais rendre cette interface accessible à distance, via un web service...

    Possible ?

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

    Informations forums :
    Inscription : Octobre 2004
    Messages : 354
    Points : 421
    Points
    421
    Par défaut
    Oui, c'est possible, et il y a même plusieurs moyens pour le faire...
    avec CXF par exemple :

    IService est l'interface de mon service,
    ServiceImpl est l'implémentation de mon 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
     
    package oca.server;
    import oca.IService;
    import oca.ServiceImpl;
    import org.apache.cxf.frontend.ServerFactoryBean;
    public class SimpleServer {
    	private static final String SERVICE_URL = "http://localhost:9083/test";
    	public static void main(String[] args) {
    		ServiceImpl serviceImpl = new ServiceImpl();
    		ServerFactoryBean svrFactory = new ServerFactoryBean();
    		svrFactory.setServiceClass(IService.class);
    		svrFactory.setAddress(SERVICE_URL);
    		svrFactory.setServiceBean(serviceImpl);
    		svrFactory.create();
    		System.out.println(SERVICE_URL+"?wsdl");
    	}
    }
    Et voili et voila...

  5. #5
    Membre actif

    Inscrit en
    Mai 2002
    Messages
    328
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Mai 2002
    Messages : 328
    Points : 209
    Points
    209
    Par défaut
    wow, merci !

    Il y a des resctrictions je suppose sur l'interface en question ? (au niveau des type ?)

    Anthony

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

    Informations forums :
    Inscription : Octobre 2004
    Messages : 354
    Points : 421
    Points
    421
    Par défaut
    il faut java 1.5 minimum
    je n'ai pas eu de problème de types pour le moment, même avec des types complexes.

    La limitation est que dans ce cas, CXF travail avec les mechnisme de java, et le web service produit aura les mêmes nom que les class/méthodes java.
    un des problème étant que java ne peut pas obtenir le nom d'un paramètre par reflection, ce qui fait qu'une méthode du genre

    public String sayHello(String name)

    se retrouvera avec un paramètre arg0 dans la wsdl (puisque name n'est pas visible par reflection...)

    Apache CXF permet aussi de travailler avec des annotations (selon la norme java JAX-WS), ce qui amène plus de souplesse et résoud ce genre de petits problèmes.

    Java 1.6 peut même faire du JAX-WS "out of the box" sans avec besoin de CXF.

    Une alternative est le framework Axis (et Axis2) qui permet de très belles choses également. axis a une notion de fichier .jws qui est à peu près aussi simple que l'exemple ci-dessus. Axis2 support également la norme JAX-WS.

    J'ai mis des exemples pour CXF dans ce sujet :
    http://www.developpez.net/forums/sho...d.php?t=546943

    A+

  7. #7
    Membre actif

    Inscrit en
    Mai 2002
    Messages
    328
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Mai 2002
    Messages : 328
    Points : 209
    Points
    209
    Par défaut
    Merci pour tes explications claires et détaillées !

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