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 :

Problème ExecAndWait et ActionContext.getContext()


Sujet :

Struts 1 Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Août 2011
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Août 2011
    Messages : 109
    Points : 32
    Points
    32
    Par défaut Problème ExecAndWait et ActionContext.getContext()
    Bonjour.

    En utilisant struts, j'ai un problème avec l'utilisation de l'intercepteur ExecAndWait.

    Sans intercepteur, mon action s'éxécute correctement et fait correctement la lecture en base de donnée :
    Gestion de la connexion :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ServletContext servletContext= ServletActionContext.getServletContext();
    ds = (DataSource)servletContext.getAttribute("dataSource");
    connexion = ds.getConnection();
    Avec l'intercepteur, la méthode "ServletActionContext.getServletContext()" (c'est à dire "ActionContext.getContext()") retourne null et ma connexion à la base de données ne fonctionne pas.

    Cela vient surement du fait que struts exécute la méthode dans un thread séparé. (Il est marqué sur Internet : http://struts.apache.org/release/2.0...terceptor.html "Because the action will be running in a seperate thread, you can't use ActionContext because it is a ThreadLocal.")

    Y-a-t-il donc un moyen de lire le fichier web.xml de facon propre (en utilisant un paramètre du web.xml, sans utiliser le nom du jdbc en dur comme dans l'exemple ci-dessous :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     Context ctx = new InitialContext();
     Context envContext  = (Context)ctx.lookup("java:/comp/env");
     DataSource ds = (DataSource)envContext.lookup("jdbc/maBase");
    Merci d'avance

  2. #2
    Nouveau membre du Club
    Inscrit en
    Août 2011
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Août 2011
    Messages : 109
    Points : 32
    Points
    32
    Par défaut
    Après divers tests,

    le fait de faire cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ServletContext servletContext= ServletActionContext.getServletContext();
    ds = (DataSource)servletContext.getAttribute("dataSource");
    avec la variable dataSource initialisée dans ServletContextListener fonctionne très bien lorsqu'on utilise pas cet intercepteur.

    et lorsque je mets en dur le nom du jdbc dans le code java:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Context envContext  = (Context)ctx.lookup("java:/comp/env");
     DataSource ds = (DataSource)envContext.lookup("jdbc/maBase");
    ca marche dans tous les cas.

    Ce que je reproche tout de même au execAndWait est que la page d'attente est rechargée régulièreent via un refresh (ce qui n'est pas très propre pour les images).

    Je vais donc m'orienter vers ajax...

Discussions similaires

  1. Réponses: 4
    Dernier message: 28/05/2014, 13h26
  2. Problème d'installation oracle 8.1.7 sous NT
    Par Anonymous dans le forum Installation
    Réponses: 7
    Dernier message: 02/08/2002, 14h18
  3. Problème d'impression
    Par IngBen dans le forum C++Builder
    Réponses: 7
    Dernier message: 22/05/2002, 11h37
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10
  5. Réponses: 6
    Dernier message: 25/03/2002, 21h11

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