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

Struts 1 Java Discussion :

[Struts]Serveur web + threads


Sujet :

Struts 1 Java

  1. #1
    Candidat au Club
    Inscrit en
    Juin 2005
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 3
    Points : 2
    Points
    2
    Par défaut [Struts]Serveur web + threads
    Bonjour,

    Je développe une application web en utilisant le framework Struts et en parallèle j'ai un ensemble de threads quotidiens qui à des heures précises doivent effectuer des contrôles. En fait le but de mon application web est d'afficher les résultats de tous les contrôles et l'ensemble des informations est fourni par une BD. A partir de l'appli, il faut aussi que l'utilisateur puisse lancer l'exécution d'un thread indépendamment des heures prévues.
    C'est là en fait que j'ai un petit souci car étant donné que j'ai un nombre important de threads qui peuvent s'exécuter simultanément je ne voudrais pas que ceux-ci soient lancés sur le serveur web.

    Est ce qu'il possible en fait en effectuant une action sur le site web, de déclencher un thread qui ne soit pas exécuté sur le serveur web, pour éviter de le surcharger?

    Merci d'avance



    [Modéré par Didier] : ajout de tag dans le titre - Les règles du forum Java

  2. #2
    Rédacteur
    Avatar de lunatix
    Homme Profil pro
    Architecte technique
    Inscrit en
    Novembre 2002
    Messages
    1 960
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 960
    Points : 3 738
    Points
    3 738
    Par défaut
    tu peux bien sur developper une autre application independante, qui tournera a intervalles fixes, sur une autre machine. (voir le recent tutoriel sur les timers java et l'api quartz dans la section java).

  3. #3
    Candidat au Club
    Inscrit en
    Juin 2005
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Effectivement l'api Quartz m'a l'air relativement intéressante pour plannifier des taches, mais si les taches se déroulent sur une appli indépendante comment est-il possible de lancer manuellement une tache, en dehors des heures de plannification?
    Je n'arrive pas vraiment à voir comment je pourrais effectuer le lien entre le serveur web et l'appli en fait.

    Merci d'avance

  4. #4
    Rédacteur
    Avatar de lunatix
    Homme Profil pro
    Architecte technique
    Inscrit en
    Novembre 2002
    Messages
    1 960
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 960
    Points : 3 738
    Points
    3 738
    Par défaut
    ben, tu as toutes les possibilités que tu veux ! l'appli 1 peut declencher un batch, envoyer un mail, utiliser un web service, faire un get sur un serveur web qui va lancer le truc.

    par exemple : ton appli surveille un compte mail (avec javamail) et se declenche si elle en recoit un. Ou ton application tourne sur un serveur d'application, et se declenche lors de l'appel d'une jsp particuliere.

  5. #5
    Candidat au Club
    Inscrit en
    Juin 2005
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Ok je vois bien que tu peux faire plein de choses et je m'en doute, mais concrètement je n'arrive pas à voir ce qu'il faut faire.
    Par exemple, coté client sur une jsp, je clique sur un bouton. Une action va ainsi être déclenché et coté serveur va faire appel à la servlet permettant de gérer cette action. Maintenant moi ce que je voudrais c'est provoquer le lancement d'une tache(qui récupère des fichiers par ftp par exemple)
    Bien sur si je fais en utilisant Quartz
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    myScheduler.triggerJob(myJob, myGroup)
    je vais bien déclencher ma tache plannifiée mais je voudrais que cette execution ne se fasse pas sur le serveur web.

    Je sais pas si je suis très compréhensif, en tt cas merci lunatix pr ton aide mais je n'arrive pas réellement à voir comment par rapport à ce que tu as mis, l'application est informé que le client, au travers le site web, veut déclencher une tache

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2004
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 25
    Points : 35
    Points
    35
    Par défaut
    Je te propose une solution parmi d'autres , si ton serveur d'app et l'autre appli censée lancer ton traitement sont sur la même machine:

    - il suffit que ton appli (presente sur ton serveur d'application) génère par exemple un fichier

    - une autre application serait en condition de ressources sur ce fichier (en Java tu peux implementer un FileWatchDog, thread bouclant en regardant la date de derniere modif du fichier, ou bien si tu as un ordonnanceur du type Autosys ca peux aussi se faire) et lancerait le traitement des que la condition est remplie.

    si on est dans le cas ou y a 2 machines il suffit de transferer le fichier (ftp,...)


    D'autres solutions , envoi de message (asynchrones) via un middleware (MOM) à l'autre application, ecriture dans une table de ta bd scrutée a intervalle régulier...

  7. #7
    Membre éclairé Avatar de Hervé Saladin
    Homme Profil pro
    Ingénieur d'études en développement et déploiement d'applications
    Inscrit en
    Décembre 2004
    Messages
    647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur d'études en développement et déploiement d'applications
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2004
    Messages : 647
    Points : 799
    Points
    799
    Par défaut
    Salut,
    je te propose deux autres solutions :
    la premiere, qui n'est peut etre pas la plus facile a mettre en place mais qui me parait plus propre : RMI.
    Grâce à RMI, tu peux appeler du code java sur une machine distante.
    ça donnerait :

    navigateur client -------http--------> Serveur A (serv web) ------RMI------------> Serveur B (ton appli a lancer indépendament)


    2e solution :
    Ou alors sinon, tout simplement une 'bête' socket sur ton serveur B qui attend que le serveur A lui envoie le signal pour lancer tes threads. A ce moment la tu n'a qu'a utiliser l'API socket dans le code de ta servlet sur A, pour ouvrir une connection TCP sur B et lui envoyer un message avec un protocole de ton cru (quelque chose de tres simple devrait suffire).
    Cette 2e solution me parait plus simple a mettre en place et ne nécessite pas beaucoup de codage. Elle présente par ailleurs un gros avantage par rapport à la première : l'appli qui écoute sur ton serveur B n'est pas obligatoirement codée en Java puisque tu peux faire des socket TCP avec tous les languages (ce qui n'est pas le cas de RMI).

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

Discussions similaires

  1. CORBA sur serveur web en local
    Par barberot dans le forum CORBA
    Réponses: 8
    Dernier message: 31/03/2004, 09h28
  2. Exploitation de base sur un serveur Web
    Par Oz-WereWolf dans le forum Installation
    Réponses: 10
    Dernier message: 07/03/2004, 23h52
  3. Réponses: 16
    Dernier message: 30/01/2004, 12h05
  4. mise en place serveur web intranet
    Par gui4593 dans le forum Installation
    Réponses: 7
    Dernier message: 01/01/2004, 19h18

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