nj_gossein a écrit 5 commentaires

  • [^] # Re: Syslinux

    Posté par  . En réponse au message secteur de démarrage sur disque usb pour disque interne. Évalué à 1.

    salut!
    Oui, je ne connaissais pas ça, j'ai pas réussi a bidouiller un truc qui fonctionne avec ce WE, mais je ne m'avoue pas vaincu.
    Merçi pour le lien!
  • [^] # Re: Salut!

    Posté par  . En réponse au message Axis + Un grand nombre de messages. Évalué à 1.

    mince, la signature de manageFlag devrait être:

    public static synchronized boolean manageFlag(int n);
  • [^] # Re: Salut!

    Posté par  . En réponse au message Axis + Un grand nombre de messages. Évalué à 1.

    mouais, du coup, c'est un peu tordu, trop peut être.

    Une autre bidouille, qui ferait plus propre, et plus rapide à implémenter, serait de faire genre une ArrayList static dans la classe du service, et un flag boolean, static aussi ,pour signifier qu'un service est exécute ton code métier.
    Le premier service contacté prend le contrôle de l'ArrayList, tous les autres remplissent cette ArrayList puis se termine.
    Et du coup, une seule instance du service exécute ton code métier à un instant donné, même si plusieurs instance du service peuvent ajouter des messages dans la liste (et avec un synchronized pour les placer dans l'ordre).

    Un truc du genre:

    static boolean flag;
    static ArrayList msg;

    //quelques methodes static pour accéder au champs static, //synchronized pour faire vérrou sur les champs

    static final int GET_FLAG = 0;
    static final int FREE_FLAG = 1;

    //pour gérer le flag
    public static synchronized void manageFlag(int n){
    if(n == GET_FLAG){
    flag = true;
    }else if(n == FREE_FLAG){
    flag = false;
    }
    return flag;
    }

    //pour récup le premier message dans la liste
    public static synchronized SOAPMessage getNextMsg(){
    //si liste vide retourne null
    }

    //pour ajouter à la fin de la liste le nouveau message
    public static synchronized SOAPMessage addMsg(SOAPMessage){...}

    //et ton service
    public void service(SOAPMessage request, SOAPMessage response){
    addMsg(request);
    if (!manageFlag(GET_FLAG)){
    SOAPMessage msg = null;
    while(msg=getNextMsg()!=null || manageFlag(FREE_FLAG)){
    if(msg == null){
    msg = getNextMsg(); //pour les pblms de synchro
    }
    //appel du code métier, contenu dans une méthode de la classe du service par exemple
    }
    }
    }

    c'est jouable je crois....

    Sinon, je suis curieux, c'est dans quel contexte appalicatif que tu fais ça?

    cordialement,
  • [^] # Re: Salut!

    Posté par  . En réponse au message Axis + Un grand nombre de messages. Évalué à 1.

    oui, j'ai pas réussi à faire de l'asynchronisme avec axis1.4 moi non plus, en fait on peut utiliser JMS comme protocole de transport pour ça, j'ai jamais réussi à l'utiliser...

    En fait, si j'ai bien compris, tes messages sont synchrones mais en one-way, c'est ça???

    Une solution serait que ton service contact une file de message en local sur la bécane qui héberge le-dit service.
    A chaque message soap reçu, le service empile les infos du message sur la file de message, et à côté (toujours sur la même machine) tu as un démon java qui pioche dans la file de message et exécute ton code métiern (avec une lecture bloquante sur la file de message pour qu'il se mette en attente s'il n'y a plus de message dans la file).
    Mais c'est peut être un peu tordu... non?

    Cela dit, l'important si j'ai bien compris, ce n'est pas tant l'asynchronisme, mais le fait que le service traite les messages un par un, non?

    Et euh, tu peux faire héberger Axis par Geronimo, le conteneur d'EJB d'apache, qui apporte aussi un conteneur de file de message (ActiveMQ), je l'ai fait il y a quelque mois, c'est assez simple à mettre en oeuvre je crois.

    Si cela peut être utile...
  • # Salut!

    Posté par  . En réponse au message Axis + Un grand nombre de messages. Évalué à 1.

    Tes messages SOAP sont asynchrones?

    Je comprend pas vraiment ce que tu veux faire....
    tu peux expliquer un peu plus?

    Cela dit, synchrone ou pas, il est peut être possible de bidouiller un truc avec des variables de classe dans le service, et de gérer une sorte de queue avec le AxisEngine non? tu as envisagé un truc du genre?