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

Lotus Notes Discussion :

Java recycle et objects passés en paramètre


Sujet :

Lotus Notes

  1. #1
    Membre habitué
    Homme Profil pro
    Geek
    Inscrit en
    Avril 2007
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Geek

    Informations forums :
    Inscription : Avril 2007
    Messages : 452
    Points : 175
    Points
    175
    Par défaut Java recycle et objects passés en paramètre
    Bonjour

    je me pose 2 questions concernant le recycled en java.

    - quand on construit une méthode ou on passe un object domino

    public void test(Document docParam){
    .....
    }

    doit on recycler l'objet passé en parametre à la fin de la méthode ?
    d'ailleur dans ce cas, l'objet est "dupliqué" ou c'est un passage de pointer ?

    - lorqu'une méthode renvoi un objet comment fais ton pour le recylcer apres le return ?

    public Document test(){
    Document doc;

    return doc
    }

  2. #2
    Membre averti
    Homme Profil pro
    Consultant Lotus Notes/Domino
    Inscrit en
    Juin 2015
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant Lotus Notes/Domino
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2015
    Messages : 312
    Points : 397
    Points
    397
    Par défaut
    Ce sont des notions Java, il faut plutôt approfondir tes connaissances en Java.

    Sauf usage intensif (milliers d'instance), sous Domino, le recyclage peut attendre de se faire tout seul quand ton script se termine. C'est assez tolérant.

  3. #3
    Membre habitué
    Homme Profil pro
    Geek
    Inscrit en
    Avril 2007
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Geek

    Informations forums :
    Inscription : Avril 2007
    Messages : 452
    Points : 175
    Points
    175
    Par défaut
    Merci,

    mais comme le recyling est lié a domino...

  4. #4
    Membre expérimenté
    Avatar de Jérôme Deniau
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Janvier 2015
    Messages
    804
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2015
    Messages : 804
    Points : 1 434
    Points
    1 434
    Billets dans le blog
    32
    Par défaut Pas tolérant du tout
    Il faut se méfier: on doit exécuter recycle le plus proche de l'instanciation.

    En plus il faut faire un recycle sur certains types de champs (exemple d'un notesdocument) quand on boucle sur un DateTime de Notes, lde recycle du doc laisse des bouts......

    Autre solution, prendre openNTF dans le cas de la lib openNTF le recycle se fait sur l'objet global

    Sinon pour ne plus se faire chier avec les recycle, regarder DOTS fourni par IBM dans les IBM Social components que l'on installe sur Domino (tester avec load DOTS et pour voir si ok côté Domino on peut aussi faire un tell http osgi show modules).

    Alors pourquoi le recycle? Parce que le garbage collector de java ne détruit QUE des objets java (donc un pointeur à la con dans le cas de Notes), mais pas la famille C++, donc le recycle Domino force la destruction de l'obejt C++ (nlsxbe.dll pour les windaube serveur et lsxbe.so pour les Linux et tal) donc si on laisse faire le garbage collector on détruit un pointeur (sic!) mais pas l'objet derrière.

    Donc si on est cohérent, on recycle puis on met l'obejt à null et si on est parano on appelle je garbage collector de JAVA.

    Maintenant si on ne fait pas, ben ça fait juste boum au bout de x exécutions, mais on peut toujours relancer le serveur Domino pour régler le problème (private joke).

  5. #5
    Membre averti
    Homme Profil pro
    Consultant Lotus Notes/Domino
    Inscrit en
    Juin 2015
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant Lotus Notes/Domino
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2015
    Messages : 312
    Points : 397
    Points
    397
    Par défaut
    Très intéresant Jérôme, merci.

    Il y avait pas une histoire que quand l'agent finit son exécution, il fait le garbage collector ?

  6. #6
    Membre expérimenté
    Avatar de Jérôme Deniau
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Janvier 2015
    Messages
    804
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2015
    Messages : 804
    Points : 1 434
    Points
    1 434
    Billets dans le blog
    32
    Par défaut Nope
    il faut au minimum session.recycle() sinon tout pareil amgr ou http ne détruit QUE les pointeurs Java.

    Et avec HTTP (un agent java déclenché par un browser) c'est encore plus rapide (pour planter Domino) s'il n'y a pas de recycle()....

  7. #7
    Membre habitué
    Homme Profil pro
    Geek
    Inscrit en
    Avril 2007
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Geek

    Informations forums :
    Inscription : Avril 2007
    Messages : 452
    Points : 175
    Points
    175
    Par défaut
    et donc concernant ma question ?

  8. #8
    Membre averti
    Homme Profil pro
    Consultant Lotus Notes/Domino
    Inscrit en
    Juin 2015
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant Lotus Notes/Domino
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2015
    Messages : 312
    Points : 397
    Points
    397
    Par défaut
    Ok merci Jérôme !

  9. #9
    Membre expérimenté
    Avatar de Jérôme Deniau
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Janvier 2015
    Messages
    804
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2015
    Messages : 804
    Points : 1 434
    Points
    1 434
    Billets dans le blog
    32
    Par défaut Pour tes questions
    Alors

    1/ - quand on construit une méthode ou on passe un object domino doit on recycler l'objet passé en parametre à la fin de la méthode ?
    d'ailleur dans ce cas, l'objet est "dupliqué" ou c'est un passage de pointer ?

    C'est à l'appellant de gérer cela l'objet passé est un pointeur, donc la jaja C/C++ derrière n'est pas dupliquée

    En gros méthode A initialise l'objet, le passe à mérhode B/C/D, une fois son job terminé, la méthode A détruit (recylce + garbage collector prepa) l'objet


    2/ lorqu'une méthode renvoi un objet comment fais ton pour le recylcer apres le return ?

    pareil la méthode A qui appelle la méthode X qui renvoit un objet, une fois que la méthode A a terminé son taff, la méthode A recycle et prépare le job pour le garbage collector (objet=null suffit généralement et cela évite de vouloir s'en servir après....) en orienté objet si méthode A instancie un Objet X, lorsque sur je supprime l'objet X ce dernier (s'il a instancié des classes Notes) DOIT faire le ménage

    En gros voia, le mieux est donc de se créer des classes et que ces dites classes fassent leur job (initialisation, destruction, etc....) ce qui fait qu'en tant que dév je me fous de la gestion des couches basse....... Comme on le fait en LotusScript par exemple dans le terminate d'une classe ou on détruit tout ce que l'on a initialisé dans le new........

  10. #10
    Membre habitué
    Homme Profil pro
    Geek
    Inscrit en
    Avril 2007
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Geek

    Informations forums :
    Inscription : Avril 2007
    Messages : 452
    Points : 175
    Points
    175
    Par défaut
    ok merci

    j'ai essayé de trouvé dans la lib openntf comment ils géraient le recycle. mais j'ai pas réusssis a trouver, tu sais o ça se trouve dedans ?

  11. #11
    Membre expérimenté
    Avatar de Jérôme Deniau
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Janvier 2015
    Messages
    804
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2015
    Messages : 804
    Points : 1 434
    Points
    1 434
    Billets dans le blog
    32
    Par défaut OpenNTF: précision
    Je n'ai pas précisé, ce n'est pas l'extension LIB d'OpenNTF, je parle de Domino API d'OpenNTF

    https://www.openntf.org/main.nsf/pro...20Domino%20API

  12. #12
    Membre habitué
    Homme Profil pro
    Geek
    Inscrit en
    Avril 2007
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Geek

    Informations forums :
    Inscription : Avril 2007
    Messages : 452
    Points : 175
    Points
    175
    Par défaut
    c'est bien dans celle la que j'ai cherché... mais je rame un peu.

  13. #13
    Membre habitué
    Homme Profil pro
    Geek
    Inscrit en
    Avril 2007
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Geek

    Informations forums :
    Inscription : Avril 2007
    Messages : 452
    Points : 175
    Points
    175
    Par défaut
    Jerome

    quand tu dis :

    En plus il faut faire un recycle sur certains types de champs (exemple d'un notesdocument) quand on boucle sur un DateTime de Notes, lde recycle du doc laisse des bouts......

    ça veux dire qu'il faut recycle les champs d'un document meme s'ils n'ont pas été utilisé ? ou uniquement si on les a uéilisé via un item ?

  14. #14
    Membre expérimenté
    Avatar de Jérôme Deniau
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Janvier 2015
    Messages
    804
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2015
    Messages : 804
    Points : 1 434
    Points
    1 434
    Billets dans le blog
    32
    Par défaut uniquement
    si tu y accèdes ave un Item, etc....

  15. #15
    Membre habitué
    Homme Profil pro
    Geek
    Inscrit en
    Avril 2007
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Geek

    Informations forums :
    Inscription : Avril 2007
    Messages : 452
    Points : 175
    Points
    175
    Par défaut
    c'est bien ce que je pensais. merci

Discussions similaires

  1. Contrôle de la classe des objets passés en paramêtres ?
    Par marot_r dans le forum VBA Access
    Réponses: 0
    Dernier message: 07/04/2008, 23h55
  2. 2 programme java distincts, 1 object commun!
    Par MC wacko dans le forum Langage
    Réponses: 14
    Dernier message: 16/10/2007, 17h35
  3. JAVA - Passer des Objects à des méthodes
    Par canou94 dans le forum CORBA
    Réponses: 2
    Dernier message: 15/11/2005, 23h39
  4. [JAVA et XML] Message XML avec paramètre JAVA
    Par MiJack dans le forum Format d'échange (XML, JSON...)
    Réponses: 9
    Dernier message: 09/11/2005, 11h22
  5. [Java] méthode static et passage de paramètre
    Par tomburn dans le forum Langage
    Réponses: 10
    Dernier message: 11/05/2005, 17h19

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