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

Spring Web Java Discussion :

Problème lors de l'accès à l'ApplicationContext [Struts]


Sujet :

Spring Web Java

  1. #1
    Membre éclairé Avatar de jamesleouf
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2005
    Messages
    522
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 522
    Par défaut Problème lors de l'accès à l'ApplicationContext
    Bonjour à tous,
    J'utilise en parallèle Struts/Spring et j'ai un souci lors du lancement de la ligne suivante:
    ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
    Recap des 2 pages :
    La simple présence de cette ligne provoque une erreur serveur. Ce qui est bizarre car si je crée un main, avec creation de Bean etc... cela marche très bien... j'ai essayé diversesméthodes mais rien ne semble fonctionner.
    Déclarer un Listener dans web.xml entraine un bug monumental et fait planter le serveur. + Eclipse souligne l'erreur et ne tolère pas cette balise.
    Cela étant, je ne peux pas non plus crée de classes implémentant XXXContext puisque sans la balise Listener ca sert a rien...

    Des idées?


    Je ne vois pas vraiment pourquoi cela entraine une erreur, quand je lance cette action Struts qui "execute" cette ligne...

    Merci a tous,

  2. #2
    Membre éclairé
    Profil pro
    Développeur Java
    Inscrit en
    Novembre 2008
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2008
    Messages : 63
    Par défaut
    Et c'est quoi cette erreur ?
    Si tu peux mettre la trace d'exception, ce serait plus pratique pour t'aider.

  3. #3
    Membre éclairé Avatar de jamesleouf
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2005
    Messages
    522
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 522
    Par défaut
    comme je le disais, c'est une erreur 500 :
    Error 500--Internal Server Error
    From RFC 2068 Hypertext Transfer Protocol -- HTTP/1.1:
    10.5.1 500 Internal Server Error
    The server encountered an unexpected condition which prevented it from fulfilling the request.
    Weblogic ne "dit" pas grand chose si ce n'est (peut-etre)
    tiles definition factory loaded found for request processor ''.
    De plus, l'erreur n'est pas dans la déclaration de l'Application Context, mais dans la secon,de partyir, lorsque l'on lui attribut le fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ApplicationContext context; //cette ligne passe
    context = new ClassPathXmlApplicationContext("applicationContext.xml");
    //celle là fait planter
    Merci

  4. #4
    Membre éclairé Avatar de jamesleouf
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2005
    Messages
    522
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 522
    Par défaut
    en fait le message de weblogic n'est pas une piste. Il le met à chaque fois en fait... désolé...

  5. #5
    Membre éclairé
    Profil pro
    Développeur Java
    Inscrit en
    Novembre 2008
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2008
    Messages : 63
    Par défaut
    Il s'agit probablement d'un problème de fichier non trouvé dans le classpath.
    A partir d'où est chargé ton contexte ? (une servlet ? un action ? )
    Et si tu mets :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    context = new ClassPathXmlApplicationContext("classpath:/applicationContext.xml");
    Ça change quelque chose ?
    Sinon une question :
    Pourquoi ne pas déclarer ton contexte spring dans le web.xml ?

    ex :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    	<listener>
    	    <listener-class>
    	        org.springframework.web.context.ContextLoaderListener
    	    </listener-class>
    	</listener>
    	<context-param>
    	    <param-name>contextConfigLocation</param-name>
    	    <param-value>/WEB-INF/applicationContext.xml</param-value>
    	</context-param>
    Ce que tu fais n'est pas forcement mauvais, mais c'est la raison pour laquelle tu as choisis de procéder ainsi qui m'intéresse.

  6. #6
    Membre éclairé Avatar de jamesleouf
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2005
    Messages
    522
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 522
    Par défaut
    Le contexte est chargé dans une action.

    Ta proposition ne change rien... toujours la même erreur...

    et sinon pour le reste...
    applicationContext.xml est dans src et pas dans WEB-INF l'erreur ne doit pas venir de là, puisque comme je le disais, en créant un main dans une autre classe et en le lançant comme une java application, ça fonctionne bien...

    Quand à la raison pour laquelle je ne déclare pas le contexte dans web.xml... et bien parce que je ne savais pas qu'on pouvait le faire :S
    Et en fait, je suis parti d'un tutoriel dont je fais des évolutions...

    Par contre une question:
    Si je déclare le context dans web.xml, est ce que je n'ai plus besoin de le déclarerdans mon action? et est ce que je peux faire appel directement à (objet)context.getBean("objet");
    sans ré-écrire le load du l'application context?

    Merci énormément pour ton aide en tout cas

  7. #7
    Membre éclairé
    Profil pro
    Développeur Java
    Inscrit en
    Novembre 2008
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2008
    Messages : 63
    Par défaut
    L'avantage de le déclarer dans le web.xml, c'est qu'il est chargé une fois pour toute au lancement de l'application sur le serveur.
    En le faisant dans le action, il sera rechargé à chaque fois et ça augmente donc le temps de réponse.
    Pour récupérer un bean spring depuis un composant non géré par spring (ton action dans ton cas), jette un coup d'oeil ici
    (Il existe une autre façon de procéder avec un WebContext ou un truc du genre, faudrait que je retrouve).

    Pour ton erreur, essaie de voir dans les propriétés de ton log4j si ya pas moyen de d'afficher plus de détails pour permettre de trouver l'origine de ton erreur.

  8. #8
    Membre éclairé Avatar de jamesleouf
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2005
    Messages
    522
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 522
    Par défaut
    aussi, comment faire pour appeler le contexte si il est déclaré dans web.xml?
    j'en ai forcément besoin pour l'accès aux bean...

  9. #9
    Membre éclairé
    Profil pro
    Développeur Java
    Inscrit en
    Novembre 2008
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2008
    Messages : 63
    Par défaut
    Regarde dans le lien que j'ai mis, je remets en plus visible :

    http://java.developpez.com/faq/sprin...mnonspringbean

  10. #10
    Membre éclairé Avatar de jamesleouf
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2005
    Messages
    522
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 522
    Par défaut
    donc grosso modo pour ça, il faut créer une autre classe, un autre bean etc...
    Mais il faut quand même décrire ça dans web.xml, sinon ça ne marche pas n'est ce pas?

    (Merci encore)

  11. #11
    Membre éclairé
    Profil pro
    Développeur Java
    Inscrit en
    Novembre 2008
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2008
    Messages : 63
    Par défaut
    J'ai trouvé ce que je cherchais :

    http://www.developpez.net/forums/d64...g/#post3801344

    Mais j'ai jamais essayé.


    Et pour ta question :
    Tu déclares juste ton contexte dans le web.xml comme dans mon exemple un peu plus haut et ton bean ContextAware dans le contexte (comme n'importe quel bean, sauf si tu utilises les annotations). Après, spring se débrouille tout seul lorsque tu appeleras la méthode static pour retrouver les beans.

  12. #12
    Membre éclairé Avatar de jamesleouf
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2005
    Messages
    522
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 522
    Par défaut
    interessant!
    je vais essayer tout ça.
    -> Par contre, la déclaration du listener et tout, on peut le mettre ou on veut dans web.xml?

    -> et le param-name doit il avoir une valeur définie, en rapport avec la classe de la FAQ?

    <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/applicationContext.xml</param-value>
    </context-param>

    -> ca veut dire, que grâce a web.xml Spring comprend ou est le fichier d'application context + grâce a la création du Bean implémentant le aware il va comprendre ou le loader? j'ai du mal a comprendre comment il fait le lien entre les deux... et surtout si il y a plusieurs fichiers de contexte n'y a t-il pas de conflits? (a moin que l'on ne fasse des include a partir d'un meme fichier)

    Merci pour les liens, et les réponses. je suis pas encore calé sur le vocabulaire et c'est pas facile de faire les recherches quand on a pas les mots :s

  13. #13
    Membre éclairé
    Profil pro
    Développeur Java
    Inscrit en
    Novembre 2008
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2008
    Messages : 63
    Par défaut
    Oui, tu déclares le listener où tu veux, le param-name n'a pas vraiment d'importance et n'est pas lié à la classe dans la FAQ.

    De rien

  14. #14
    Membre éclairé Avatar de jamesleouf
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2005
    Messages
    522
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 522
    Par défaut
    mais alors comment fait il les liens entre les deux?

    ca veut dire, que grâce a web.xml Spring comprend ou est le fichier d'application context + grâce a la création du Bean implémentant le aware il va comprendre ou le loader? j'ai du mal a comprendre comment il fait le lien entre les deux... et surtout si il y a plusieurs fichiers de contexte n'y a t-il pas de conflits? (a moin que l'on ne fasse des include a partir d'un meme fichier)

  15. #15
    Membre éclairé Avatar de jamesleouf
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2005
    Messages
    522
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 522
    Par défaut
    il doit-y avoir un souci, ca a fait planter weblogic; il dit qu'il ne trouve pas la classe org.springframework.web.context....
    ellese trouve dans quelle lib?
    ______________________________
    + JBuilder (Eclipse) me met une erreur sur web.xml en me disant que la nomenclature de web.xml n'est pas bonne.
    il accepte bien le <context.. apres le </display-name>
    Mais le listener, n'importe ou je le mets il me met une erreur; il a pas l'air de trop aimé ça...

    Merci à Novembre!!!

  16. #16
    Membre éclairé
    Profil pro
    Développeur Java
    Inscrit en
    Novembre 2008
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2008
    Messages : 63
    Par défaut
    Le contexte chargé c'est celui est dans le web.xml, ca va être ton fichier principal, qui va peut être faire des includes des autres.
    Quant au lien entre les 2, il se fait tout seul sans qu'on ait à s'en occuper. Spring sera démarré grace au listener et va reconnaitre tout seul le ApplicationContextAware et y injecter automatiquement le contexte auquel tu pourras accéder via sa méthode statique.

  17. #17
    Membre éclairé Avatar de jamesleouf
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2005
    Messages
    522
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 522
    Par défaut
    il doit-y avoir un souci, ca a fait planter weblogic; il dit qu'il ne trouve pas la classe org.springframework.web.context....
    ellese trouve dans quelle lib?
    ______________________________
    + JBuilder (Eclipse) me met une erreur sur web.xml en me disant que la nomenclature de web.xml n'est pas bonne.
    il accepte bien le <context.. apres le </display-name>
    Mais le listener, n'importe ou je le mets il me met une erreur; il a pas l'air de trop aimé ça...
    Merci Novembre

  18. #18
    Membre éclairé Avatar de jamesleouf
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2005
    Messages
    522
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 522
    Par défaut
    ok bon, apres quelques tests, c'est bien la déclaration du listener dans web.xml qui fait planter le truc.
    Si je l'enleve le site se lance (bon je peux toujours pas obtenir appliContext (j'ai tout mis en commentaire)) mais au moin ya quelque chose qui s'affiche...

    Sinon, en mettant le listener voici un extrait du bug:
    Exception:weblogic.management.ApplicationException: activate failed for MONPROJET Module: MONPROJET Error: weblogic.management.DeploymentException: - with nested exception: [java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener] java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener at weblogic.utils.classloaders.GenericClassLoader.findClass(Ljava/lang/StringLjava/lang/Class;(GenericClassLoader.java:199) at
    je capte pas vraiment... :'(

  19. #19
    Membre éclairé
    Profil pro
    Développeur Java
    Inscrit en
    Novembre 2008
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2008
    Messages : 63
    Par défaut
    Il faut ajouter le jar : spring-context.jar. C'est ce jar qui contient la classe du listener invoqué par le web.xml.

  20. #20
    Membre éclairé Avatar de jamesleouf
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2005
    Messages
    522
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 522
    Par défaut
    il me met toujours la même erreur... il Aime pas ça.... (même après l'ajout du jar)
    par contre voilà ce que j'ai trouvé sur le net (mais je sais pas si ca va marcher -__-) : http://ego.developpez.com/spring/

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <!-- Ou utilisation de la servlet ContextLoaderServlet-->
    <servlet>
    	<servlet-name>context</servlet-name>
    	<servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
    	<load-on-startup>1</load-on-startup>
    </servlet>
    ils disent que par défaut il va chopper applicationContext dans le repertoire Web-inf ce qui est mon cas.
    Mais le problème reste entier: comment je fais pour le chopper, et pour accéder à mes beans -__-
    grr une journée pour accéder a mon applicontext, "ya de quoi se la prendre et se la mordre"

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 7
    Dernier message: 01/11/2014, 18h07
  2. Problème de session lors d'un accès "localhost" à distance
    Par crazy_rocker78 dans le forum Tomcat et TomEE
    Réponses: 3
    Dernier message: 30/08/2013, 08h01
  3. Problème "Access denied" lors de l'accès à la console d'admin
    Par Etienne25 dans le forum Glassfish et Payara
    Réponses: 5
    Dernier message: 30/10/2011, 12h10
  4. Problème lors du chargement
    Par carlito dans le forum Flash
    Réponses: 26
    Dernier message: 06/01/2004, 16h21
  5. Réponses: 2
    Dernier message: 17/08/2003, 21h07

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