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 :

Problème variable avec @Autowired à null


Sujet :

Spring Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2013
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Novembre 2013
    Messages : 159
    Par défaut Problème variable avec @Autowired à null
    Bonjour, je rencontre un problème avec une fonction permettant l'authentification.

    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
     
    package main.webapp.rest.resources;
     
    import java.util.HashMap;
    import java.util.Map;
     
    import javax.ws.rs.FormParam;
    import javax.ws.rs.GET;
    import javax.ws.rs.POST;
    import javax.ws.rs.Path;
    import javax.ws.rs.Produces;
    import javax.ws.rs.WebApplicationException;
    import javax.ws.rs.core.MediaType;
     
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.beans.factory.annotation.Qualifier;
    import org.springframework.security.authentication.AuthenticationManager;
    import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
    import org.springframework.security.core.Authentication;
    import org.springframework.security.core.GrantedAuthority;
    import org.springframework.security.core.context.SecurityContextHolder;
    import org.springframework.security.core.userdetails.UserDetails;
    import org.springframework.security.core.userdetails.UserDetailsService;
    import org.springframework.stereotype.Component;
     
    import main.webapp.rest.TokenUtils;
    import main.webapp.transfer.TokenTransfer;
    import main.webapp.transfer.UserTransfer;
     
    @Component
    @Path("/user")
    public class UserResource {
     
    	@Autowired
    	private UserDetailsService userService;
     
    	@Autowired
    	@Qualifier("authenticationManager")
    	private AuthenticationManager authManager;
     
    	@GET
    	@Produces(MediaType.APPLICATION_JSON)
    	public UserTransfer getUser() {
    		Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
    		Object principal = authentication.getPrincipal();
    		if (principal instanceof String && ((String) principal).equals("anonymousUser")) {
    			throw new WebApplicationException(401);
    		}
    		UserDetails userDetails = (UserDetails) principal;
     
    		return new UserTransfer(userDetails.getUsername(), this.createRoleMap(userDetails));
    	}
     
    	/**
             * Authenticates a user and creates an authentication token.
             * 
             * @param username
             *            The name of the user.
             * @param password
             *            The password of the user.
             * @return A transfer containing the authentication token.
             */
    	@Path("authenticate")
    	@POST
    	@Produces(MediaType.APPLICATION_JSON)
    	public TokenTransfer authenticate(@FormParam("username") String username, @FormParam("password") String password) {
    		System.out.println("User : " + username + " , password : " + password);
    		UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(username,
    				password);
     
    		if(this.authManager.authenticate(authenticationToken) != null){
    			System.out.println("essai !!!");
    		}
     
    		Authentication authentication = this.authManager.authenticate(authenticationToken);
    		System.out.println("essai 3");
    		SecurityContextHolder.getContext().setAuthentication(authentication);
    		System.out.println("essai 4");
    		/*
    		 * Reload user as password of authentication principal will be null
    		 * after authorization and password is needed for token generation
    		 */
    		UserDetails userDetails = this.userService.loadUserByUsername(username);
     
    		System.out.println("essai 5");
     
    		return new TokenTransfer(TokenUtils.createToken(userDetails));
    	}
     
    	private Map<String, Boolean> createRoleMap(UserDetails userDetails) {
    		Map<String, Boolean> roles = new HashMap<String, Boolean>();
    		for (GrantedAuthority authority : userDetails.getAuthorities()) {
    			roles.put(authority.getAuthority(), Boolean.TRUE);
    		}
     
    		return roles;
    	}
     
    	public UserDetailsService getUserService() {
    		return userService;
    	}
     
    	public void setUserService(UserDetailsService userService) {
    		this.userService = userService;
    	}
     
    	public AuthenticationManager getAuthManager() {
    		return authManager;
    	}
     
    	public void setAuthManager(AuthenticationManager authManager) {
    		this.authManager = authManager;
    	}
     
    }
    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
    <beans xmlns="http://www.springframework.org/schema/beans"
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
    	xmlns:context="http://www.springframework.org/schema/context"
    	xmlns:jee="http://www.springframework.org/schema/jee" xmlns:util="http://www.springframework.org/schema/util"
    	xmlns:tx="http://www.springframework.org/schema/tx" xmlns:security="http://www.springframework.org/schema/security"
    	xsi:schemaLocation="
    			http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
    			http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd
    			http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-4.2.xsd
    			http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.2.xsd
    			http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.2.xsd
    			http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-4.0.xsd">
     
    	<context:annotation-config />
     
    	<bean id="entityManagerFactory"
    		class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    		<property name="persistenceUnitName" value="ubo.persistence" />
    		<property name="jpaVendorAdapter">
    			<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
    				<property name="generateDdl" value="true" />
    				<property name="showSql" value="true" />
    			</bean>
    		</property>
    	</bean>
     
    	<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
    		<property name="entityManagerFactory" ref="entityManagerFactory" />
    	</bean>
     
    	<bean id="animationDAO" class="main.webapp.dao.TbAnimationDAO"></bean>
    	<bean id="animationOptionDAO" class="main.webapp.dao.TbAnimationOptionDAO"></bean>
    	<bean id="optionDAO" class="main.webapp.dao.TbOptionDAO"></bean>
    	<bean id="reservationAnimationDAO" class="main.webapp.dao.TbReservationAnimationDAO"></bean>
    	<bean id="reservationDAO" class="main.webapp.dao.TbReservationDAO"></bean>
    	<bean id="roleDAO" class="main.webapp.dao.TbRoleDAO"></bean>
    	<bean id="typeAnimationDAO" class="main.webapp.dao.TbTypeAnimationDAO"></bean>
    	<bean id="userDao" class="main.webapp.dao.TbUserDAO"></bean>
     
    	<bean id="passwordEncoder"
    		class="org.springframework.security.crypto.password.StandardPasswordEncoder">
    		<constructor-arg value="ThisIsASecretSoChangeMe" />
    	</bean>
     
    	<bean id="dataBaseInitializer" class="main.webapp.dao.DataBaseInitializer"
    		init-method="initDataBase">
    		<constructor-arg ref="userDao" />
    		<constructor-arg ref="passwordEncoder" />
    	</bean>
     
    	<tx:annotation-driven transaction-manager="transactionManager" />
     
     
    	<context:component-scan base-package="main.webapp.rest" />
     
     
    	<bean id="objectMapper" class="org.codehaus.jackson.map.ObjectMapper" />
     
     
    	<security:authentication-manager id="authenticationManager">
    		<security:authentication-provider
    			user-service-ref="userDao">
    			<security:password-encoder ref="passwordEncoder"></security:password-encoder>
    		</security:authentication-provider>
    	</security:authentication-manager>
     
    	<security:http realm="Protected API" use-expressions="true"
    		auto-config="false" create-session="stateless" entry-point-ref="unauthorizedEntryPoint"
    		authentication-manager-ref="authenticationManager">
    		<security:custom-filter ref="authenticationTokenProcessingFilter"
    			position="FORM_LOGIN_FILTER" />
    		<security:intercept-url pattern="/rest/user/authenticate"
    			access="permitAll" />
    		<!-- <security:intercept-url method="GET" pattern="/rest/news/**" access="hasRole('user')" 
    			/> <security:intercept-url method="PUT" pattern="/rest/news/**" access="hasRole('admin')" 
    			/> <security:intercept-url method="POST" pattern="/rest/news/**" access="hasRole('admin')" 
    			/> <security:intercept-url method="DELETE" pattern="/rest/news/**" access="hasRole('admin')" 
    			/> -->
    	</security:http>
     
    	<bean id="unauthorizedEntryPoint" class="main.webapp.rest.UnauthorizedEntryPoint" />
     
    	<bean class="main.webapp.rest.AuthenticationTokenProcessingFilter"
    		id="authenticationTokenProcessingFilter">
    		<constructor-arg ref="userDao" />
    	</bean>
     
    </beans>
    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
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee" xmlns="http://xmlns.jcp.org/xml/ns/javaee"
    	xmlns:web="http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1">
     
    	<display-name>Brest2016</display-name>
     
    	<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>
     
    	<servlet>
    		<servlet-name>jersey-serlvet</servlet-name>
    		<servlet-class>
    			com.sun.jersey.spi.container.servlet.ServletContainer
    		</servlet-class>
    		<init-param>
    			<param-name>
    				com.sun.jersey.config.property.packages
    			</param-name>
    			<param-value>main.webapp.rest</param-value>
    		</init-param>
    		<load-on-startup>1</load-on-startup>
    	</servlet>
     
    	<servlet-mapping>
    		<servlet-name>jersey-serlvet</servlet-name>
    		<url-pattern>/rest/*</url-pattern>
    	</servlet-mapping>
     
    	<!-- Apply Spring Security Filter to all Requests <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> -->
    </web-app>
    Résultat suite à l'exécution :

    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
    POST on rest/user/authenticate failed with status 500
     
    User : a , password : a
    mars 22, 2016 9:56:49 PM com.sun.jersey.spi.container.ContainerResponse mapMappableContainerException
    GRAVE: The RuntimeException could not be mapped to a response, re-throwing to the HTTP container
    java.lang.NullPointerException
    	at main.webapp.rest.resources.UserResource.authenticate(UserResource.java:70)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    	at java.lang.reflect.Method.invoke(Unknown Source)
    	at com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60)
    	at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$TypeOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:185)
    	at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75)
    	at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:302)
    	at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
    	at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108)
    	at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
    	at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84)
    	at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1542)
    	at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1473)
    	at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1419)
    	at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1409)
    	at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:409)
    	at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:540)
    	at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:715)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)
    	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
    	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
    	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)
    	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
    	at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
    	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
    	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518)
    	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091)
    	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:673)
    	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1526)
    	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1482)
    	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    	at java.lang.Thread.run(Unknown Source)
     
    mars 22, 2016 9:56:49 PM org.apache.catalina.core.StandardWrapperValve invoke
    GRAVE: "Servlet.service()" pour la servlet jersey-serlvet a généré une exception
    java.lang.NullPointerException
    	at main.webapp.rest.resources.UserResource.authenticate(UserResource.java:70)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    	at java.lang.reflect.Method.invoke(Unknown Source)
    	at com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60)
    	at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$TypeOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:185)
    	at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75)
    	at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:302)
    	at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
    	at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108)
    	at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
    	at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84)
    	at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1542)
    	at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1473)
    	at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1419)
    	at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1409)
    	at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:409)
    	at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:540)
    	at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:715)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)
    	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
    	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
    	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)
    	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
    	at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
    	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
    	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518)
    	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091)
    	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:673)
    	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1526)
    	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1482)
    	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    	at java.lang.Thread.run(Unknown Source)
    Il s'agit bien des deux autowired qui sont à null. Je ne sais pas pourquoi celle ci est à null pourtant bien indiqué dans mon ApplicationContext

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Ta classe UserResource est chargée par jersey, pas par Spring, il n'y a donc aucune injection car Spring ne la vois jamais. Il existe des manières spécifiques à Spring pour créer des webservice avec l'injection spring.

    Ou tu passe à javaEE qui a ses propres services + injection CDI

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2013
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Novembre 2013
    Messages : 159
    Par défaut
    Pourtant je vois bien l'injection en utilisant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    	@PostConstruct
    	public void debugInjection() {
    		System.out.println("UserResource >> UserResource created");
    		System.out.println("UserResource >> " + this.toString());
    		System.out.println("UserResource >> userService: " + userService);
    		System.out.println("UserResource >> authManager: " + authManager);
     
    	}
    J'ai réussis à contourner le problème en modifiant le web.xml

    en lancant :


    TbUserDAO >> TbUserDAO created
    TbUserDAO >> main.webapp.dao.TbUserDAO@2f1c1fe5
    TbUserDAO >> class main.webapp.bean.TbUser
    TbUserDAO >> null
    UserResource >> UserResource created
    UserResource >> main.webapp.rest.resources.UserResource@7534ac58
    UserResource >> userService: main.webapp.dao.TbUserDAO@2f1c1fe5
    UserResource >> authManager: org.springframework.security.authentication.ProviderManager@4838deb5

    en essayant l'authentification:

    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
    mars 23, 2016 8:05:25 AM org.apache.catalina.core.StandardWrapperValve invoke
    GRAVE: "Servlet.service()" pour la servlet jersey-serlvet a généré une exception
    java.lang.NullPointerException
    	at main.webapp.dao.TbUserDAO.create(TbUserDAO.java:39)
    	at main.webapp.rest.resources.UserResource.initDatabase(UserResource.java:158)
    	at main.webapp.rest.resources.UserResource.authenticate(UserResource.java:85)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    	at java.lang.reflect.Method.invoke(Unknown Source)
    	at com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60)
    	at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$TypeOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:185)
    	at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75)
    	at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:302)
    	at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
    	at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108)
    	at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
    	at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84)
    	at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1542)
    	at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1473)
    	at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1419)
    	at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1409)
    	at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:409)
    	at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:540)
    	at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:715)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)
    	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
    	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
    	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)
    	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
    	at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
    	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
    	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518)
    	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091)
    	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:673)
    	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1526)
    	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1482)
    	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    	at java.lang.Thread.run(Unknown Source)

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2013
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Novembre 2013
    Messages : 159
    Par défaut
    Je ne vois pas pourquoi il appel TbUserDAO create

  5. #5
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    peut être parce que c'est ce que tu as écrit dans ton code à la ligne 158?

    at main.webapp.rest.resources.UserResource.initDatabase(UserResource.java:158)

  6. #6
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 963
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 963
    Par défaut
    Citation Envoyé par quentinb56 Voir le message
    Pourtant je vois bien l'injection en utilisant
    Vous avez bien une bean Spring injectée correctement - puisque c'est un @Component qui est dans le package concerné par le package-scan - mais Jersey créé une autre instance ignorée par Spring,
    vous pourriez vous en rendre compte en ajoutant à vos logs le "this" : vous verrez alors qu'il y a bien 2 instances différentes :
    celle pour laquelle le @PostContruct est invoqué par Spring et celle qui répond à la requête REST.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2013
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Novembre 2013
    Messages : 159
    Par défaut
    Si je comprends bien j'ai deux instances parallèles qui tournent une première pour Spring et une seconde pour jersey ? Les deux se lancent aux même moments et comment résoudre le problème ?

  8. #8
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 963
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 963
    Par défaut
    Citation Envoyé par quentinb56 Voir le message
    Si je comprends bien j'ai deux instances parallèles qui tournent une première pour Spring et une seconde pour jersey ? Les deux se lancent aux même moments et comment résoudre le problème ?
    Le scope par défaut de Spring est le singleton, pour JAX-RS c'est la requête.

    rajouter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    import org.springframework.context.annotation.Scope;
    
    @Scope("request")
    pourrait résoudre le problème

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 13/05/2013, 21h41
  2. [AJAX] Variable avec Ajax
    Par lau17 dans le forum AJAX
    Réponses: 9
    Dernier message: 03/01/2012, 11h16
  3. Réponses: 1
    Dernier message: 07/10/2011, 11h14
  4. [Toplink] Problème setParameter avec valeur null
    Par igloof dans le forum Persistance des données
    Réponses: 0
    Dernier message: 31/03/2009, 17h48
  5. Problème requette avec valeur NULL
    Par Destiny dans le forum Langage SQL
    Réponses: 3
    Dernier message: 21/05/2007, 08h35

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