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

Plateformes (Java EE, Jakarta EE, Spring) et Serveurs Discussion :

[Architecture] Traitement long


Sujet :

Plateformes (Java EE, Jakarta EE, Spring) et Serveurs

  1. #1
    Membre confirmé
    Inscrit en
    Août 2004
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 171
    Par défaut [Architecture] Traitement long
    Bonjour,
    je ne savais pas trop comment tagé mon message alors j'en propose un nouveau...
    Donc voila mon probleme traite d'architecture d'une application J2EE
    Je vous explique:
    Un utilisateur connecter a l'application a travers une interface web (jsp avec le framework struts) devra pouvoir lancer des traitements longs (de plusieurs secondes a une heure).
    De plus, plusieurs utilisateurs peuvent demander l'execution d'un traitement (différent) en simultané.
    Et je ne sais pas trop comment je doit implémenter ça.
    Je pensais émettre, lors de la demande de l'utilisateur, une requete vers une servlet, qui a son tour créerait un message driven bean, et lui enverer un message lui demandant d'effectuer le traitement.
    La servlet (qui ne serait pas bloqué lors du traitement) pourrait donc répondre a la requete, pour signaler a l'utilisateur que le traitement a été lancé.

    Je ne sais pas si toute "infrastructure" est judicieuse, mais elle me semble nécessaire, si je ne veux pas que mon utlisateur sont bloqué lors de sa requete sur une page blance qui mettrait plusieurs minutes a s'afficher....

    Je ne sais pas si mon idée est pertinante, et c'est pour cela que je post ce message. Je suis ouvert a toute proposition alternative.

    De plus, a prioris je vois pas comment il serait possible d'avertir que le traitement a été terminé.
    A moins que un code javascript effectuerait une requete ajax toutes les xx secondes pour intérroger le seveur de l'avancement du traitement.

    ps j'ai eu une autre idée:
    il serait possible également que la servlet en question rajoute dans la BD la demande de la requete, et que en parrallèle, un bean (une thread? un mdb, je ne sais pas) lit cette table et effectue le traitement.

  2. #2
    Membre confirmé
    Inscrit en
    Août 2004
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 171
    Par défaut
    Sinon comme je disait dans le message initial. Il serait possible que la servlet reçevant un ordre d'execution de traitement, inscrire dans la BD l'ordre d'execution de la tache.
    Un thread qui aurrait été créé au demarrage de l'application, "scruteré" la BD (toutes les xx sec.) a la recherche d'un traitment à exécuter, et créerait pour chaque demande une thread qui serait chargé d'exécuter la tache.
    Par contre je ne sais pas comment lors du démarrage de l'application (lors du déploiement) , je pourrais créé la thread "scrutante".

    Merci d'avance pour vos commentaires qui j'ose espérer seront nombreux

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 65
    Par défaut
    Bonjour,

    J'ai exactement les mêmes besoins que toi. J'utilise également Struts.
    Sans surprise, j'examine donc les mêmes pistes. La solution retenue pour le moment (faute de mieux) est d'inscrire une demande de traitement en base de données, puis de les exécuter de manière désynchronisée. La fin de chaque traitement serait signalée en base de données pour consultation des résultats.

    C'est très approximatif car le choix n'est pas encore arrêté. Je suis donc preneur de toute autre solution et/ou de tout retour d'expérience sur le sujet.

  4. #4
    Membre confirmé
    Inscrit en
    Août 2004
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 171
    Par défaut
    Pas de problème je te tiendrais au courant quand mes recherches auront évolués.

    Sinon j'aurais aimé savoir comment pour le moment, tu prévoit de créer la thread qui sera chargé de regarder dans la base de données les traitements qui doivent être exécutés.
    Et si tu prévoit une thread d'execution par traitement a effecuter.

  5. #5
    Membre confirmé
    Inscrit en
    Août 2004
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 171
    Par défaut
    Je me permet de vous relancer, car c'est un problème très important pour moi. Et que je pense que mon problème n'est pas si farfelu que ça.

    Mon post n'est peut être pas assez claire, si c'est le cas n'hésité pas a me demander des précisions.

    Merci d'avance

  6. #6
    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
    Vous pouvez regarder ici qq idées :

    http://publib.boulder.ibm.com/infoce...ns/player.html

    http://dev2dev.bea.com/pub/a/2005/05...lel_tasks.html

    http://java.sun.com/blueprints/corej...Activator.html

    Dans le doc de BEA, vous verrez une référence au "WorkManager". Il existe une intégration de cette spec dans..........Spring, bien sûr !!

  7. #7
    Membre confirmé
    Inscrit en
    Août 2004
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 171
    Par défaut
    Je te remercie d'avoir pris le temps lire le (long) post et de répondre. Je vais lire ces références je te recontactérais si j'ai des questions.

    tetram51 ps: tiens moi au courant stp, si tu avance de ton coté

  8. #8
    Membre confirmé
    Inscrit en
    Août 2004
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 171
    Par défaut
    Bha tiens voila j'ai une petite question,
    je viens de lire ton intro sur Spring, je connaissais la bête uniquement de nom, et de ce que je viens de lire, ça serait une alternative a un serveur J2EE (complet) tel que JBoss. Et ma question ce serait comment savoir si dans tel cas je doit utiliser un serveur lourd ou léger ? (dsl de la question qui est très ouverte, je me contenterais d'une réponse grossiere )

  9. #9
    Membre averti
    Inscrit en
    Avril 2006
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 25
    Par défaut
    pour faire un travail asynchrone, le message driven bean semble etre une bonne solution, puisque si tu passe par une table tu refait un peu ce que propose JMS.
    Pour l'attente, ce que je ferais c'est proposer une page à l'utilisateur avec la liste de ses traitements en cours avec possibilité de consulter l'etat du traitement.

  10. #10
    Membre confirmé
    Inscrit en
    Août 2004
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 171
    Par défaut
    Apparement de ce que j'ai lu, l'utilisation du WorkManager (inclu dans la spécification j2ee) conviendrait parafatiement pour des traitements parralleles et asynchrone.
    Je suis entrain de regarder comment fait on pour utiliserle WorkManager avec Jboss v4.0.x mais je ne trouve pas comment faut-il faire créer un WorkManager dans la console d'adminstration.
    Donc si quelqu'un a une idée pour cela ça m'interesse ..

  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
    Regardes Spring et l'intégration de Quartz et/ou JMS cela peut tout à fait convenir.
    Pour ton histoire de serveur léger vs lourd, disons que si tu n'as pas de contrainte disant que tu DOIS utiliser un serveur d'application avec conteneur d'EJB et donc t'inscrire dans un standard d'entreprise, il n'y a pas beaucoup de raison valables pour choisir un serveur "lourd".
    Tu peux tout aussi bien faire avec un serveur type Tomcat + servlet + JMS + Spring. Sachant que pour faire de la distribution, tu peux utiliser le "httpinvoker" de Spring pour faire un "WebService" full Java.
    Le seul truc auquel je pense et qui peux justifier l'usage d'un serveur avec EJB est le besoin d'un cluster te permettant de faire de load-balancing et de la fault-tolerance très facilement; mais même là, il y a des solutions avec un serveur Tomcat alors.....(mais je n'ai jamais mis en oeuvre ce type de solution avec Tomcat. Je connais plutôt WebLogic en version cluster)

  12. #12
    Membre confirmé
    Inscrit en
    Août 2004
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 171
    Par défaut
    Merci pour ta réponse mais je vais conserver mon serveur d'application jboss et ne pas utiliser Spring.
    Il me reste plus qu'a trouver comment faire fonctionner le WorkManager avec Jboss. (deja 8h de recherche .... etça marche pas)...

    Je note le poste comment étant résolu car le probleme n'est plus le meme .. J'ai créer un post pr l'utilisation du WorkManager sous Jboss si ça interresse quelqu un

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Aide pour définir des index (traitement long)
    Par m-mas dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 25/05/2006, 20h39
  2. [VBA-E] Temps de traitement long
    Par argoet dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 24/05/2006, 09h58
  3. [Oracle8i]Performances, Commit, traitement long
    Par Drizzt [Drone38] dans le forum Oracle
    Réponses: 4
    Dernier message: 17/05/2006, 08h57
  4. Fermeture avec traitement long dans le onActivate
    Par benj63 dans le forum C++Builder
    Réponses: 14
    Dernier message: 20/03/2006, 18h54

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