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 :

NullPointerException sur DAOs injectés [Framework]


Sujet :

Spring Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    39
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 39
    Par défaut NullPointerException sur DAOs injectés
    Bonjours à tous !

    Bien que j'ai déjà utilisé une fois Spring dans le passé, je ne me souviens pas de tout... J'ai commencé une application Web Google App Engine en n'utilisant que les standards tels que les JSP, Servlets et JDO. Maintenant que tout tourne, je voulais y implémenter d'abord Spring IoC, et ensuite Spring MVC, tout cela à des fins éducatives pour moi :-)

    Voilà mon problème :

    Tout est configuré, le conteneur démarre correctement. Mais lorsque je tente d'accéder à une page, j'ai un NullPointer sur les DAO qui sont sensé être injectés par Spring... Pourtant, d'après le log, tout me semble correct !

    Quelqu'un a une idée ?

    web.xml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    ...
    <context-param>
    	  <param-name>contextConfigLocation</param-name>
    	  <param-value>/WEB-INF/applicationContext.xml</param-value>
    	</context-param>
    	<listener>
    	  <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    	</listener>
    ...
    applicationContext.xml :
    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
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
               http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
     
    	<!-- PERSISTENCE MANAGER FACTORY -->
    	<bean id="persistenceManagerFactory"
    	    class="org.springframework.orm.jdo.LocalPersistenceManagerFactoryBean">
    		<property name="persistenceManagerFactoryName" value="transactions-optional" />
    	</bean>
     
    	<import resource="daos.xml" />
    	<import resource="servlets.xml" />
    </beans>
    daos.xml :
    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
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
               http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
     
    	<bean id="CategoriesDao" class="be.jrousseau.gwtsite.server.dao.implementations.CategoriesDaoImpl">
    		<property name="pmf" ref="persistenceManagerFactory" />
    	</bean>
    	<bean id="CompetencesDao" class="be.jrousseau.gwtsite.server.dao.implementations.CompetencesDaoImpl">
    		<property name="pmf" ref="persistenceManagerFactory" />
    	</bean>
    	<bean id="ExperiencesDao" class="be.jrousseau.gwtsite.server.dao.implementations.ExperiencesDaoImpl">
    		<property name="pmf" ref="persistenceManagerFactory" />
    	</bean>
    	<bean id="FormationsDao" class="be.jrousseau.gwtsite.server.dao.implementations.FormationsDaoImpl">
    		<property name="pmf" ref="persistenceManagerFactory" />
    	</bean>
    	<bean id="IntrosDao" class="be.jrousseau.gwtsite.server.dao.implementations.IntrosDaoImpl">
    		<property name="pmf" ref="persistenceManagerFactory" />
    	</bean>
    	<bean id="LanguagesDao" class="be.jrousseau.gwtsite.server.dao.implementations.LanguagesDaoImpl">
    		<property name="pmf" ref="persistenceManagerFactory" />
    	</bean>
    	<bean id="LoisirsDao" class="be.jrousseau.gwtsite.server.dao.implementations.LoisirsDaoImpl">
    		<property name="pmf" ref="persistenceManagerFactory" />
    	</bean>
    	<bean id="PersosDao" class="be.jrousseau.gwtsite.server.dao.implementations.PersosDaoImpl">
    		<property name="pmf" ref="persistenceManagerFactory" />
    	</bean>
    	<bean id="ProjectsDao" class="be.jrousseau.gwtsite.server.dao.implementations.ProjectsDaoImpl">
    		<property name="pmf" ref="persistenceManagerFactory" />
    	</bean>
    </beans>
    servlets.xml :
    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
               http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
     
    	<bean id="AdminCategoriesServlet" class="be.jrousseau.gwtsite.server.servlets.AdminCategoriesServlet">
    		<property name="categoriesDao" ref="CategoriesDao" />
    	</bean>
    	<bean id="AdminCompetencesServlet" class="be.jrousseau.gwtsite.server.servlets.AdminCompetencesServlet">
    		<property name="competencesDao" ref="CompetencesDao" />
    		<property name="categoriesDao" ref="CategoriesDao" />
    	</bean>
    	<bean id="AdminExperiencesServlet" class="be.jrousseau.gwtsite.server.servlets.AdminExperiencesServlet">
    		<property name="experiencesDao" ref="ExperiencesDao" />
    	</bean>
    	<bean id="AdminFormationsServlet" class="be.jrousseau.gwtsite.server.servlets.AdminFormationsServlet">
    		<property name="formationsDao" ref="FormationsDao" />
    	</bean>
    	<bean id="AdminIntrosServlet" class="be.jrousseau.gwtsite.server.servlets.AdminIntrosServlet">
    		<property name="introsDao" ref="IntrosDao" />
    	</bean>
    	<bean id="AdminLanguagesServlet" class="be.jrousseau.gwtsite.server.servlets.AdminLanguagesServlet">
    		<property name="languagesDao" ref="LanguagesDao" />
    	</bean>
    	<bean id="AdminLoisirsServlet" class="be.jrousseau.gwtsite.server.servlets.AdminLoisirsServlet">
    		<property name="loisirsDao" ref="LoisirsDao" />
    	</bean>
    	<bean id="AdminPersosServlet" class="be.jrousseau.gwtsite.server.servlets.AdminPersosServlet">
    		<property name="persosDao" ref="PersosDao" />
    	</bean>
    	<bean id="AdminProjectsServlet" class="be.jrousseau.gwtsite.server.servlets.AdminProjectsServlet">
    		<property name="projectsDao" ref="ProjectsDao" />
    		<property name="experiencesDao" ref="ExperiencesDao" />
    	</bean>
    	<bean id="AdminServlet" class="be.jrousseau.gwtsite.server.servlets.AdminServlet">
    	</bean>
    	<bean id="ContactServlet" class="be.jrousseau.gwtsite.server.servlets.ContactServlet">
    	</bean>
    	<bean id="CurriculumServlet" class="be.jrousseau.gwtsite.server.servlets.CurriculumServlet">
    		<property name="formationsDao" ref="FormationsDao" />
    		<property name="experiencesDao" ref="ExperiencesDao" />
    		<property name="languagesDao" ref="LanguagesDao" />
    		<property name="loisirsDao" ref="LoisirsDao" />
    		<property name="persosDao" ref="PersosDao" />
    	</bean>
    	<bean id="IndexServlet" class="be.jrousseau.gwtsite.server.servlets.IndexServlet">
    		<property name="introsDao" ref="IntrosDao" />
    		<property name="categoriesDao" ref="CategoriesDao" />
    	</bean>
    </beans>
    Log :
    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    Jun 2, 2010 1:31:22 PM com.google.apphosting.utils.jetty.JettyLogger info
    INFO: Logging to JettyLogger(null) via com.google.apphosting.utils.jetty.JettyLogger
    Jun 2, 2010 1:31:22 PM com.google.apphosting.utils.config.AppEngineWebXmlReader readAppEngineWebXml
    INFO: Successfully processed C:\Users\Jonathan\workspace-java\mygwtsite\war\WEB-INF/appengine-web.xml
    Jun 2, 2010 1:31:22 PM com.google.apphosting.utils.config.AbstractConfigXmlReader readConfigXml
    INFO: Successfully processed C:\Users\Jonathan\workspace-java\mygwtsite\war\WEB-INF/web.xml
    Bad level value for property: .level
    Jun 2, 2010 1:31:22 PM com.google.apphosting.utils.jetty.JettyLogger info
    INFO: jetty-6.1.x
    Jun 2, 2010 1:31:25 PM com.google.appengine.tools.development.ApiProxyLocalImpl log
    INFO: [1275485485220000] javax.servlet.ServletContext log: Initializing Spring root WebApplicationContext
    Jun 2, 2010 1:31:25 PM org.springframework.web.context.ContextLoader initWebApplicationContext
    INFO: Root WebApplicationContext: initialization started
    Jun 2, 2010 1:31:25 PM org.springframework.context.support.AbstractApplicationContext prepareRefresh
    INFO: Refreshing Root WebApplicationContext: startup date [Wed Jun 02 13:31:25 UTC 2010]; root of context hierarchy
    Jun 2, 2010 1:31:26 PM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
    INFO: Loading XML bean definitions from ServletContext resource [/WEB-INF/applicationContext.xml]
    Jun 2, 2010 1:31:26 PM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
    INFO: Loading XML bean definitions from ServletContext resource [/WEB-INF/daos.xml]
    Jun 2, 2010 1:31:26 PM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
    INFO: Loading XML bean definitions from ServletContext resource [/WEB-INF/servlets.xml]
    Jun 2, 2010 1:31:27 PM org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons
    INFO: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@67a5fb5a: defining beans [persistenceManagerFactory,CategoriesDao,CompetencesDao,ExperiencesDao,FormationsDao,IntrosDao,LanguagesDao,LoisirsDao,PersosDao,ProjectsDao,AdminCategoriesServlet,AdminCompetencesServlet,AdminExperiencesServlet,AdminFormationsServlet,AdminIntrosServlet,AdminLanguagesServlet,AdminLoisirsServlet,AdminPersosServlet,AdminProjectsServlet,AdminServlet,ContactServlet,CurriculumServlet,IndexServlet]; root of factory hierarchy
    Jun 2, 2010 1:31:27 PM org.springframework.orm.jdo.LocalPersistenceManagerFactoryBean afterPropertiesSet
    INFO: Building new JDO PersistenceManagerFactory for name 'transactions-optional'
    Jun 2, 2010 1:31:31 PM org.springframework.web.context.ContextLoader initWebApplicationContext
    INFO: Root WebApplicationContext: initialization completed in 6212 ms
    Jun 2, 2010 1:31:32 PM com.google.apphosting.utils.jetty.JettyLogger info
    INFO: Started SelectChannelConnector@127.0.0.1:8888
    Jun 2, 2010 1:31:32 PM com.google.appengine.tools.development.DevAppServerImpl start
    INFO: The server is running at http://localhost:8888/
    Jun 2, 2010 1:32:21 PM com.google.apphosting.utils.jetty.JettyLogger warn
    WARNING: /
    java.lang.NullPointerException
    	at be.jrousseau.gwtsite.server.servlets.IndexServlet.doGet(IndexServlet.java:30)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:693)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:806)
    	at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
    	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166)
    	at com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:51)
    	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
    	at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43)
    	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
    	at com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:122)
    	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
    	at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388)
    	at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
    	at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
    	at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
    	at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)
    	at com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:70)
    	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
    	at com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:349)
    	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
    	at org.mortbay.jetty.Server.handle(Server.java:326)
    	at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
    	at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:923)
    	at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:547)
    	at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
    	at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
    	at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409)
    	at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    476
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 476
    Par défaut
    Montre nous IndexServlet et ton web.xml en entier.
    Il y a pas mal de pistes possibles.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    39
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 39
    Par défaut
    Merci pour ta réponse !

    IndexServlet :
    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
    43
    44
    45
    46
    47
    48
     
    package be.jrousseau.gwtsite.server.servlets;
     
    import java.io.IOException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.List;
    import java.util.Locale;
     
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
     
    import be.jrousseau.gwtsite.server.dao.interfaces.CategoriesDao;
    import be.jrousseau.gwtsite.server.dao.interfaces.IntrosDao;
    import be.jrousseau.gwtsite.server.models.Categories;
    import be.jrousseau.gwtsite.server.models.Intros;
     
    @SuppressWarnings("serial")
    public class IndexServlet extends HttpServlet {
    	private IntrosDao introsDao;
    	private CategoriesDao categoriesDao;
     
    	public void doGet(HttpServletRequest req, HttpServletResponse resp)
    			throws IOException, ServletException {
    		Date today = new Date();
    		SimpleDateFormat sdf = new SimpleDateFormat("EEEE dd/MM/yyyy", Locale.FRANCE);
    		String mydate = sdf.format(today);
    		mydate = mydate.substring(0,1).toUpperCase() + mydate.substring(1);
    		List<Intros> intros = this.introsDao.getByPage("Accueil");
    		List<Categories> categs = this.categoriesDao.getAll();
    		req.setAttribute("intros", intros);
    		req.setAttribute("today", mydate);
    		req.setAttribute("categories", categs);
    		this.getServletContext().getRequestDispatcher("/index.jsp")
    			.forward(req, resp);
    	}
     
    	public void setIntrosDao(IntrosDao introsDao) {
    		this.introsDao = introsDao;
    	}
     
    	public void setCategoriesDao(CategoriesDao categoriesDao) {
    		this.categoriesDao = categoriesDao;
    	}
     
    }
    web.xml :
    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
     
    <?xml version="1.0" encoding="utf-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
    	<!-- SPRING CONFIGURATION -->
    	<context-param>
    	  <param-name>contextConfigLocation</param-name>
    	  <param-value>/WEB-INF/applicationContext.xml</param-value>
    	</context-param>
    	<listener>
    	  <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    	</listener>
     
    	<!-- END SPRING CONFIGURATION -->
     
    	<servlet>
    		<servlet-name>Mygwtsite</servlet-name>
    		<servlet-class>be.jrousseau.gwtsite.server.servlets.IndexServlet</servlet-class>
    	</servlet>
    	<servlet-mapping>
    		<servlet-name>Mygwtsite</servlet-name>
    		<url-pattern>/</url-pattern>
    	</servlet-mapping>
     
    	<servlet>
    		<servlet-name>CV</servlet-name>
    		<servlet-class>be.jrousseau.gwtsite.server.servlets.CurriculumServlet</servlet-class>
    	</servlet>
    	<servlet-mapping>
    		<servlet-name>CV</servlet-name>
    		<url-pattern>/cv</url-pattern>
    	</servlet-mapping>
    	<servlet>
    		<servlet-name>Contact</servlet-name>
    		<servlet-class>be.jrousseau.gwtsite.server.servlets.ContactServlet</servlet-class>
    	</servlet>
    	<servlet-mapping>
    		<servlet-name>Contact</servlet-name>
    		<url-pattern>/contact</url-pattern>
    	</servlet-mapping>
     
    	<servlet>
    		<servlet-name>Administration</servlet-name>
    		<servlet-class>be.jrousseau.gwtsite.server.servlets.AdminServlet</servlet-class>
    	</servlet>
    	<servlet-mapping>
    		<servlet-name>Administration</servlet-name>
    		<url-pattern>/admin</url-pattern>
    	</servlet-mapping>
     
    	<servlet>
    		<servlet-name>AdminIntros</servlet-name>
    		<servlet-class>be.jrousseau.gwtsite.server.servlets.AdminIntrosServlet</servlet-class>
    	</servlet>
    	<servlet-mapping>
    		<servlet-name>AdminIntros</servlet-name>
    		<url-pattern>/admin/intros</url-pattern>
    	</servlet-mapping>
    	<servlet-mapping>
    		<servlet-name>AdminIntros</servlet-name>
    		<url-pattern>/admin/intros/*</url-pattern>
    	</servlet-mapping>
     
    	<servlet>
    		<servlet-name>AdminCompetences</servlet-name>
    		<servlet-class>be.jrousseau.gwtsite.server.servlets.AdminCompetencesServlet</servlet-class>
    	</servlet>
    	<servlet-mapping>
    		<servlet-name>AdminCompetences</servlet-name>
    		<url-pattern>/admin/competences</url-pattern>
    	</servlet-mapping>
    	<servlet-mapping>
    		<servlet-name>AdminCompetences</servlet-name>
    		<url-pattern>/admin/competences/*</url-pattern>
    	</servlet-mapping>
     
    	<servlet>
    		<servlet-name>AdminCategories</servlet-name>
    		<servlet-class>be.jrousseau.gwtsite.server.servlets.AdminCategoriesServlet</servlet-class>
    	</servlet>
    	<servlet-mapping>
    		<servlet-name>AdminCategories</servlet-name>
    		<url-pattern>/admin/categories</url-pattern>
    	</servlet-mapping>
    	<servlet-mapping>
    		<servlet-name>AdminCategories</servlet-name>
    		<url-pattern>/admin/categories/*</url-pattern>
    	</servlet-mapping>
     
    	<servlet>
    		<servlet-name>AdminFormations</servlet-name>
    		<servlet-class>be.jrousseau.gwtsite.server.servlets.AdminFormationsServlet</servlet-class>
    	</servlet>
    	<servlet-mapping>
    		<servlet-name>AdminFormations</servlet-name>
    		<url-pattern>/admin/formations</url-pattern>
    	</servlet-mapping>
    	<servlet-mapping>
    		<servlet-name>AdminFormations</servlet-name>
    		<url-pattern>/admin/formations/*</url-pattern>
    	</servlet-mapping>
     
    	<servlet>
    		<servlet-name>AdminExperiences</servlet-name>
    		<servlet-class>be.jrousseau.gwtsite.server.servlets.AdminExperiencesServlet</servlet-class>
    	</servlet>
    	<servlet-mapping>
    		<servlet-name>AdminExperiences</servlet-name>
    		<url-pattern>/admin/experiences</url-pattern>
    	</servlet-mapping>
    	<servlet-mapping>
    		<servlet-name>AdminExperiences</servlet-name>
    		<url-pattern>/admin/experiences/*</url-pattern>
    	</servlet-mapping>
     
    	<servlet>
    		<servlet-name>AdminProjects</servlet-name>
    		<servlet-class>be.jrousseau.gwtsite.server.servlets.AdminProjectsServlet</servlet-class>
    	</servlet>
    	<servlet-mapping>
    		<servlet-name>AdminProjects</servlet-name>
    		<url-pattern>/admin/projects</url-pattern>
    	</servlet-mapping>
    	<servlet-mapping>
    		<servlet-name>AdminProjects</servlet-name>
    		<url-pattern>/admin/projects/*</url-pattern>
    	</servlet-mapping>
     
    	<servlet>
    		<servlet-name>AdminLanguages</servlet-name>
    		<servlet-class>be.jrousseau.gwtsite.server.servlets.AdminLanguagesServlet</servlet-class>
    	</servlet>
    	<servlet-mapping>
    		<servlet-name>AdminLanguages</servlet-name>
    		<url-pattern>/admin/langues</url-pattern>
    	</servlet-mapping>
    	<servlet-mapping>
    		<servlet-name>AdminLanguages</servlet-name>
    		<url-pattern>/admin/langues/*</url-pattern>
    	</servlet-mapping>
     
    	<servlet>
    		<servlet-name>AdminLoisirs</servlet-name>
    		<servlet-class>be.jrousseau.gwtsite.server.servlets.AdminLoisirsServlet</servlet-class>
    	</servlet>
    	<servlet-mapping>
    		<servlet-name>AdminLoisirs</servlet-name>
    		<url-pattern>/admin/loisirs</url-pattern>
    	</servlet-mapping>
    	<servlet-mapping>
    		<servlet-name>AdminLoisirs</servlet-name>
    		<url-pattern>/admin/loisirs/*</url-pattern>
    	</servlet-mapping>
     
    	<servlet>
    		<servlet-name>AdminPersos</servlet-name>
    		<servlet-class>be.jrousseau.gwtsite.server.servlets.AdminPersosServlet</servlet-class>
    	</servlet>
    	<servlet-mapping>
    		<servlet-name>AdminPersos</servlet-name>
    		<url-pattern>/admin/persos</url-pattern>
    	</servlet-mapping>
    	<servlet-mapping>
    		<servlet-name>AdminPersos</servlet-name>
    		<url-pattern>/admin/persos/*</url-pattern>
    	</servlet-mapping>
     
    	<!--<security-constraint>
            <web-resource-collection>
                <url-pattern>/admin</url-pattern>
            </web-resource-collection>
            <auth-constraint>
                <role-name>admin</role-name>
            </auth-constraint>
        </security-constraint>
        <security-constraint>
            <web-resource-collection>
                <url-pattern>/admin/*</url-pattern>
            </web-resource-collection>
            <auth-constraint>
                <role-name>admin</role-name>
            </auth-constraint>
        </security-constraint>
     
    	--><welcome-file-list>
    		<welcome-file>index.jsp</welcome-file>
    	</welcome-file-list>
    </web-app>

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    476
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 476
    Par défaut
    Pas de souci

    L'injection du bean dao n'est pas le problème.
    Le souci c'est que tes servlets qui sont chargées par ton moteur de servlet, elles ne sont pas des beans spring.
    Aussi, lorsque tu déclares :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <bean id="AdminIntrosServlet" class="be.jrousseau.gwtsite.server.servlets.AdminIntrosServlet">
    		<property name="introsDao" ref="IntrosDao" />
    </bean>
    tu crées bien un bean AdminIntrosServlet mais ce n'est pas la même instance que celle qui répondra à la requête de ton client.

    T'as plusieurs techniques pour que ta servlet soit aussi un bean pour Spring.
    Dans ton cas, tu pourrais implémenter HttpRequestHandler par tes servlets.
    ex squelette:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public class IndexServlet implements HttpRequestHandler {
    ...
            @Override
    	public void handleRequest(HttpServletRequest request,
    			HttpServletResponse response) throws ServletException, IOException {
    ... // tu traites ici ta requête
    }
    ...
    }

    Je te laisse le soin de regarder en détail cette interface.


    La déclaration d'une servlet dans le web.xml se ferait ainsi dans ce cas :
    ex appliqué au squelette java précédent:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <servlet>
    	<servlet-name>IndexServlet</servlet-name>
    	<servlet-class> org.springframework.web.context.support.HttpRequestHandlerServlet</servlet-class>
    	</servlet>
    	<servlet-mapping>
    		<servlet-name>IndexServlet</servlet-name>
    		<url-pattern>/</url-pattern>
    	</servlet-mapping>
    J'ai pas fait la modification pour ne pas t'emmêler les pinceaux mais les beans sont des instances et non des classes.
    Aussi, leur nom devrait commencer par une minuscule.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    39
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 39
    Par défaut
    Un grand merci encore !

    Puisqu'il faut que je change mes servlets, je pense que je vais directement regarder du côté de Spring MVC que je comptais intégrer par la suite. Tant qu'à faire...

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    476
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 476
    Par défaut
    Pas de souci

    C'est marrant, c'est ce que je voulais te proposer
    Apres je me suis dit : Spring Mvc, Struts 2, Jsf... T'as l'embarras du choix :-)

    Bon Spring Mvc

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. NullPointerException sur bean DAO
    Par lekonquerant dans le forum Spring
    Réponses: 7
    Dernier message: 26/10/2014, 15h14
  2. NullPointerException sur un bean DAO
    Par lekonquerant dans le forum Spring
    Réponses: 2
    Dernier message: 24/10/2014, 18h05
  3. NullPointerException sur un RTPManager?
    Par innosang dans le forum Multimédia
    Réponses: 2
    Dernier message: 30/04/2007, 14h10
  4. Cours sur DAO
    Par dahmane2007 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 25/01/2007, 08h54

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