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 :

longue procedure stockee dans action


Sujet :

Struts 1 Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Février 2004
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 43
    Points : 32
    Points
    32
    Par défaut longue procedure stockee dans action
    Bonjour,
    dans une action struts,
    je lance l'execution d'une procedure stockee oracle à l'aide de la méthode execute() de la classe CallableStatement.
    Cette procédure stockée ne me retourne pas de résultat mais dure environ 20 heures a l'execution.
    Je souhaiterais passer directement au forward, sans attendre la fin d'execution cette procedure.
    Est ce possible?

  2. #2
    Membre éprouvé
    Avatar de yolepro
    Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2002
    Messages
    918
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Mai 2002
    Messages : 918
    Points : 1 144
    Points
    1 144
    Par défaut
    Bonjour,

    Tu as plusieurs solution.
    Pour moi la solution la plus propre serait de gérer cela en base via un trigger.
    Tu entres une ligne dans une table pile qui est charger d'empiler des demandes et le trigger se déclenche lorsqu'une nouvelle ligne est inserée.
    Comme cela ta base te rends la main et surtout c'est la base qui se charge de faire en interne ca requete lourde.

    L'autre solution consiste a faire un Thread et de l'appeler dans ton action.
    Le probleme c'est que cela n'est pas conseillé dans les spécification J2EE si tu utilises un systeme d'EJB mais surtout, il te faudra gerer la synchronisation entre les threads (gestion multi-utilisateurs).

  3. #3
    Nouveau membre du Club
    Inscrit en
    Février 2004
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 43
    Points : 32
    Points
    32
    Par défaut
    Citation Envoyé par yolepro
    Pour moi la solution la plus propre serait de gérer cela en base via un trigger.
    Tu entres une ligne dans une table pile qui est charger d'empiler des demandes et le trigger se déclenche lorsqu'une nouvelle ligne est inserée.
    Comme cela ta base te rends la main et surtout c'est la base qui se charge de faire en interne ca requete lourde.
    Merci, tres bonne solution!

  4. #4
    Membre confirmé

    Inscrit en
    Avril 2005
    Messages
    317
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 317
    Points : 553
    Points
    553
    Par défaut
    Pour moi la solution la plus propre serait de gérer cela en base via un trigger.
    Tu entres une ligne dans une table pile qui est charger d'empiler des demandes et le trigger se déclenche lorsqu'une nouvelle ligne est inserée.
    Comme cela ta base te rends la main et surtout c'est la base qui se charge de faire en interne ca requete lourde.
    A mon avis, la base te rendra la main seulement apres la fin de l'execution du Trigger donc dans 20h...

    Tournes-toi plutot vers la 2eme solution ou alors utilises les JMS

  5. #5
    Nouveau membre du Club
    Inscrit en
    Février 2004
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 43
    Points : 32
    Points
    32
    Par défaut
    Effecttivement ce n est pas bon...
    J ai des commit dans ma procedure stockée et donc le trigger ne l accepte pas.

    Je vais essayer un thread. C est quoi les JMS?

  6. #6
    Membre éprouvé
    Avatar de yolepro
    Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2002
    Messages
    918
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Mai 2002
    Messages : 918
    Points : 1 144
    Points
    1 144
    Par défaut
    En fait tu as une autre solution dans le cas ou tu es sous oracle : Les jobs.

    Ces jobs sont l'équivalent d'un scheduler java et il t'est possible de lancer une procedure stockée donc aucun problème de commit,
    Maintenant les jobs sont géré en fonction du temps et non pas d'un evenement. Ce qui signifie qu'ils seront lancés tous les jours à une certaine heure.

  7. #7
    Nouveau membre du Club
    Inscrit en
    Février 2004
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 43
    Points : 32
    Points
    32
    Par défaut
    Je ne peux pas utiliser les jobs, car cette opération ne peux pas etre planifiée...
    Je me penche vers les JMS.

  8. #8
    Membre chevronné

    Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Février 2004
    Messages
    760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Février 2004
    Messages : 760
    Points : 2 095
    Points
    2 095
    Par défaut
    Citation Envoyé par yolepro
    L'autre solution consiste a faire un Thread et de l'appeler dans ton action.
    Le probleme c'est que cela n'est pas conseillé dans les spécification J2EE si tu utilises un systeme d'EJB mais surtout, il te faudra gerer la synchronisation entre les threads (gestion multi-utilisateurs).
    Les threads ne causent pas spécialement de problèmes en J2EE.

    Les problème des thread que tu crées dans tes applications en J2EE est qu'ils ne sont pas managés par le serveur d'application.

    Heureusement, la plupart des serveurs d'application ont pensé à leurs développeurs, et par exemple, Websphere fournit des API de Factory et/ou pool de Thread que tu peux utiliser pour créer tes threads, et qui sont quand même managés par le serveur d'application (pour Websphere voir ici : http://www-128.ibm.com/developerwork...6_johnson.html).

    Perso j'ai déjà beaucoup utilisé de threads sur BEA WebLogic, et je le fais actuellement sous Websphere sans soucis : il faut principalement être certain de savoir gérer totallement leur cycle de vie.

  9. #9
    Nouveau membre du Club
    Inscrit en
    Février 2004
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 43
    Points : 32
    Points
    32
    Par défaut
    J etais passé sur un autre projet je viens de me repencher sur la question.
    Je tente donc de lancer un Thread qui s occupe d appeler ma procédure stockée.
    Quand je lance le start du Thread, comment dois je faire pour qu il me rende la main... Je ne connais pas trop les Threads...

Discussions similaires

  1. appel procedure stockee dans asp
    Par poke95 dans le forum ASP
    Réponses: 2
    Dernier message: 27/01/2012, 17h11
  2. Réponses: 1
    Dernier message: 05/05/2011, 10h58
  3. procedure stockee dans mysql
    Par helpcomm dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 15/03/2008, 10h15
  4. Réponses: 5
    Dernier message: 15/03/2007, 13h48
  5. Procedure stockee dans une requete
    Par topolino dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 14/08/2005, 15h29

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