controler ordre des actions

Forum destiné aux questions sur le développement : Formules, LotusScript, Java ...

controler ordre des actions

Messagepar seroa » 31 Jan 2010 à 15:31

Bonjour à tous,

Je voudrais savoir s'il est possible de contrôler l'ordre d'action avec un agent en java sur un serveur domino.

Par exemple, mon agent lance une première méthode qui fait une pause de 10 seconde (Thread.sleep) puis enregistre un document A et une methode qui enregistre directement un document B.

Dans cette exemple, le document A est enregistré avant le document B, c'est à dire qu'il exécute une méthode après l'autre et pas les deux en même temps.

Je voudrais savoir s'il est possible qu'il exécute les deux en même temps. Je précise que Domino est installé sous linux, peut etre que cela a une influance ?

Merci
seroa
Posteur expérimenté
Posteur expérimenté
 
Message(s) : 304
Inscrit(e) le : 08 Nov 2007 à 08:36
Localisation : Mâcon

Messagepar [In://ForM] » 31 Jan 2010 à 17:48

Comme en langage C je suppose, faire du multi-thread en Java. Et rendez-vous au tas de sable en fin des traitements.....
[In://ForM]
 

Messagepar seroa » 02 Fév 2010 à 08:37

Bonjour,

J'ai mis en place le multi thread.

Tout vas bien lorsque je fais un affichage sur la console, par contre, lorsque j'utilise des objets, la le serveur plante complètement avec l'erreur suivante : HTTP JVM: JVMDG303: JVM Requesting Java core file

Je suis obligé de redémarrer le serveur.

Voila ma classe principale :

Code : Tout sélectionner
public class TestThreadSynchro extends AbstractDominoAgent {
   
   protected Database db;

   
   public TestThreadSynchro(final Session session, final Database db) {
      super(session);
      this.db = db;
   }

   public void run() throws NotesException {
      
      SecondActivity act2 = new SecondActivity();
      Thread t = new Thread(act2);
      t.start();
      
      try {
            Thread.sleep(5000);
      } catch (InterruptedException e) {
             
      }
      
      ObjectFactory factory = new ObjectFactory(db);
      Object ts =  factory.load("1","doc n°1");
      System.out.print(ts.getNum() + ":" + ts.getName() + " is saved" );
      
      
      try {
         t.join();
      } catch (InterruptedException e) {
         e.printStackTrace();
      }
      
      
   }
   
}


Ma classe seconde activité :

Code : Tout sélectionner
public class SecondActivity implements Runnable {
   

   public SecondActivity () {

   }
   
   public void run() {

      ObjectFactory factory = new ObjectFactory(db);
      Object ts =  factory.load("2","doc n°2");
      System.out.print(ts.getNum() + ":" + ts.getName() + " is saved" );
               
   }
}


Est-ce que vous voyez d'où le problème pourrait venir s'il vous plait ?

Merci
seroa
Posteur expérimenté
Posteur expérimenté
 
Message(s) : 304
Inscrit(e) le : 08 Nov 2007 à 08:36
Localisation : Mâcon

Messagepar LSong » 02 Fév 2010 à 11:49

ce que je lit la quand tu lances le start de la classe TestThreadSynchro tu vas lancer dans la foulé le thread contenant SecondActivity
qui lui sans attendre va traiter son doc
5s apres le TestThreadSynchro traite le sien


les deux ne sont pas en meme temps
a mon avis ce n'est pas un probleme d'accé en meme temps

si tu veux un traitement // (je vois pas pourquoi ce besoin mais bon)
il faut que tu lance plusieurs fois SecondActivity avec un parametre (dans le constructuer ou un syseme de producteur/consomateur)
LSong
Posteur expérimenté
Posteur expérimenté
 
Message(s) : 353
Inscrit(e) le : 07 Nov 2007 à 14:27
Localisation : Ile de france

Messagepar seroa » 02 Fév 2010 à 17:45

Merci,

en effet ça n'était pas un problème d'accès en même temps, je ne vois toujours pas pourquoi le serveur plante.

Quoi qu'il en soit en lançant plusieurs fois mon thread SecondACtivity, ça fonctionne.
seroa
Posteur expérimenté
Posteur expérimenté
 
Message(s) : 304
Inscrit(e) le : 08 Nov 2007 à 08:36
Localisation : Mâcon

Messagepar LSong » 03 Fév 2010 à 09:36

il faudrait voir ce que fait ta factory pour cherche la raison de ton plantage

personnellement je prefaire heriter de la classe Thread que d'implementé runnable c'est plus simple je trouve
LSong
Posteur expérimenté
Posteur expérimenté
 
Message(s) : 353
Inscrit(e) le : 07 Nov 2007 à 14:27
Localisation : Ile de france


Retour vers Développement

cron