2013-08-20 2 views
0

Привет, ребята, я работаю с Spring 3.2.3, hibernate 4.2.2 и org.springframework.security 3.0.5. Прежде чем я начну работать с безопасностью весной, мой файл контекста был назван servlet-context.xml, и все работало нормально. Так как я начать использовать org.springframework.security 3.0.5, когда я пытаюсь запустить мое приложение, я получаю ошибку:Проблема с именем appServlet-servlet.xml

java.io.FileNotFoundException: Could not open ServletContext resource [/WEB-INF/appServlet-servlet.xml] 

Мой web.xml является:

<?xml version="1.0" encoding="UTF-8"?> 
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> 

<!-- Spring MVC --> 
<servlet> 
    <servlet-name>appServlet</servlet-name> 
    <servlet-class> 
       org.springframework.web.servlet.DispatcherServlet 
    </servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

<servlet-mapping> 
    <servlet-name>appServlet</servlet-name> 
    <url-pattern>/</url-pattern> 
</servlet-mapping> 


<listener> 
    <listener-class> 
      org.springframework.web.context.ContextLoaderListener 
    </listener-class> 
</listener> 

<context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value> 
     /WEB-INF/servlet-context.xml, 
     /WEB-INF/spring-security.xml 
    </param-value> 
</context-param> 

<!-- Spring Security --> 
<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> 

Обратите внимание, что я указываю свой сервлет-context.xml:

<context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value> 
     /WEB-INF/servlet-context.xml, 
     /WEB-INF/spring-security.xml 
    </param-value> 
</context-param> 

Если я оставлю свой web.xml так же, как это, и скопирую/вставьте содержимое моего сервлета-context.xml в новый файл appServlet-servlet.xml, все будет хорошо. Это запутывает меня, так как я сказал web.xml, что моим именем контекстного файла был servlet-context.xml. Я вынужден вызвать свой контекстный файл как appServlet-servlet.xml ??. Конечно, если я удалю servlet-context.xml и оставьте appServlet-servlet.xml, создавая спецификацию в web.xml, отлично работает.

Я просто хочу знать, обязательно ли вызывать мой контекстный файл как appServlet-servlet.xml, если я хочу использовать весеннюю безопасность в своем приложении.

ответ

2

Это не странно. Весна работает таким образом. Поскольку ваше имя DispatchServlet является appServlet, Spring автоматически пытается найти контекст сервлета с таким же именем, здесь «appServlet-servlet.xml».

Вот страница, которая может помочь: http://syntx.io/difference-between-loading-context-via-dispatcherservlet-and-contextloaderlistener/

+0

Но если это так, как это работает, почему, прежде чем я начал использовать пружинную безопасность я был в состоянии работать с моим «сервлетом-context.xml»?. – kiduxa

+0

О, теперь я понимаю лучше. Ваша ссылка была очень полезной. Прежде чем использовать весеннюю безопасность, в моем web.xml я использовал «WebApplicationContext». Вот почему он отлично работал. Спасибо большое @Julien :). – kiduxa

+0

Счастлив, что это помогло :) – Julien

Смежные вопросы