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 Java Discussion :

ServletConfig has not been initialized et generation de war


Sujet :

Spring Java

  1. #1
    Membre régulier
    Femme Profil pro
    Analyste-developpeur java
    Inscrit en
    Mai 2010
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste-developpeur java
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2010
    Messages : 135
    Points : 76
    Points
    76
    Par défaut ServletConfig has not been initialized et generation de war
    Bonjour!
    je travaille sur une application web (projet maven) dont le core est developpé avec Spring et le web: JSP+Servlets.
    Les servlets utilisent les managers du core: contextLoaderListener de springframework inclus dans le web.xml et l'objet WebApplicationContext dans les Servlets et JSP pour récupérer les beans du core.
    Je me tourne vers vous dans l'espoir d'arrêter de m'arracher les cheveux sur les problème que je rencontre actuellement:
    dans mon web.xml, j'ai mappé pour commencer une Servlet (utilisée dans la page d'accueil de mon appli) qui est <load-on-startup>1</load-on-startup>.
    Avec Jetty, comme avec Tomcat, à la compilation du web, avant le lancement du server, je me retrouve avec l'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    java.lang.IllegalStateException: ServletConfig has not been initialized
    	at javax.servlet.GenericServlet.getServletContext(GenericServlet.java:185)
    	at net.atos.ffm.web.service.SearchServlet.<init>(SearchServlet.java:101)
    	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
    	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
    	at java.lang.reflect.Constructor.newInstance(Constructor.java:494)
    	at java.lang.Class.newInstance0(Class.java:350)
    	at java.lang.Class.newInstance(Class.java:303)
    	at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1104)
    	at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:981)
    	at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4058)
    	at org.apache.catalina.core.StandardContext.start(StandardContext.java:4364)
    	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
    	at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
    	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
    	at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
    	at org.apache.catalina.startup.Embedded.start(Embedded.java:825)
    	at org.codehaus.mojo.tomcat.AbstractRunMojo.startContainer(AbstractRunMojo.java:385)
    	at org.codehaus.mojo.tomcat.AbstractRunMojo.execute(AbstractRunMojo.java:144)
    	at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:579)
    	at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:498)
    	at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegmentForProject(DefaultLifecycleExecutor.java:265)
    	at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:191)
    	at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:149)
    	at org.apache.maven.DefaultMaven.execute_aroundBody0(DefaultMaven.java:223)
    	at org.apache.maven.DefaultMaven.execute_aroundBody1$advice(DefaultMaven.java:304)
    	at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:1)
    	at org.apache.maven.embedder.MavenEmbedder.execute_aroundBody2(MavenEmbedder.java:904)
    	at org.apache.maven.embedder.MavenEmbedder.execute_aroundBody3$advice(MavenEmbedder.java:304)
    	at org.apache.maven.embedder.MavenEmbedder.execute(MavenEmbedder.java:1)
    	at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:176)
    	at org.apache.maven.cli.MavenCli.main(MavenCli.java:63)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    	at java.lang.reflect.Method.invoke(Method.java:585)
    	at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
    	at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
    	at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:408)
    	at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:351)
    	at org.codehaus.classworlds.Launcher.main(Launcher.java:31)
    Voila voila je ne sais pas quoi faire.... Je ne comprends pas cette erreur... est elle liée aux méthodes init() des Servlets, à une chose qui aurait pu m'echapper?

    Je me pose une autre question: j'ai souhaité pour peut être contourner ou vérifier que ce problème existe bien et n'est pas lié à eclipse, générer un war de mon appli afin de le déposer dans le webapps de tomcat (je ne sais pas si les déploiements se passent exactement comme ça, c'est d'ailleurs encore une autre question... mais bon pour le moment ma question est surtout comment générer le war?).
    le truc est que le web se sert du core donc je me suis demandée si je suis dans un cas de multimodule qui pourrait nécessiter l'utilisation du "maven-assembly-plugin" ou s'il me suffisait simplement d'utiliser le "maven-war-plugin" ou encore un autre plugin que j'ignore...

    Merci de vos réponses!

  2. #2
    Membre régulier
    Femme Profil pro
    Analyste-developpeur java
    Inscrit en
    Mai 2010
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste-developpeur java
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2010
    Messages : 135
    Points : 76
    Points
    76
    Par défaut
    ...
    étant donné que je reprends les servlet d'un vieux projet...
    Se pourrait il que cette erreur soit dû a une espèce d'incompatibilité de versions...?

  3. #3
    Membre régulier
    Femme Profil pro
    Analyste-developpeur java
    Inscrit en
    Mai 2010
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste-developpeur java
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2010
    Messages : 135
    Points : 76
    Points
    76
    Par défaut Enfin!
    J'ai buché vraiment sur une erreur qui s'avère être au final une bête bêtise de placement des
    WebApplicationContext context = WebApplicationContextUtils.getRequiredWebApplicationContext(getServletContext());
    ... et récupération des beans qui s'ensuivent:
    MachinManager machinManager = (MachinManager)context.getBean("machinManager");

    En fait (si jamais quelqu'un venait à rencontrer cette erreur), j'ai trouvé la réponse grâce à la compilation des JSP.
    En jetant un oeil sur le .java généré à partir d'une JSP (dans le target) qui utilisait également des objets Spring et fonctionnait super bien, j'ai réalisé que ServletConfig et ServletContext était initialisés et que les lignes de code que j'ai cité plus haut était écrites dans les doPost() et doGet() des Servlets.

    J'avais fait la confusion avec les méthodes classiques de récupération des beans Spring lorsque l'on se trouve également dans un bean Spring:
    private MachinManager machinManager;
    public void setMachinManager(MachinManager machinManager){
    this.machinManager = machinManager;
    }

    Tout marche bien à présent!
    J'espère que cette info pourra épargnera à d'autres de longues heures de recherches (pour ne pas dire jour^^)!

  4. #4
    Membre régulier
    Femme Profil pro
    Analyste-developpeur java
    Inscrit en
    Mai 2010
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste-developpeur java
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2010
    Messages : 135
    Points : 76
    Points
    76
    Par défaut
    et je vous prie de d'excuser toutes les fautes d'orthographe monstrueuses que j'ai fait dans mes messages. En principe j'écris bien... j'ai l'impression que passer de nombreuses heures devant un PC annihile pas mal cette capacité et toute volonté de faire une relecture orientée correction de mon message.

Discussions similaires

  1. StandardOut has not been redirected or the process hasn't started yet.
    Par Battosaiii dans le forum Général Dotnet
    Réponses: 0
    Dernier message: 18/07/2008, 12h33
  2. Temp PDF file has not been generated
    Par zxr96 dans le forum XMLRAD
    Réponses: 5
    Dernier message: 21/03/2008, 09h53
  3. Réponses: 1
    Dernier message: 02/04/2007, 15h33
  4. Problème compilation 'has not been declared'
    Par Choupinou dans le forum C++
    Réponses: 5
    Dernier message: 28/11/2006, 20h09
  5. Réponses: 6
    Dernier message: 30/07/2003, 14h59

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