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

Développement Web en Java Discussion :

Comment faire pour exécuter un job coté serveur à la demande de l'utilisateur


Sujet :

Développement Web en Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    430
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2006
    Messages : 430
    Points : 103
    Points
    103
    Par défaut Comment faire pour exécuter un job coté serveur à la demande de l'utilisateur
    Bonjour

    J'aimerais soumettre une job à partir d'une page web sur IE.

    La job va aller faire le travail demandé dans un répertoire d'une machine Unix et lorsque le traitement soit fini, elle doit envoyer un courriel à la personne qui a soumis cette job.

    Je travaille avec le visual web pack de netbeans 5.5

    Pour aller dans la bonne direction, j'aimerais avoir vos avis la dessus.

    Merci.

  2. #2
    Expert confirmé
    Avatar de Valère
    Profil pro
    Inscrit en
    Août 2005
    Messages
    1 334
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Août 2005
    Messages : 1 334
    Points : 4 740
    Points
    4 740
    Par défaut
    Il faudrait davantage de précisions. La machine Unix dont tu parles, c'est elle qui hébergera ton serveur?
    Pensez au bouton
    Je ne répond pas aux questions techniques par email ou MP.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    430
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2006
    Messages : 430
    Points : 103
    Points
    103
    Par défaut Comment Soumettre une job
    Citation Envoyé par valered
    Il faudrait davantage de précisions. La machine Unix dont tu parles, c'est elle qui hébergera ton serveur?
    Oui, c'est tomcat qui résidera sur la même machine. mais les utilisateurs finaux utiliseront IE pour accéder à l'application web.

  4. #4
    Expert éminent sénior


    Profil pro
    Inscrit en
    Mai 2003
    Messages
    3 240
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 3 240
    Points : 11 101
    Points
    11 101
    Par défaut
    Une possibilité:
    a) lorsque ton utilisateur soumet un job, la servlet va écrire quelque chose dans une DB (l'utilisateur qui a fait la demande, et le job à exécuter, et les paramètres introduits par l'utilisateur pour ce job), et écris un fichier dans un répertoire précis
    b) un daemon tourne sur ton serveur pour détecter la présence dudit fichier. Dès qu'il est présent, il l'efface et va lire la DB pour savoir ce qu'il doit faire, et fait son travail.

    Une autre possibilité: utiliser un système de message queuing.
    a) lorsque ton utilisateur soumet un job, la servlet va écrire quelque chose dans la messaging queue. Et t'as un autre système qui lit la queue, la traite, et fait ce qu'on lui demande.

    P.S. Je ne vois pas le lien entre ta question et NetBeans.

    Vincent
    Vincent Brabant

    Ne pas me contacter par MP ni par mail pour des questions techniques. Ma liste d'amis restera vide.

    Cours et tutoriels pour apprendre Java , FAQ Java, et Forum Java

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    430
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2006
    Messages : 430
    Points : 103
    Points
    103
    Par défaut Comment Soumettre une job
    Citation Envoyé par vbrabant
    Une possibilité:
    a) lorsque ton utilisateur soumet un job, la servlet va écrire quelque chose dans une DB (l'utilisateur qui a fait la demande, et le job à exécuter, et les paramètres introduits par l'utilisateur pour ce job), et écris un fichier dans un répertoire précis
    b) un daemon tourne sur ton serveur pour détecter la présence dudit fichier. Dès qu'il est présent, il l'efface et va lire la DB pour savoir ce qu'il doit faire, et fait son travail.

    Une autre possibilité: utiliser un système de message queuing.
    a) lorsque ton utilisateur soumet un job, la servlet va écrire quelque chose dans la messaging queue. Et t'as un autre système qui lit la queue, la traite, et fait ce qu'on lui demande.

    P.S. Je ne vois pas le lien entre ta question et NetBeans.

    Vincent
    Salut vbrabant

    pour simplifier les choses, supposons que la job est comme suit :

    1) chercher un fichier sur un répertoire d'un serveur unix.
    2) si le fichier est trouvé, le zipper et lui donner l'extension .xxx
    3) envoyer un email à la personne qui a soumis la demande

    Mais oui, je veux que ce travail soit fait en utilisant Netbeans et/ou java et/ou javascript

    C'est le jonglage dans Netbeans qui m'intéressent le plus.

    Pour être plus précis :

    à partir de IE (application développée avec Netbeans VWP) je fais mes selections dans des dropdownlist et je presse sur le bouton "send"

    De là, je veux que l'application dépendamment des selections qui ont été faites, va aller chercher le fichier en question dans un répertoire précis et connu d'avance mais sur une autre machine (serveur unix), améne ce fichier, et m'ouvre la fenêtre "Save as.." de windows.

  6. #6
    Expert éminent sénior


    Profil pro
    Inscrit en
    Mai 2003
    Messages
    3 240
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 3 240
    Points : 11 101
    Points
    11 101
    Par défaut
    Citation Envoyé par DEV-10
    Salut vbrabant

    pour simplifier les choses, supposons que la job est comme suit :

    1) chercher un fichier sur un répertoire d'un serveur unix.
    2) si le fichier est trouvé, le zipper et lui donner l'extension .xxx
    3) envoyer un email à la personne qui a soumis la demande

    Mais oui, je veux que ce travail soit fait en utilisant Netbeans et/ou java et/ou javascript

    C'est le jonglage dans Netbeans qui m'intéressent le plus.

    Pour être plus précis :

    à partir de IE (application développée avec Netbeans VWP) je fais mes selections dans des dropdownlist et je presse sur le bouton "send"

    De là, je veux que l'application dépendamment des selections qui ont été faites, va aller chercher le fichier en question dans un répertoire précis et connu d'avance mais sur une autre machine (serveur unix), améne ce fichier, et m'ouvre la fenêtre "Save as.." de windows.
    Franchement, t'embrouilles encore plus qu'avant.

    C'est quoi ton scénario, car maintenant tu me parles de 2 scénarios différents:

    Scénario 1:
    a) l'utilisateur se rend sur la page WEB
    b) sur cette page, il sélectionne certaines choses, et presse un bouton submit du formulaire.
    c) l'application WEB devrait s'arranger pour qu'un JOB asynchrone soit lancé.
    d) ce JOB asynchrone devra, en fonction des paramètres introduits par l'utilisateur aller rechercher un fichier dans un répertoire, le compresser, et l'envoyer par mail à l'utilisateur.

    Scénario 2:
    a) l'utilisateur se rend sur la page WEB
    b) sur cette page, il sélectionne certaines choses, et presse un bouton submit du formulaire.
    c) l'application WEB qui reçoit les données du formulaire va rechercher le fichier dans un répertoire, le compresser, et le retourner à l'utilisateur pour qu'il puisse l'enregistrer.

    Le scénario 2 ressemble, si on veut, à n'importe quel site de téléchargement. Je prends comme exemple le site de netbeans. Tu vas sur
    http://www.netbeans.info/downloads/dev.php
    tu dois choisir la version de NB, et le type (daily, béta, ...).
    En fonction de cela, il te propose une page avec un lien pour zip ou un exe, En cliquant sur le lien, la fenêtre s'ouvre avec la possibilité d'ouvrir ou d'enregistrer le fichier.

    On va donc t'aider à découper ton projet en plusieurs partie.

    Concentre-toi d'abord sur tes simples classes Java:

    Classe 1:
    1) méthode pour transformer les requêtes de l'utilisateur en nom de fichier.
    (selon le choix de l'utilisateur, tu dois récupérer un fichier).

    2) méthode pour aller lire un fichier dans le répertoire donné et le compresser en Zip. Cette méthode recevra en paramètre le nom du répertoire et du fichier à aller rechercher, et retournera un ZipOutputStream.
    3) une autre méthode qui fait la même chose, mais qui retourne une classe File pointant vers le fichier Zip créé dans un répertoire temporaire.

    Tu peux déjà écrire des tests unitaires pour cette classe. Et l'utiliser où tu veux.

    Classe 2:
    1) constructeur qui prends des paramètres pour connaitre le serveur de mail
    2) methode pour envoyer n'importe quel InputStream par mail.
    Paramètre 1: adresse email
    Paramètre 2: InputStream

    Avec tests unitaires. Et tu l'utilise où tu veux.


    Quand tu auras développé ces 2 classes, (tu noteras que cela est du pur Java. Rien à voir avec VWP ou NetBeans, ou quoi que ce soit), tu mets cela dans un JAR. Ce jar, tu le rajoutes dans le répertoire WEB-INF/lib de ton application Web. Comme cela, tu pourras les appeler depuis ton application web.

    Ensuite, tu t'attaque à ta page web (en utilisant struts ou jsf) qui va faire l'interface utilisateur, avec le formulaire pour permettre à l'utilisateur de faire son choix et de faire submit. Quelque soit ce que tu choisis, ca passe par le controller. qui enverra la requête vers la classe appropriée. Cette classe à un but différent selon qu'on est dans le scénario 1 ou 2.

    Si c'est le scénario 1, une chose est sûre: elle doit donner la main rapidement à une autre classe (de préférence dans un autre thread, et c'est là où la config de tomcat est importante) et diriger l'utilisateur vers une page où on lui dit qu'il va recevoir sa demande par mail. Avec un bouton pour revenir sur la page d'accueil, par exempl.

    Si c'est le scénario 2, il peut déjà faire appel à la méthode pour obtenir le nom de fichier, et vérifier son existence. Si c'est ok, il appelle alors une autre url
    du style /fichier/nomdufichier.zip

    Ici, il est important de configurer ton application web (via le web.xml) pour indiquer que toute url commencant par /fichier par exemple, sera prise en charge par une servlette ?

    Et que va faire cette servlette ?
    vérifie que le fichier existe dans le répertoire donnée. Si existe pas => Erreur 404
    si fichier existe, appelle la classe pour en faire un zip, indique via les méthodes de HttpServletResponse le type de contenu (faut connaitre le mim/type utilisé pour Zip. Mais ca, je te laisse chercher), et écrit le contenu du fichier zip dans la réponse (récuperer getOutputStream de HttpServletResponse, et écrire, ...)


    Personnellement, je ne pense pas que ce soit NetBeans ou VWP qui sont les vrais problèmes dans ton cas. Mais plus un problème de connaissance d'une application Web, des pages JSP, des Servlets, Struts, JSF, ... Et comment se passe l'enchainement des choses.

    Aussi, une question : au lieu que ce soit à chaque fois au moment où l'utilisateur fait la demande, que tu compresses le fichier en zip, pourquoi ne pas mettre directement le fichier zippé dans le répertoire ?

    Vincent
    Vincent Brabant

    Ne pas me contacter par MP ni par mail pour des questions techniques. Ma liste d'amis restera vide.

    Cours et tutoriels pour apprendre Java , FAQ Java, et Forum Java

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    430
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2006
    Messages : 430
    Points : 103
    Points
    103
    Par défaut soumettre une job à partir d'une application web
    Bon voilà en quoi consiste ce travail :

    à partir d'une interface graphique lancée sur IE (l'interface graphique a été développée avec VWP de Netbeans), l'ulilisateur fait des selections dans des dropdown list, et presse sur un boutton "send"
    dès qu'on presse sur le "Send" voici ce qui va arriver :

    1) transformer les selections de l'utilisateur en un nom de fichier
    2) Avec ce nom de fichier, aller sur un serveur Unix, lancer une JOb X (voir plus bas)
    3) lorsque le travail est complété, le fichier demandé est crée sur un répertoire bien connu du serveur UNIX. ce fichier peut atteindre une taille de 250 MB.
    4) Un email est envoyé à l'utilisateur qui a soumis la demande pour l'informer que le travail X est complété. Et dans cet email, il y aurait un lien que l'utilisateur peut presser pour downloader le fichier avec FTP sur sa machine windows.

    Note :

    Le serveur Unix est accessible à partir du réseau local.

    Les utilisateurs sont des employés internes et ont tous accès à l'intranet

    Les fichiers de 250Mo contiendront du contenu en format XML.

    JOB X : va être exécutée sur le serveur unix et peut prendre beaucoup de temps (genre 10 heures)

    Pour maintenant on suppose que cette JOB X est comme une boite noire.

    Merci

Discussions similaires

  1. [Procédure stockée]comment faire pour vérifier l'état d'un job
    Par HelpmeMM dans le forum Développement
    Réponses: 5
    Dernier message: 28/04/2009, 16h11
  2. Réponses: 5
    Dernier message: 07/04/2009, 19h00
  3. comment faire pour developper des prog en win32
    Par rhodan51 dans le forum Autres éditeurs
    Réponses: 11
    Dernier message: 09/11/2003, 19h39
  4. Comment faire pour mettre l'ecran en veille ?
    Par March' dans le forum MFC
    Réponses: 6
    Dernier message: 29/08/2002, 14h25
  5. Comment faire pour créer un bitmap
    Par GliGli dans le forum C++Builder
    Réponses: 2
    Dernier message: 24/04/2002, 15h41

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