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] Axis ou WS


Sujet :

Services Web Java

  1. #1
    Membre régulier
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2003
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 145
    Points : 100
    Points
    100
    Par défaut [WebService] Axis ou WS
    Bonjour,

    Voilà, j'ai une série d'EJB là où je bosse et j'aimerais réutiliser une bonne partie pour plusieurs applications. J'ai donc penser en faire des Web Services.

    Ce que j'aimerais savoir, qu'est-ce qui est le mieux : Axis ou les Web Services WebSphere (je travaille actuellement encore en 5.1.2 -> passage en 6.0 programmé pour l'année prochaine).

    J'ai entendu parler de problèmes de sécurité avec WS en est-il de même pour Axis.

    Merci
    NiGhMa

  2. #2
    Membre émérite
    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
    Points : 2 777
    Points
    2 777
    Par défaut
    AXIS est une API Apache et JAX-RPC est l'API standard intégérée dans J2EE 1.4.
    Je ne sais pas ce que sont les "Web Services WebSphere".

    Pour les "problèmes de sécurité avec WS", je pense que tu fais référence au fait qu'il faut une sécurité de bout-en-bout (et pas de point à point comme le propose HTTPS/SSL). WS-Security est là pour couvrir cette problématique.

  3. #3
    Membre régulier
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2003
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 145
    Points : 100
    Points
    100
    Par défaut
    Et quel est le plus simple entre l'API Axis et l'API JAX-RPC ?
    NiGhMa

  4. #4
    Membre émérite
    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
    Points : 2 777
    Points
    2 777
    Par défaut
    Le plus simple c'est d'utiliser des outils qui génèrent le code qui va bien pour exposer une fonctionnalité existante sous forme de Web Service.

  5. #5
    Membre régulier
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2003
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 145
    Points : 100
    Points
    100
    Par défaut
    Vu la fonctionnalité "Deploy Web Service" dans WebSphere, je penses qu'elle est préférable.
    NiGhMa

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    365
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Janvier 2006
    Messages : 365
    Points : 495
    Points
    495
    Par défaut
    Bonjour !
    Pourquoi as-tu besoin d'utiliser des Web services ? Que veux-tu faire exactement ? Si tu veux juste accéder à des EJB existants à partir d'une nouvelle application Java, en intranet, je pense que le mieux c'est d'utiliser RMI-IIOP, c'est fait pour ça et c'est beaucoup plus performant. En plus les EJB résolvent déjà le problème de sécurité. Si tu peux nous éclaircir un peu à quel niveau tu voudrais intégrer des Web services ...
    SCJP 5 / SCBCD 1.3 Certified

  7. #7
    Membre régulier
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2003
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 145
    Points : 100
    Points
    100
    Par défaut
    Ce que je voudrais c'est avoir mes EJB's dans un EAR sur Websphere.

    Et ensuite faire une(des) application(s) web pouvant appeler les méthodes.

    J'ai essayé de faire un "EJB client Jar" de l'importer dans un projet Java classique mais lorsque je faire l'appel JNDI il ne trouve rien.

    Voici comment je fais l'appel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    initialContext = new InitialContext();
    Object nsObject = initialContext.lookup(new StringBuffer("java:comp/env/").append("ejb/MonEjb").toString());
    EJBHome ejbHome = (EJBHome) javax.rmi.PortableRemoteObject.narrow((org.omg.CORBA.Object) nsObject, EJBHome.class);
    Mais j'ai un NamingException lorsque je fais le lookup.

    J'ai fais un petit test avec un webservice et j'ai pas eu de problème.

    Peut-être aurais-tu une solution pour utiliser l'EJB client Jar ?
    NiGhMa

  8. #8
    Membre régulier
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2003
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 145
    Points : 100
    Points
    100
    Par défaut
    Je dois probablement préciser d'autres choses comme le port et l'adresse du serveur pour appeler l'objet mais je n'ai aucune idée de comment faire.
    NiGhMa

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    365
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Janvier 2006
    Messages : 365
    Points : 495
    Points
    495
    Par défaut
    C'est bien ce que je pensais, les Web services ne sont pas la meilleure solution ici, à mon avis, car ils seraient plus utiles si tu faisais de l'intégration d'applications, ce qui n'est pas le cas. Concernant le NamingException, moi j'utilise JBoss et je sais pas trop comment on fait les appels JNDI pour WebSphere. Par contre, tu dois intégrer aussi un certain nombre de librairies WebSphere coté client pour permettre ces appels JNDI. Malheureusement j'ai pas encore travaillé sous WebSphere, mais je pense qu'on devrait pouvoir trouver des exemples dans diverses docs. En plus, étant donné que tu utilises "java:comp/env" dans le nom JNDI pour l'appel à l'EJB, assures-toi que tu déclares bien une référence "ejb-ref" pointant vers l'EJB pour tes servlets, sinon il faudrait enlever la partie "java:comp/env" dans le nom JNDI.
    SCJP 5 / SCBCD 1.3 Certified

  10. #10
    Membre régulier
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2003
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 145
    Points : 100
    Points
    100
    Par défaut
    Merci pour les infos.

    Comment fais-tu toi pour appeler tes EJB's avec JBoss ?

    Aurais-tu un bout de code ?

    Merci
    NiGhMa

  11. #11
    Membre régulier
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2003
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 145
    Points : 100
    Points
    100
    Par défaut
    J'ai ouvert un nouveau thread pour voir si il y aurait des personnes pouvant m'aider avec WEBSPHERE.

    lien
    NiGhMa

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    365
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Janvier 2006
    Messages : 365
    Points : 495
    Points
    495
    Par défaut
    Tu as raison d'ouvrir un nouveau thread, parce que c'est vrai que le problème change de nature. mais pour te donner quelques idées, voici comment je fais quand je bosse sur des EJB sous JBoss.
    Avec JBoss, pour appeler un EJB à partir un client standalone, je fais quelque chose comme ceci :
    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
     
    Properties props = new Properties();
         props.setProperty("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
         props.setProperty("java.naming.provider.url", "jnp://localhost:1099");
         props.setProperty("java.naming.factory.url.pkgs", "org.jboss.naming:org.jnp.interfaces");
     
         try{
           Context ctx = new InitialContext(props);
           Object obj = ctx.lookup("ejb/MyBean");
           MyBeanHome home = (MyBeanHome)PortableRemoteObject.narrow(obj, MyBeanHome.class);
           MyBean mb = home.create();
        }
       catch(NamingException e){
         .....
       }
    Et puis, à l'exécution j'intègre dans le classpath du côté client les librairies se trouvant dans le dossier "$JBOSS_HOME/client" pour permettre la recherche JNDI.
    Mais étant donné que tu veux faire appels aux EJB à partir d'une application web, donc depuis une servlet, tu as juste besoin de configurer une référence "ejb-ref" que tu appelerais par exemple "ejb/MyBean" dans le descripteur de déploiement "web.xml". Cette réference sera utilisée par les servlets pour l'appel à l'EJB, et dans ce cas ce sera plus simple sous la forme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Context ctx = new InitialContext();
           Object obj = ctx.lookup("java:comp/env/ejb/MyBean");
           MyBeanHome home = (MyBeanHome)PortableRemoteObject.narrow(obj, MyBeanHome.class);
    Là tu ne précises plus les propriétés d'accès dans le code mais tu dois configurer la connexion de l'EJB dans le descripteur spécifique à WebSphere. Dans le cas de JBoss, c'est le dans le fichier "jboss-web.xml" que ça se fait et il y a un équivalent pour WebSphere.
    SCJP 5 / SCBCD 1.3 Certified

  13. #13
    Membre régulier
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2003
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 145
    Points : 100
    Points
    100
    Par défaut
    Je viens d'essayer ta seconde méthode et j'y suis arrivé mais en ayant mon projet Web et mon projet EJB dans le même EAR.

    Ce que j'aimerais maintenant, c'est mettre mon projet web sur un autre serveur maintenant et à partir de celui-ci appelé mes EJB's.

    Que dois-je spécifier pour cela ?
    NiGhMa

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    365
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Janvier 2006
    Messages : 365
    Points : 495
    Points
    495
    Par défaut
    Oui, à partir du moment où les EJB sont dans la même application que les servlets, le problème ne se pose pas. Mais quand le composant EJB est déployé dans une autre application sur une autre machine, là tu dois préciser le nom JNDI complet du bean quand tu configures la référence "ejb-ref" dans le descripteur de déploiement spécifique au serveur d'application. Et bien entendu, je ne pourrais te donner d'exemple que pour JBoss que je connais mieux. Dans le cas de JBoss le "jndi-name" dans le fichier "jboss-web.xml" est de la forme : protocol://host:port/nom/dans/autre/serveur
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
          <ejb-ref>
            <ejb-ref-name>ejb/myBean</ejb-ref-name>
            <jndi-name>jnp://autreserver:1099/nom_application/nom_bean</jndi-name>
          </ejb-ref>
    Voilà, j'espère que pourrais t'aider en adaptant pour WebSphere.
    SCJP 5 / SCBCD 1.3 Certified

  15. #15
    Membre régulier
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2003
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 145
    Points : 100
    Points
    100
    Par défaut
    Voilà j'y suis enfin arrivé.

    avec ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Properties env = new Properties();
    env.put(Context.INITIAL_CONTEXT_FACTORY, "com.ibm.websphere.naming.WsnInitialContextFactory");
    env.put(Context.PROVIDER_URL, "iiop://localhost:2809");
    InitialContext ctx = new InitialContext(env);
    Object objref = ctx.lookup("ejb/MonEjb");
    meric pour ton aide manblaizo
    NiGhMa

  16. #16
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    365
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Janvier 2006
    Messages : 365
    Points : 495
    Points
    495
    Par défaut
    content d'avoir contribué à la résolution de ton problème, et je pense quand même qu'il doit y avoir un moyen de déclarer une référence "ejb-ref", mais l'important c'est que ça marche et pour le reste on va continuer à chercher... Autre chose, je ne voulais surtout pas te décourager à utiliser des Web services, il faut te lancer si tu en sens le besoin ou pour en apprendre davantage. Mon intervention concernait juste la décision de conception d'utiliser des Web services là où ils sont moins efficaces que d'autres technologies en termes de performance.
    SCJP 5 / SCBCD 1.3 Certified

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

Discussions similaires

  1. Delphi 6.0 Consommer WebService Axis Parcourir Tableau de retour
    Par STARIS79 dans le forum Web & réseau
    Réponses: 0
    Dernier message: 03/08/2007, 09h40
  2. Réponses: 1
    Dernier message: 27/10/2006, 15h21
  3. [webService][Axis] java.lang.OutOfMemoryError
    Par webspeak dans le forum Services Web
    Réponses: 8
    Dernier message: 25/04/2005, 17h58
  4. [WebServices][axis] question sur la méthode service()
    Par Nycos62 dans le forum Services Web
    Réponses: 9
    Dernier message: 21/04/2005, 09h32

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