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

Spring Java Discussion :

Equivalent de l'interface Remote des EJB [Integration]


Sujet :

Spring Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur
    Avatar de lunatix
    Homme Profil pro
    Architecte technique
    Inscrit en
    Novembre 2002
    Messages
    1 960
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 960
    Par défaut
    Citation Envoyé par bmoussaud
    Il ne faut pas tout mélanger: spring est un container léger qui ne se veux pas être J2EE
    faut rester zen quand meme !!! on est la pour discuter non ?

    on te dit que dans spring, il y a des fonctionalités d'acces remote pour tes objets ! Ou alors on comprends rien a la doc (ce qui reste possible) auquel cas explique le au lieu de t'enerver
    Spring features integration classes for remoting support using various technologies. The remoting support eases the development of remote-enabled services, implemented by your usual (Spring) POJOs. Currently, Spring supports four remoting technologies:
    et que cela nous interresse ! c'est tout. Acceder aux objets Spring a distance est visiblement possible (il faut que j'experimente) via rmi, http et meme bientot jms.

    on dit pas que ca le transforme en conteneur lourd (entre parenthese, spring est-il toujours un conteneur leger ? je suis pas sur, Pico est resté leger a mon avis pas Spring)

  2. #2
    ego
    ego est déconnecté
    Rédacteur

    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    1 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 883
    Billets dans le blog
    2
    Par défaut
    donner l'accès via EJB, Burlap, Hessian, RMI ou la serialization dans un flux HTTP ne fait pas de Spring un serveur d'application.
    Spring propose simplement, et c'est très bien, une intégration avec des technologies permettant la distribution.

    Pour le problème initial, la question est déjà de savoir quel est ou quels sont les types de client devant accéder aux objets gérés via Spring/Hibernate ? Ces clients tournent-ils sur le même la même machine que les objets géré via Spring/Hibernate.

    En clair :
    - Dois-tu séparer le code client du code serveur ? si non, pas de question à se poser si oui, cf. la suite...
    - si les clients sont des WebApp hébergées par la même machine que le code "serveur" (le code géré par Spring/Hibernate), pas besoin d'accès remote.
    - si les clients sont des WebApp hébergées par une autre machine que le code "serveur" ou bien si les clients sont des clients Swing ou bien si les clients sont des application .Net, là il faut se poser la question de l'accès distant. Dans ce cas, tu as la possibilité d'utiliser des EJBs (si tu restes dans le monde client Java) ou des WebServices (si tes clients sont .Net et/ou Java). Pour les EJBs, Spring propose des classes facilitant l'intégration d'un EJB dans la logique d'initialisation des Beans. Pour les WebServices, je ne connais pas personnellement une intégration spécifique côté Spring avec un truc comme Axis (à voir sur le forum Spring car j'y ai vu les mots WebServices et Axis donc...)
    Côté client Java, tu peux aussi utiliser Spring pour rendre transparent l'appel aux EJBs !

  3. #3
    Membre éclairé

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 328
    Par défaut
    - si les clients sont des WebApp hébergées par une autre machine que le code "serveur" ou bien si les clients sont des clients Swing ou bien si les clients sont des application .Net, là il faut se poser la question de l'accès distant.
    Voilà, c'est exactement ce cas là. Mes clients sont des applications SWING distantes.

    Dans ce cas, tu as la possibilité d'utiliser des EJBs (si tu restes dans le monde client Java) ou des WebServices (si tes clients sont .Net et/ou Java). Pour les EJBs, Spring propose des classes facilitant l'intégration d'un EJB dans la logique d'initialisation des Beans. Pour les WebServices, je ne connais pas personnellement une intégration spécifique côté Spring avec un truc comme Axis (à voir sur le forum Spring car j'y ai vu les mots WebServices et Axis donc...)
    Côté client Java, tu peux aussi utiliser Spring pour rendre transparent l'appel aux EJBs !
    Je ne pense pas utiliser les webservices pour mes besoins. Je rapelle que le besoin est de rendre accessible les méthodes des beans entités, comme on peut le faire avec les interfaces remote des Entity Bean.

    En fait, je voudrais rendre mes objets accessible dans la même idée que les EJB Entité, mais sans utiliser les EJB Entité car ils sont trop lourd à mettre en place et que ça m'obligerait de ré-écrire une bonne partie du code déjà écrit pour une version mono-poste du logiciel.

    Merci d'avance pour vos prochains conseils !

    Toine

  4. #4
    Membre confirmé
    Inscrit en
    Octobre 2002
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 108
    Par défaut
    tu veux rendre remote tes beans entité sans vouloir utiliser des EJB ou Web services. Je vois pas d'autres solutions à part de développer toi-même la partie serveur en rmi ou socket.

  5. #5
    ego
    ego est déconnecté
    Rédacteur

    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    1 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 883
    Billets dans le blog
    2
    Par défaut
    Ben des EJBs comme façades ça fonctionne ! Tes EJBs déléguent l'exécution des méthodes à ton objet "entity".

  6. #6
    Membre éclairé

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 328
    Par défaut
    Peux-tu m'en dire plus à ce sujet ? Cela consiste à avoir quelle sorte d'architechture ?

    Toine

  7. #7
    Rédacteur
    Avatar de lunatix
    Homme Profil pro
    Architecte technique
    Inscrit en
    Novembre 2002
    Messages
    1 960
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 960
    Par défaut
    ca depends aussi de ce que tu veux dire par rendre les objets distants... si c'est de la simple consultation/manipulation distante, je dirais que le module http est pas mal !

    common-http-client sur les applications swing pour finalement emuler le comportement d'un navigateur web (sauf que tu te passes de la jsp) et le Spring's HTTP invoker coté spring.

  8. #8
    ego
    ego est déconnecté
    Rédacteur

    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    1 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 883
    Billets dans le blog
    2

  9. #9
    Rédacteur
    Avatar de lunatix
    Homme Profil pro
    Architecte technique
    Inscrit en
    Novembre 2002
    Messages
    1 960
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 960
    Par défaut
    c'est illisible sous firefox
    (bon j'l'ai deja lu quand tu l'as publié... mais ca reste illisible sous firefox )

  10. #10
    Membre éclairé

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 328
    Par défaut
    J'ai déjà lu cet article également il y a quelques temps ... Les principes exposés via l'utilisation d'une session façade est d'offrir des services pas directement lié à un objet entité en particulier...

    Par exemple, je voudrais avoir sur mon serveur des objets POJO manipulé par Spring comme "Personne" et "Entreprise" et depuis mes clients lourds SWING effectuer une recherche de "Personne" via un ID par exemple, modifier son prénom en faisant setFirstName() sur l'objet retourner, de lui associer une "Entreprise" ....

    Toine

  11. #11
    ego
    ego est déconnecté
    Rédacteur

    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    1 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 883
    Billets dans le blog
    2
    Par défaut
    Je te conseille le pattern Façade, le passage de grappes d'objets puis la manipulation de cette grappe sur le client puis tu renvois la grappe au serveur qui réintrègre la grappe dans un contexte transactionnel et sauvegarde la grappe.
    Regardes la problématique sur les long-transactions dans la doc Hibernate.

  12. #12
    Membre chevronné
    Avatar de bmoussaud
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    218
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2003
    Messages : 218
    Par défaut
    Facade
    j'ai fait une application Swing qui accédait à des données distantes via des EJB Type Stateless , implémentant le pattern Facade, ca marche du tonnerre ! SI tu ne veux pas d'EJB Session StateLess, tu peux prendre du RMI

  13. #13
    Membre éclairé

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 328
    Par défaut
    Je te conseille le pattern Façade, le passage de grappes d'objets puis la manipulation de cette grappe sur le client puis tu renvois la grappe au serveur qui réintrègre la grappe dans un contexte transactionnel et sauvegarde la grappe.
    Regardes la problématique sur les long-transactions dans la doc Hibernate.
    Dans ce cas, tu dois passer par des "Value Object" pour renvoyer les objets de la facade aux clients, c'est bien ça ?


    j'ai fait une application Swing qui accédait à des données distantes via des EJB Type Stateless , implémentant le pattern Facade, ca marche du tonnerre ! SI tu ne veux pas d'EJB Session StateLess, tu peux prendre du RMI
    Dans ce cas, je préfèrerai autant utilisé les EJB Session Stateless afin de ne pas avoir à réinventer la roue.

    Merci pour vos éléments de réponses très intéressants !

    Toine

  14. #14
    ego
    ego est déconnecté
    Rédacteur

    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    1 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 883
    Billets dans le blog
    2
    Par défaut
    Oui pour les EJB stateless.
    Pour les ValueObjects, cela n'est pas forcément nécessaire; je m'explique.
    Si tes données persistantes sont des POJOs avec partiquement aucune logique métier/applicative, il te suffira de les rendre Serializable. Pour le passage de grappes d'objets, il suffit alors de constituer la grappe sur le serveur en appelant tous les accesseurs aux collections pour qu'Hibernate fasse le load des données voulues (et/ou utiliser les options du fetch); ce point est important si tu fais du lazy loading, il ne faut pas que le client accède à une collection qui demande une requête à la base !
    Si tes objets persistants ne sont pas complètement ceux que tu veux envoyer parce que, par exemple, tu veux envoyer des objets partiels (sortes de vues sur tes objets persistants), tu n'as qu'à créer des classes pour cela et utiliser les capacités de HQL. Avec HQL, tu peux en effet écrire des requêtes du genre : "select new MyPersonneView(nom,prenom) from Personne...."

  15. #15
    Membre éclairé

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 328
    Par défaut
    Merci beaucoup pour ces précisions qui m'éclairent grandement.

    Pour conclure, peut-on dire que les clients recevront systématiquement des copies des objets distants (par des Value Object, ou par Serialisation) ?

    Toine

  16. #16
    ego
    ego est déconnecté
    Rédacteur

    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    1 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 883
    Billets dans le blog
    2
    Par défaut
    oui

  17. #17
    Membre éclairé

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 328
    Par défaut
    Très bien... Merci à tous pour votre aide ! J'y vois plus clair à présent.

    Toine

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [EJB] [Débutant] Portabilité des EJB
    Par ruff15 dans le forum Java EE
    Réponses: 7
    Dernier message: 23/01/2008, 17h47
  2. [Débutant(e)]deployment des EJB
    Par furikuri dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 01/02/2005, 16h44
  3. Piloter une interface avec des relais
    Par Yepazix dans le forum API, COM et SDKs
    Réponses: 13
    Dernier message: 26/10/2004, 19h46
  4. Compiler, Déployer des EJB avec ANT ?
    Par Johnbob dans le forum ANT
    Réponses: 3
    Dernier message: 28/09/2004, 16h04
  5. [JONAS][EJB]erreur sur la construction des EJB
    Par silvermoon dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 04/06/2004, 18h53

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