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 :

Le context n'est pas chargé [Security]


Sujet :

Spring Java

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Novembre 2009
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 80
    Points : 74
    Points
    74
    Par défaut Le context n'est pas chargé
    Bonjour.
    Je créé une application JEE avec Struts2, Hibernate4, Spring3 et maven sous eclipse et base de données Oracle.
    Lorsque je n'intègre pas spring security, spring charge le context mais lorsque je l'intègre, il ne le charge pas.
    Il n'y pas de message d'erreurs mais lorsque je veux utiliser le service (users) dans l'action, je le trouve nul malgré que j'ai mis l'annotaion @Autowired avant le service.
    Pour info, je n'utilise pas ldap.
    Voici le fichier applicationContext-security.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
     
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
    	xmlns:sec="http://www.springframework.org/schema/security"
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xmlns:context="http://www.springframework.org/schema/context"
    	xmlns:tx="http://www.springframework.org/schema/tx"
    	xmlns:p="http://www.springframework.org/schema/p"
     
    	xsi:schemaLocation="
    	http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
    	http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security.xsd
    	http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd 
    	http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">
     
     
    	<sec:debug />
     
    	<sec:global-method-security pre-post-annotations="enabled" />
     
     
    	<sec:http pattern="/css/**" security="none"/> 
    	<sec:http pattern="/img/**" security="none"/>
    	<sec:http pattern="/js/**" security="none"/>
    	<sec:http pattern="/*login.jsp" security="none"/>
    	<sec:http pattern="/*loggedout.jsp" security="none"/>
     
    	<sec:http auto-config="true" use-expressions="true">
     
    		<sec:intercept-url pattern="/*" access="isAuthenticated()" />
    		<sec:intercept-url pattern="/user/*" access="hasRole('USER')" />
    		<sec:intercept-url pattern="/admin/*" access="hasRole('ADMIN')" />
     
    		<sec:form-login login-processing-url="/resources/j_spring_security_check"
    			login-page="/login.jsp"  authentication-failure-url="/login.jsp?login_error=t" default-target-url="/index" />
    		<sec:logout logout-url="/resources/j_spring_security_logout" logout-success-url="/login.jsp" />
     
    		<sec:session-management>
    			<sec:concurrency-control max-sessions="1" error-if-maximum-exceeded="true" />
    		</sec:session-management>
     
     
    	</sec:http>
     
     
     
    	<bean id="monUserDetailsService" class="fr.monpackage.dao.MonUserDetailsService"/>
     
    	<sec:authentication-manager alias="authenticationManager">
            <sec:authentication-provider user-service-ref="monUserDetailsService" />
        </sec:authentication-manager>
     
    </beans>
    voici le fichier 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
    16
    17
    18
    19
     
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xmlns:context="http://www.springframework.org/schema/context"
    	xmlns:aop="http://www.springframework.org/schema/aop"
    	xmlns:tx="http://www.springframework.org/schema/tx"
    	xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
    		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
    		http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
    		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
     
     
    <context:annotation-config/>
    <tx:annotation-driven proxy-target-class="true"/>
     
    <context:component-scan base-package="fr.monpackage.*"/>
     
    </beans>
    Injection du service dans l'action:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    @Autowired
    private UsersService usersService = null;
    Et dans la classe du service, j'ai ai mis aussi l'annotation comme suit avant la déclaration de la classe:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    @Service("UsersService")
    @Transactional
    public class UsersServiceImp implements UsersService{...}
    Je n'ai pas de message d'erreur avant d'arriver à la ligne d'appel du service qui génère une exception du type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java.lang.NullPointerException
    .
    usersService est toujours nul.
    Merci par avance pour toute aide de votre part.

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    @Autowired
    private UsersService usersService = null;
    Tu ne dois pas l'initialiser avec null.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    @Autowired
    private UsersService usersService;
    A+.

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Novembre 2009
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 80
    Points : 74
    Points
    74
    Par défaut
    Bonjour Andry.
    Merci d'avoir répondu.
    En fait, j'avais déjà testé sans l'initialisation par null et ça n'a pas marché.
    userService est toujours null.
    Pour info, j'utilise la version 3.2.4

    Merci par avance.

    Cdlt

  4. #4
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Tu peux montrer la classe UsersServiceImp et la classe dans laquelle tu as le NullPointerException, et l'erreur en complet.

    A+.

  5. #5
    Membre régulier
    Homme Profil pro
    Inscrit en
    Novembre 2009
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 80
    Points : 74
    Points
    74
    Par défaut
    Merci bien.
    Voici l'erreur en complet:
    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
    java.lang.NullPointerException
    	at fr.monpackage.MonAction.selectMenu(MonAction.java:115)
    	at fr.monpackage.MonAction$$FastClassByCGLIB$$5018f645.invoke(<generated>)
    	at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
    	at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:698)
    	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
    	at org.springframework.security.access.intercept.aopalliance.MethodSecurityInterceptor.invoke(MethodSecurityInterceptor.java:64)
    	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
    	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:631)
    	at fr.monpackage.MonAction$$EnhancerByCGLIB$$2bfc94bb.selectMenu(<generated>)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    	at java.lang.reflect.Method.invoke(Method.java:606)
    	at com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:450)
    	at com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:289)
    	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:252)
    	at org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:256)
    	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
    	at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:167)
    	at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
    	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
    	at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:265)
    	at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
    	at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
    	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
    	at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:138)
    	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
    	at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:239)
    	at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
    	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
    	at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:239)
    	at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
    	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
    	at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:191)
    	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
    	at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:73)
    	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
    	at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:91)
    	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
    	at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:252)
    	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
    	at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100)
    	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
    	at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141)
    	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
    	at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:145)
    	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
    	at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:171)
    	at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
    	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
    	at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:161)
    	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
    	at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
    	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
    	at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:193)
    	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
    	at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:189)
    	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
    	at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:54)
    	at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:563)
    	at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
    	at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:99)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
    	at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:118)
    	at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:84)
    	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
    	at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)
    	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
    	at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:103)
    	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
    	at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:113)
    	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
    	at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:154)
    	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
    	at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:45)
    	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
    	at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.java:150)
    	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
    	at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:199)
    	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
    	at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:110)
    	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
    	at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:50)
    	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
    	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
    	at org.springframework.security.web.session.ConcurrentSessionFilter.doFilter(ConcurrentSessionFilter.java:125)
    	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
    	at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87)
    	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
    	at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:192)
    	at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:160)
    	at org.springframework.security.web.debug.DebugFilter.invokeWithWrappedRequest(DebugFilter.java:70)
    	at org.springframework.security.web.debug.DebugFilter.doFilter(DebugFilter.java:59)
    	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:343)
    	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:260)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
    	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
    	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
    	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
    	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
    	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
    	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
    	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040)
    	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
    	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
    	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    	at java.lang.Thread.run(Thread.java:744)
    Voici la classe d'action:
    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
    package fr.monpackage.web;
     
    import java.util.Collection;
    import java.util.Date;
    import java.util.GregorianCalendar;
    import java.util.Iterator;
    import java.util.Map;
     
    import org.apache.struts2.convention.annotation.Action;
    import org.apache.struts2.convention.annotation.Namespace;
    import org.apache.struts2.convention.annotation.Result;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.security.access.prepost.PreAuthorize;
    import org.springframework.security.core.Authentication;
    import org.springframework.security.core.context.SecurityContextHolder;
    import org.springframework.stereotype.Component;
     
    import fr.monpackage.domain.Users;
    import fr.monpackage.metier.UsersService;
    import fr.monpackage.metier.impl.FonctionService;
    import com.opensymphony.xwork2.ActionContext;
    import com.opensymphony.xwork2.ActionSupport;
    import com.opensymphony.xwork2.ModelDriven;
     
     
    @SuppressWarnings("serial")
    @Component
    @Namespace("/")
    public class WelcomeAction extends ActionSupport implements ModelDriven<Users> {
     
     
    	@Autowired
    	private UsersService usersService;
     
    	@Autowired
    	private FonctionService fonctionService;
     
    	private String username;
    	private Date myDate;
     
    	private String roleDev;
    	private String admin;
     
    	Users user = new Users();
     
     
     
     
     
     
     
     
    	public String getUsername() {
    		return username;
    	}
     
    	public void setUsername(String username) {
    		this.username = username;
    	}
     
    	public String getRoleDev() {
    		return roleDev;
    	}
     
    	public void setRoleDev(String roleDev) {
    		this.roleDev = roleDev;
    	}
     
    	public String getAdmin() {
    		return admin;
    	}
     
    	public void setAdmin(String admin) {
    		this.admin = admin;
    	}
     
    	public Date getMyDate() {
    		return myDate;
    	}
     
    	public void setMyDate(Date myDate) {
    		this.myDate = myDate;
    	}
     
    	@Action(value = "index", results = { @Result(name = SUCCESS, location = "index.jsp") })
    	public String execute() {
     
    		Authentication auth = SecurityContextHolder.getContext().getAuthentication();
    	    String name = auth.getName();
    		ActionContext.getContext().getSession();
    		System.out.println("name : " + name);
    		return SUCCESS;
    	}
     
    	@Action(value = "login", results = { @Result(name = SUCCESS, location = "login.jsp") })
    	public String login() {
    		Authentication auth = SecurityContextHolder.getContext().getAuthentication();
    		ActionContext.getContext().getSession();
    		return SUCCESS;
    	}
     
     
    	@Override
    	public Users getModel() {
    		return user;
    	}	
     
     
     
     
     
    	@PreAuthorize(value="hasAnyRole('ROLE_DEV', 'ADMIN')")
    	@Action(value = "selectMenu", results = { @Result(name = SUCCESS, location = "search.jsp"), @Result(name=INPUT, location = "index.jsp")})
    	public String selectMenu() {
    		System.out.println(fonctionService.findAll().size());
    		Authentication auth = SecurityContextHolder.getContext().getAuthentication();
    	    String name = auth.getName();
    	    Collection collection = auth.getAuthorities();
    	    for (Iterator iterator = collection.iterator(); iterator.hasNext();) {
    			Object object = (Object) iterator.next();
    			System.out.println("AUTHORISSATION--->object = "+object);
    		}
     
    		Map<String, Object> session = ActionContext.getContext().getSession();
    		if(session.get("roleDev") != null){			
    			roleDev = "true";
    		}else if(session.get("validateur") != null){	
    			validateur = "true";
    		}
     
    		String langue = ActionContext.getContext().getLocale().getLanguage();
    		System.out.println("ActionContext.getContext().getApplication().values()-->langue = "+langue);
     
     
    		myDate = GregorianCalendar.getInstance().getTime();
    		System.out.println("@PreAuthorize-->name : " + name);
    		System.out.println("@PreAuthorize-->username : " + username);
    		System.out.println("@PreAuthorize-->roleDev : " + roleDev);
    		System.out.println("@PreAuthorize-->admin : " + admin);
     
    		if (roleDev != null && roleDev.equals("true"))
    			session.put("roleDev", true);
    		else if (admin != null && admin.equals("true"))
    			session.put("admin", true);
     
     
    		System.out.println(usersService);
    		Users user = usersService.findUsersesByUserNameEquals(username);
    		session.put("nomFamille", user.getNom());
    		session.put("prenom", user.getPrenom());
     
    		return SUCCESS;
    	}
    }
    Voici la classe UsersServiceImpl:
    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
    package fr.monpackage.metier.impl;
     
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.beans.factory.annotation.Configurable;
    import org.springframework.stereotype.Service;
    import org.springframework.transaction.annotation.Transactional;
     
    import fr.monpackage.dao.UsersDAO;
    import fr.monpackage.domain.Users;
    import fr.monpackage.metier.UsersService;
     
     
    @Service("UsersService")
    @Transactional
    public class UsersServiceImpl implements UsersService {
     
    	@Autowired
    	private UsersDAO usersDAO;
     
     
     
    	@Override
    	public Users getById(int id) {
    		// TODO Auto-generated method stub
    		return null;
    	}
     
    	@Override
    	public void saveOrUpdate(Users users) {
    		// TODO Auto-generated method stub
    	}
     
     
    	@Override
    	public Users findUsersesByUserNameEquals(String userName) {
    		return usersDAO.findUsersesByUserNameEquals(userName);
    	}
     
    }

  6. #6
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Si les numéros de lignes sur le code posté est le même et que les System.out.println n'affiche encore rien, c'est à cette ligne que tu as le NullPointerException:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println(fonctionService.findAll().size());
    donc, soit c'est fonctionService qui est null, soit la méthode findAll retourne un null.
    Sinon,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println(usersService);
    affiche bien un null?

    A+.

  7. #7
    Membre régulier
    Homme Profil pro
    Inscrit en
    Novembre 2009
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 80
    Points : 74
    Points
    74
    Par défaut
    Merci.

    En fait, etsont nuls.
    Si je commente
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    applicationContext-security
    dans leils ne sont pas nuls.
    Voilà.

    Merci bien.

  8. #8
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Et pourquoi tu ne nous l'as pas dit depuis le début?
    Doit on aussi demander comment il est le web.xml?

  9. #9
    Membre régulier
    Homme Profil pro
    Inscrit en
    Novembre 2009
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 80
    Points : 74
    Points
    74
    Par défaut
    Si, je l'ai dit plus haut, tout au début du message:
    Lorsque je n'intègre pas spring security, spring charge le context mais lorsque je l'intègre, il ne le charge pas.
    Voici le 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
    <?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"
    	id="WebApp_ID" version="2.5">
    	<display-name>monApplication</display-name>
     
    	<context-param>
    	        <param-name>contextConfigLocation</param-name>
    	        <param-value>
    	        	classpath:applicationContext.xml
    	        	classpath:applicationContext-dao.xml
    	        	classpath:applicationContext-security.xml
    	        </param-value>
    	</context-param>
     
     	<filter>
    	  <filter-name>springSecurityFilterChain</filter-name>
    	  <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
    	</filter>
     
     	<filter-mapping>
    	  <filter-name>springSecurityFilterChain</filter-name>
    	  <url-pattern>/*</url-pattern>
    	</filter-mapping>
     
    	<listener>
    		<display-name>Spring Web Context Loader Listener</display-name>
    		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    	</listener>
     
    	<listener>
    		<listener-class>org.springframework.security.web.session.HttpSessionEventPublisher</listener-class>
    	</listener>
     
    	<filter-mapping>
    		<filter-name>Hibernate Session In View Filter</filter-name>
    		<url-pattern>/*</url-pattern>
    	</filter-mapping>
     
    	<filter>
    		<filter-name>struts2</filter-name>
    		<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    	</filter>
     
    	<filter-mapping>
    		<filter-name>struts2</filter-name>
    		<url-pattern>/*</url-pattern>
    	</filter-mapping>
     
    	<servlet>
    		<servlet-name>jspSupportServlet</servlet-name>
    		<servlet-class>org.apache.struts2.views.JspSupportServlet</servlet-class>
    		<load-on-startup>5</load-on-startup>
    	</servlet>
     
      	<welcome-file-list>
    		<welcome-file>index.jsp</welcome-file>
    	</welcome-file-list>
     
    	<session-config>
    		<session-timeout>60</session-timeout>
    	</session-config>
     
    </web-app>

  10. #10
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Ajoute
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <import resource="classpath:applicationContext.xml" />
    <import resource="classpath:classpath:applicationContext-dao.xml" />
    dans applicationContext-security.xml.

    A+.

  11. #11
    Membre régulier
    Homme Profil pro
    Inscrit en
    Novembre 2009
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 80
    Points : 74
    Points
    74
    Par défaut
    Bonjour.

    fonctionService
    et
    usersService
    sont toujours nuls même après avoir importé les deux fichiers xml dans applicationContext-security.xml.

    Merci encore.
    Cdlt.

  12. #12
    Membre régulier
    Homme Profil pro
    Inscrit en
    Novembre 2009
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 80
    Points : 74
    Points
    74
    Par défaut
    En fait, il fallait absolument setter les deux services pour qu'ils ne soient pas nuls. Ceci dit que le context avait été bien chargé mais sans setters, les deux services demeurent nuls contrairement aux versions précédentes où on n'avait pas besoin de setters.
    http://docs.spring.io/spring/docs/3....red-annotation

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

Discussions similaires

  1. [Tomcat - Datasource] Le Nom jdbc n'est pas lié à ce Contexte
    Par xfacq dans le forum Tomcat et TomEE
    Réponses: 17
    Dernier message: 31/10/2012, 17h47
  2. Quand mon site n'est pas chargé depuis le HTML
    Par Gregi dans le forum Intégration
    Réponses: 0
    Dernier message: 02/01/2010, 22h43
  3. 'Context' n'est pas un membre de ..
    Par spengler dans le forum ASP.NET
    Réponses: 6
    Dernier message: 19/11/2007, 15h12
  4. [MySQL] MySQL n'est pas chargé par php
    Par elvan49 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 23/11/2006, 16h14
  5. [JBoss] AppletBrowser n'est pas chargé
    Par mesmoh2005 dans le forum JBuilder
    Réponses: 1
    Dernier message: 15/02/2005, 16h35

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