Bonjour
Je rencontre des problèmes avec une application web Spring que j'ai développé il y a quelques temps. Jusqu'à présent cette app était installée à la racine de mon Tomcat et était donc accessible par www.mondomaine.com:8080 .
Mais je dois intsaller une nouvelle application et cette façon de faire ne sera plus possible. J'ai donc réinstallé mon app et elle est maintenant accessible par www.mondomaine.com:8080/monApp
Mon problème est que quel que soit l'URL une erreur 404 est retournée. Je cherche donc à savoir ce qui manque dans ma configuration :
Mon web.xml
applicationContext
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 <web-app ...> <display-name>monApp</display-name> <context-param> <param-name>contextConfigLocation</param-name> <param-value> /WEB-INF/spring/applicationContext.xml /WEB-INF/spring/spring-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> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <servlet> <servlet-name>appServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>appServlet</servlet-name> <url-pattern>/monApp/*</url-pattern> </servlet-mapping> <error-page> <error-code>404</error-code> <location>/WEB-INF/views/errors/404.jsp</location> </error-page> </web-app>
servlet-context.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 <beans ...> <!-- Activates various annotations to be detected in bean classes --> <context:annotation-config/> <context:component-scan base-package="com.mondomaine.monapp"/> <mvc:annotation-driven/> <mvc:resources mapping="/resources/**" location="/resources/"/> <import resource="spring-scheduler.xml"/> <import resource="spring-data.xml"/> <util:properties id="reportMailProps" location="classpath:/spring/reportMail.properties"/> <!-- Mail service --> <bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl"> <property name="host" value="***"/> <property name="port" value="***"/> <property name="username" value="***"/> <property name="password" value="***"/> <property name="javaMailProperties"> <props> <prop key="mail.smtp.auth">true</prop> <prop key="mail.smtp.starttls.enable">false</prop> </props> </property> </bean> <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource" p:basename="messages"/> <bean id="velocityEngine" class="org.springframework.ui.velocity.VelocityEngineFactoryBean" p:resourceLoaderPath="classpath:/velocity/"> </bean> </beans>
spring-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 <?xml version="1.0" encoding="UTF-8"?> <beans ...> <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource" p:basename="messages"/> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/> <property name="prefix" value="/WEB-INF/views/"/> <property name="suffix" value=".jsp"/> </bean> </beans>
et mes contrôleurs ressemblent à ceci :
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 <?xml version="1.0" encoding="UTF-8"?> <beans ...> <sec:http pattern="/resources/**" security="none" /> <sec:http auto-config="true" use-expressions="true" disable-url-rewriting="false"> <sec:headers disabled="true"/> <sec:csrf disabled="false"/> <sec:access-denied-handler error-page="/403"/> <sec:form-login login-page="/login" default-target-url="/" login-processing-url="/j_spring_security_check" username-parameter="username" password-parameter="password"/> <sec:logout invalidate-session="true" logout-success-url="/login" logout-url="/logout"/> <sec:intercept-url pattern="/login/**" access="permitAll" /> <sec:intercept-url pattern="/logout/**" access="permitAll"/> <sec:intercept-url pattern="/users/add/**" access="hasRole('ROLE_PERM_ADD_USER')"/> <sec:intercept-url pattern="/users/edit/**" access="hasRole('ROLE_PERM_EDIT_USER')"/> <sec:intercept-url pattern="/users/delete/**" access="hasRole('ROLE_PERM_DELETE_USER')"/> <sec:intercept-url pattern="/users/**" access="hasRole('ROLE_PERM_VIEW_USERS_LIST')"/> <!--[...]--> <sec:intercept-url pattern="/" access="isAuthenticated()"/> <sec:intercept-url pattern="/**" access="denyAll"/>--> </sec:http> <bean id="passwordEncoder" class="org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder"> <constructor-arg name="strength" value="12"/> </bean> <bean id="customUserDetailsService" class="ch.pleiades.obs.visites.service.auth.CustomUserDetailsService" /> <sec:authentication-manager> <sec:authentication-provider user-service-ref="customUserDetailsService"> <sec:password-encoder ref="passwordEncoder" /> </sec:authentication-provider> </sec:authentication-manager> </beans>
Où ai-je commis une erreur ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 @Controller @RequestMapping("/users") public class UsersController { //... @RequestMapping(value = "", method = RequestMethod.GET) public String list(Model model) { return "users/list"; } @RequestMapping(value = "/add", method = RequestMethod.GET) public String add(Model model) { //... return "users/add"; } //... }
Partager