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

Java EE Discussion :

Mise à jour des Entity coté serveur si modif coté client


Sujet :

Java EE

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 8
    Points : 5
    Points
    5
    Par défaut Mise à jour des Entity coté serveur si modif coté client
    Bonjour à tous,

    Un bout de code faut mieux qu'un long discours :

    === Côté serveur ===

    public class Contact implements Serializable {

    private String name;

    // GETTER AND SETTER
    }


    === Côté Client ===


    // Demande d'instancier l'ejb Entity coté serveur
    Contact monContact= DataBinding.createModel(Contact.class);
    monContact.setName("Toto");

    === Infos supplémentaires ===

    La classe DataBinding fais en sorte d'instancier le contact côté serveur. Il y'a donc une instance coté client ET serveur de mon objet

    === LE PROBLEME ===


    Du fait qu'il s'agisse d'une entité, mon objet contact que j'ai instancié coté serveur est copié chez le client (d'ou la 2ième instance). Evidement, lorsque je modifie mon objet avec un setter côté client, la modification se fait coté client car il n'y a pas de référence directe entre mon objet du client et celui que le serveur a instancié.

    Auriez vous une solution pour que lorsque je modifie mon objet côté client, les modification soit impacté directement à l'objet disponible sur le serveur ?


    Merci énormément par avance

  2. #2
    Membre actif Avatar de a.snaps
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    209
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 209
    Points : 241
    Points
    241
    Par défaut
    Citation Envoyé par SeeNapse
    Auriez vous une solution pour que lorsque je modifie mon objet côté client, les modification soit impacté directement à l'objet disponible sur le serveur ?
    Je pense que malheureusement cela soit impossible (sauf de wrapper ton objet dans un dynamic proxy, qui s'occuperait de faire le call qui suit à chacune de tes modifications)...
    Le call qui suit donc:
    Tu devrais implémenter un méthode mise à jour de ton instance via un SF ou SLSB, selon. Côté serveur, il faut merger l'instance détachée de ton entité avec le PersistenceContext. Une stratégie d'optimistic locking ne serait sans doute pas un luxe!
    Alex

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2003
    Messages : 79
    Points : 89
    Points
    89
    Par défaut
    tu utilises bien EJB3 ? si oui normalement avec ton EntityManagerFactory devrait pouvoir lors d'un "em.merge" reconnecter avec l'instance coté Serveur, et mettre a jour, mais je peux me tromper.

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Je te confirme bien que j'utilise EJB3, utiliser un em.merge revient normalement à faire comme le disais a.snaps un proxy qui s'occuperai des appels. J'avais déjà pensé au proxy mais je voulais voir si l'un de vous avait une meilleur idée

  5. #5
    Membre actif Avatar de a.snaps
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    209
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 209
    Points : 241
    Points
    241
    Par défaut
    Tu n'as pas de PersistenceContext côté client. Le merge se fait côté serveur... Tu dois donc faire un appels à une méthode distante (remote call) à disons un Stateless SessionBean... Le EntityManagerFactory ne sert qu'à obtenir une session, et à nouveau est côté serveur.
    Alex

    PS: Si tu fais le dynamic proxy, le code m'intéresse... Par curiosité. Et de plus pourquoi cette stratégie? C'est quoi l'appli finale? C'est pas un peu tiré par les cheveux?

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    L'objectif final est le développement d'un "framework" (gestion de la navigation, accès simplifier à la couche métier,...) indifférent à la techno de présentation (swing, jsf, etc...). Dans l'un des points à réaliser, il faut faire en sorte de gérer le databinding automatique d'un javabean classique avec un formulaire par exemple. Si ton application est par exemple en swing et que ton formulaire se résume à un wizard en plusieurs fenêtre, l'intérêt de gérer l'état des bean côté serveur est qu'il est très simple derrière de réaliser un traitement métier, et plein d'autres actions tout en ne tenant pas compte de la techno de présentation...

    Bref, c'est pas tout simple à faire

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2003
    Messages : 79
    Points : 89
    Points
    89
    Par défaut
    hum bizarre, je suis en train de lire le livre EJB3 de supinfo, chapitre 8 "développement des clients" , 8.1.2 vers la fin il dit ceci "La création du proxy est a la charge du conteneur et reste totalement transparent pour le client".

    Ceci quelque soit le client (Client Riche ou par un Conteneur d'applications clientes). En faisant appel au Remote SessionBean prévu pour rafraishir du coté serveur.

    Ou bien j'ai pas bien compris ce que voulais faire SeeNapse. Certe si c'est le cas désolé.

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Par proxy, je voulais parler de celui qui se charge de vérifier l'état des beans coté client et qui prends en charge toute la conversation client/serveur, mise à jours des différents bean

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2003
    Messages : 79
    Points : 89
    Points
    89
    Par défaut
    Si il y a un bout de code pour que je puisse regarder, cela m'interesserais aussi

    merci

Discussions similaires

  1. Réponses: 2
    Dernier message: 12/08/2011, 14h07
  2. Réponses: 0
    Dernier message: 04/08/2008, 14h54
  3. Serveurs loadbalancé, mise à jour des fichiers
    Par glsn dans le forum Apache
    Réponses: 1
    Dernier message: 14/05/2007, 16h07
  4. Réponses: 2
    Dernier message: 21/04/2007, 20h19
  5. Réponses: 5
    Dernier message: 08/03/2007, 10h13

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